From 8fa413fef05ceaf4e811d2c564e766431c1d6701 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 11 Mar 2024 14:45:34 -0400 Subject: [PATCH] zink: set the sparse format usage flags directly based on queried props this should yield more consistent results and avoid weird cases where various formats are queried for things they don't support and won't use Fixes: 9a412c10b7a ("zink: set all usage flags when querying sparse features") Part-of: --- src/gallium/drivers/zink/zink_screen.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 4e19d5e2cc4..48462d7dc8e 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -2642,9 +2642,11 @@ zink_get_sparse_texture_virtual_page_size(struct pipe_screen *pscreen, default: return 0; } - VkImageUsageFlags flags = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | - VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; - flags |= is_zs ? VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT : VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + + VkImageUsageFlags use_flags = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_STORAGE_BIT; + use_flags |= is_zs ? VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT : VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + VkImageUsageFlags flags = screen->format_props[pformat].optimalTilingFeatures & use_flags; VkSparseImageFormatProperties props[4]; //planar? unsigned prop_count = ARRAY_SIZE(props); VKSCR(GetPhysicalDeviceSparseImageFormatProperties)(screen->pdev, format, type,