From c4e33a4ed76774492c1549727987212598e79474 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 16 Jun 2021 02:29:45 -0700 Subject: [PATCH] zink: do not check buffer-format for usage-bits Buffers are created without a format in Vulkan, and we always pass in R8_UNORM for them in Gallium. It's the view-formats we should have checked, if anything. But that's orthogonal to this. We shoudn't keep checking R8_UNORM capabilities for buffers, all it's going to do is trigger asserts. Fixes: 00dc0036b ("zink: flatten out buffer creation usage flags codepath") Reviewed-By: Mike Blumenkrantz Part-of: (cherry picked from commit a8fc38b276fcdcf3c5f3d3ea0351843c7e8e38c3) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_resource.c | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d91f42a8320..4127c762e6b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1012,7 +1012,7 @@ "description": "zink: do not check buffer-format for usage-bits", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "00dc0036bb6d0c6de1ec3dc395e1d9e63d05ed83" }, diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 50f765f3b5e..38e4c9b54e2 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -226,21 +226,16 @@ create_bci(struct zink_screen *screen, const struct pipe_resource *templ, unsign VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT; - VkFormatProperties props = screen->format_props[templ->format]; - bci.usage |= VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT; - if (props.bufferFeatures & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT) - bci.usage |= VK_BUFFER_USAGE_VERTEX_BUFFER_BIT; - if (bind & PIPE_BIND_SHADER_IMAGE) { - assert(props.bufferFeatures & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT); + if (bind & PIPE_BIND_SHADER_IMAGE) bci.usage |= VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT; - } return bci; }