mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
vulkan: Add vk_expand_(dst|src)_access_flags2
Those helpers do not filter out dead access bits to keep synchronization conservative. Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29051>
This commit is contained in:
parent
7b3cdacf7f
commit
b0fa138c86
2 changed files with 38 additions and 16 deletions
|
|
@ -31,6 +31,34 @@
|
|||
#include "vk_util.h"
|
||||
#include "../wsi/wsi_common.h"
|
||||
|
||||
VkAccessFlags2
|
||||
vk_expand_src_access_flags2(VkPipelineStageFlags2 stages,
|
||||
VkAccessFlags2 access)
|
||||
{
|
||||
if (access & VK_ACCESS_2_MEMORY_WRITE_BIT)
|
||||
access |= vk_write_access2_for_pipeline_stage_flags2(stages);;
|
||||
|
||||
if (access & VK_ACCESS_2_SHADER_WRITE_BIT)
|
||||
access |= VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT;
|
||||
|
||||
return access;
|
||||
}
|
||||
|
||||
VkAccessFlags2
|
||||
vk_expand_dst_access_flags2(VkPipelineStageFlags2 stages,
|
||||
VkAccessFlags2 access)
|
||||
{
|
||||
if (access & VK_ACCESS_2_MEMORY_READ_BIT)
|
||||
access |= vk_read_access2_for_pipeline_stage_flags2(stages);
|
||||
|
||||
if (access & VK_ACCESS_2_SHADER_READ_BIT)
|
||||
access |= VK_ACCESS_2_SHADER_SAMPLED_READ_BIT |
|
||||
VK_ACCESS_2_SHADER_STORAGE_READ_BIT |
|
||||
VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR;
|
||||
|
||||
return access;
|
||||
}
|
||||
|
||||
VkAccessFlags2
|
||||
vk_filter_src_access_flags2(VkPipelineStageFlags2 stages,
|
||||
VkAccessFlags2 access)
|
||||
|
|
@ -38,14 +66,8 @@ vk_filter_src_access_flags2(VkPipelineStageFlags2 stages,
|
|||
const VkPipelineStageFlags2 all_write_access =
|
||||
vk_write_access2_for_pipeline_stage_flags2(stages);
|
||||
|
||||
if (access & VK_ACCESS_2_MEMORY_WRITE_BIT)
|
||||
access |= all_write_access;
|
||||
|
||||
if (access & VK_ACCESS_2_SHADER_WRITE_BIT)
|
||||
access |= VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT;
|
||||
|
||||
/* We only care about write access in src flags */
|
||||
return access & all_write_access;
|
||||
return vk_expand_src_access_flags2(stages, access) & all_write_access;
|
||||
}
|
||||
|
||||
VkAccessFlags2
|
||||
|
|
@ -55,16 +77,8 @@ vk_filter_dst_access_flags2(VkPipelineStageFlags2 stages,
|
|||
const VkPipelineStageFlags2 all_read_access =
|
||||
vk_read_access2_for_pipeline_stage_flags2(stages);
|
||||
|
||||
if (access & VK_ACCESS_2_MEMORY_READ_BIT)
|
||||
access |= all_read_access;
|
||||
|
||||
if (access & VK_ACCESS_2_SHADER_READ_BIT)
|
||||
access |= VK_ACCESS_2_SHADER_SAMPLED_READ_BIT |
|
||||
VK_ACCESS_2_SHADER_STORAGE_READ_BIT |
|
||||
VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR;
|
||||
|
||||
/* We only care about read access in dst flags */
|
||||
return access & all_read_access;
|
||||
return vk_expand_dst_access_flags2(stages, access) & all_read_access;
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
|
|
|
|||
|
|
@ -94,6 +94,14 @@ vk_read_access2_for_pipeline_stage_flags2(VkPipelineStageFlags2 stages);
|
|||
VkAccessFlags2
|
||||
vk_write_access2_for_pipeline_stage_flags2(VkPipelineStageFlags2 stages);
|
||||
|
||||
VkAccessFlags2
|
||||
vk_expand_src_access_flags2(VkPipelineStageFlags2 stages,
|
||||
VkAccessFlags2 access);
|
||||
|
||||
VkAccessFlags2
|
||||
vk_expand_dst_access_flags2(VkPipelineStageFlags2 stages,
|
||||
VkAccessFlags2 access);
|
||||
|
||||
VkAccessFlags2
|
||||
vk_filter_src_access_flags2(VkPipelineStageFlags2 stages,
|
||||
VkAccessFlags2 access);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue