From 97be761f927fdb0235cb9709f0d99738000f3d84 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 12 Nov 2024 15:23:16 -0800 Subject: [PATCH] vulkan: include host write in expanded dst access flags From the perspective of the gpu, host read or host write has the same implication (gpu cache flush) in the dst access flags. We should include host write in the dst access flags. Part-of: --- src/vulkan/runtime/vk_synchronization.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/vulkan/runtime/vk_synchronization.c b/src/vulkan/runtime/vk_synchronization.c index 7af93a45617..5ec91ee7054 100644 --- a/src/vulkan/runtime/vk_synchronization.c +++ b/src/vulkan/runtime/vk_synchronization.c @@ -51,6 +51,12 @@ vk_expand_dst_access_flags2(VkPipelineStageFlags2 stages, if (access & VK_ACCESS_2_MEMORY_READ_BIT) access |= vk_read_access2_for_pipeline_stage_flags2(stages); + /* expand VK_ACCESS_2_MEMORY_WRITE_BIT for VK_ACCESS_2_HOST_WRITE_BIT */ + if (access & VK_ACCESS_2_MEMORY_WRITE_BIT) { + access |= vk_write_access2_for_pipeline_stage_flags2(stages) & + VK_ACCESS_2_HOST_WRITE_BIT; + } + if (access & VK_ACCESS_2_SHADER_READ_BIT) access |= VK_ACCESS_2_SHADER_SAMPLED_READ_BIT | VK_ACCESS_2_SHADER_STORAGE_READ_BIT | @@ -77,8 +83,9 @@ vk_filter_dst_access_flags2(VkPipelineStageFlags2 stages, const VkAccessFlags2 all_read_access = vk_read_access2_for_pipeline_stage_flags2(stages); - /* We only care about read access in dst flags */ - return vk_expand_dst_access_flags2(stages, access) & all_read_access; + /* We only care about read access (plus host write) in dst flags */ + return vk_expand_dst_access_flags2(stages, access) & + (all_read_access | VK_ACCESS_2_HOST_WRITE_BIT); } VKAPI_ATTR void VKAPI_CALL