From 93e84940072fcadb1a6fe271e21325a399066283 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 6 May 2021 09:53:37 -0400 Subject: [PATCH] zink: try for better buffer allocation heaps Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_resource.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 8c4ffe3..28c0ddb 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -420,10 +420,14 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t } vkGetBufferMemoryRequirements(screen->dev, obj->buffer, &reqs); - if (templ->flags & PIPE_RESOURCE_FLAG_SPARSE) + if (templ->usage == PIPE_USAGE_STAGING) + flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT; + else if (templ->usage == PIPE_USAGE_STREAM) + flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT; + else if (templ->usage == PIPE_USAGE_IMMUTABLE) flags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; else - flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT; + flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; obj->is_buffer = true; obj->transfer_dst = true; } else { -- 2.7.4