From d4e24936390a38366f7ebf3950ce819253f8a148 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 28 Jan 2021 16:32:45 -0500 Subject: [PATCH] zink: avoid cached memory allocations when not requested don't rely on driver orderings to not pick this Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_resource.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 270567691e6..b2bd1fbb3b1 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -172,14 +172,20 @@ get_memory_type_index(struct zink_screen *screen, const VkMemoryRequirements *reqs, VkMemoryPropertyFlags props) { + int32_t idx = -1; for (uint32_t i = 0u; i < VK_MAX_MEMORY_TYPES; i++) { if (((reqs->memoryTypeBits >> i) & 1) == 1) { if ((screen->info.mem_props.memoryTypes[i].propertyFlags & props) == props) { - return i; - break; + if (!(props & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) && + screen->info.mem_props.memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) { + idx = i; + } else + return i; } } } + if (idx >= 0) + return idx; unreachable("Unsupported memory-type"); return 0;