From 67e82fd1f2c334da2e888553967ebae04c08146a Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 2 Nov 2022 14:20:29 +0100 Subject: [PATCH] v3dv: always check VK_ACCESS_2_MEMORY_READ_BIT for read accesses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: a981ac053964 ('v3dv: skip binning sync if binning shaders don't access external resources') Reviewed-by: Alejandro PiƱeiro Reviewed-by: Eric Engestrom Part-of: --- src/broadcom/vulkan/v3dv_cmd_buffer.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c index e08481971e0..5158f5df33a 100644 --- a/src/broadcom/vulkan/v3dv_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c @@ -2661,15 +2661,20 @@ cmd_buffer_binning_sync_required(struct v3dv_cmd_buffer *cmd_buffer, cmd_buffer->state.barrier.bcl_buffer_access; if (buffer_access) { /* Index buffer read */ - if (indexed && (buffer_access & VK_ACCESS_2_INDEX_READ_BIT)) + if (indexed && (buffer_access & (VK_ACCESS_2_INDEX_READ_BIT | + VK_ACCESS_2_MEMORY_READ_BIT))) { return true; + } /* Indirect buffer read */ - if (indirect && (buffer_access & VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT)) + if (indirect && (buffer_access & (VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT | + VK_ACCESS_2_MEMORY_READ_BIT))) { return true; + } /* Attribute read */ - if (buffer_access & VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT) { + if (buffer_access & (VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT | + VK_ACCESS_2_MEMORY_READ_BIT)) { const struct v3d_vs_prog_data *prog_data = pipeline->shared_data->variants[BROADCOM_SHADER_VERTEX_BIN]->prog_data.vs; @@ -2708,7 +2713,8 @@ cmd_buffer_binning_sync_required(struct v3dv_cmd_buffer *cmd_buffer, } /* Texel Buffer read */ - if (buffer_access & (VK_ACCESS_2_SHADER_SAMPLED_READ_BIT)) { + if (buffer_access & (VK_ACCESS_2_SHADER_SAMPLED_READ_BIT | + VK_ACCESS_2_MEMORY_READ_BIT)) { if (vs_bin_maps->texture_map.num_desc > 0) return true;