vulkan: Add helpers for access flags

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26407>
This commit is contained in:
Faith Ekstrand 2023-11-29 14:24:55 -06:00 committed by Marge Bot
parent 44add595af
commit 00e88584af
2 changed files with 44 additions and 0 deletions

View file

@ -31,6 +31,42 @@
#include "vk_util.h"
#include "../wsi/wsi_common.h"
VkAccessFlags2
vk_filter_src_access_flags2(VkPipelineStageFlags2 stages,
VkAccessFlags2 access)
{
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;
}
VkAccessFlags2
vk_filter_dst_access_flags2(VkPipelineStageFlags2 stages,
VkAccessFlags2 access)
{
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;
}
VKAPI_ATTR void VKAPI_CALL
vk_common_CmdWriteTimestamp(
VkCommandBuffer commandBuffer,

View file

@ -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_filter_src_access_flags2(VkPipelineStageFlags2 stages,
VkAccessFlags2 access);
VkAccessFlags2
vk_filter_dst_access_flags2(VkPipelineStageFlags2 stages,
VkAccessFlags2 access);
#ifdef __cplusplus
}
#endif