blob: 171fa832ae277450a54ba4fc50408055fd6f3fc1 [file] [log] [blame]
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
// See helper_file_generator.py for modifications
/***************************************************************************
*
* Copyright (c) 2015-2021 The Khronos Group Inc.
* Copyright (c) 2015-2021 Valve Corporation
* Copyright (c) 2015-2021 LunarG, Inc.
* Copyright (c) 2015-2021 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Author: Mark Lobodzinski <mark@lunarg.com>
* Author: Courtney Goeltzenleuchter <courtneygo@google.com>
* Author: Tobin Ehlis <tobine@google.com>
* Author: Chris Forbes <chrisforbes@google.com>
* Author: John Zulauf<jzulauf@lunarg.com>
*
****************************************************************************/
#include "synchronization_validation_types.h"
// clang-format off
// Unique bit for each stage/access combination
// Map of the StageAccessIndices from the StageAccess Bit
const layer_data::unordered_map<SyncStageAccessFlags, SyncStageAccessIndex> syncStageAccessIndexByStageAccessBit = {
{ SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT, SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ },
{ SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT },
{ SYNC_INDEX_INPUT_INDEX_READ_BIT, SYNC_INDEX_INPUT_INDEX_READ },
{ SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ },
{ SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ },
{ SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ },
{ SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT, SYNC_VERTEX_SHADER_SHADER_STORAGE_READ },
{ SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE },
{ SYNC_VERTEX_SHADER_UNIFORM_READ_BIT, SYNC_VERTEX_SHADER_UNIFORM_READ },
{ SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ },
{ SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ },
{ SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ },
{ SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE },
{ SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ },
{ SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ },
{ SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ },
{ SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ },
{ SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE },
{ SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ },
{ SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ },
{ SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ },
{ SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ },
{ SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE },
{ SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT, SYNC_GEOMETRY_SHADER_UNIFORM_READ },
{ SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT },
{ SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT },
{ SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT },
{ SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT },
{ SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT, SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ },
{ SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT, SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ },
{ SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT, SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ },
{ SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT, SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE },
{ SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT, SYNC_TASK_SHADER_NV_UNIFORM_READ },
{ SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT, SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ },
{ SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT, SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ },
{ SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT, SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ },
{ SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT, SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE },
{ SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT, SYNC_MESH_SHADER_NV_UNIFORM_READ },
{ SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ },
{ SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
{ SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE },
{ SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ },
{ SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT, SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ },
{ SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ },
{ SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ },
{ SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE },
{ SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT, SYNC_FRAGMENT_SHADER_UNIFORM_READ },
{ SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
{ SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE },
{ SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ },
{ SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT },
{ SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE },
{ SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ },
{ SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ },
{ SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT, SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ },
{ SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE },
{ SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT, SYNC_COMPUTE_SHADER_UNIFORM_READ },
{ SYNC_COPY_TRANSFER_READ_BIT, SYNC_COPY_TRANSFER_READ },
{ SYNC_COPY_TRANSFER_WRITE_BIT, SYNC_COPY_TRANSFER_WRITE },
{ SYNC_RESOLVE_TRANSFER_READ_BIT, SYNC_RESOLVE_TRANSFER_READ },
{ SYNC_RESOLVE_TRANSFER_WRITE_BIT, SYNC_RESOLVE_TRANSFER_WRITE },
{ SYNC_BLIT_TRANSFER_READ_BIT, SYNC_BLIT_TRANSFER_READ },
{ SYNC_BLIT_TRANSFER_WRITE_BIT, SYNC_BLIT_TRANSFER_WRITE },
{ SYNC_CLEAR_TRANSFER_WRITE_BIT, SYNC_CLEAR_TRANSFER_WRITE },
{ SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV },
{ SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV },
{ SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT, SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT },
{ SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ },
{ SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ },
{ SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ },
{ SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE },
{ SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT, SYNC_RAY_TRACING_SHADER_UNIFORM_READ },
{ SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE },
{ SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ },
{ SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ },
{ SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ },
{ SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ },
{ SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE },
{ SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ },
{ SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT, SYNC_VIDEO_DECODE_VIDEO_DECODE_READ },
{ SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT, SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE },
{ SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ },
{ SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE },
{ SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT, SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ },
{ SYNC_HOST_HOST_READ_BIT, SYNC_HOST_HOST_READ },
{ SYNC_HOST_HOST_WRITE_BIT, SYNC_HOST_HOST_WRITE },
{ SYNC_IMAGE_LAYOUT_TRANSITION_BIT, SYNC_IMAGE_LAYOUT_TRANSITION },
{ SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER_BIT, SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER },
};
// Array of text names and component masks for each stage/access index
const std::array<SyncStageAccessInfoType, 89> syncStageAccessInfoByStageAccessIndex { {
{
"SYNC_ACCESS_INDEX_NONE",
VK_PIPELINE_STAGE_2_NONE_KHR,
VK_ACCESS_2_NONE_KHR,
SYNC_ACCESS_INDEX_NONE,
SyncStageAccessFlags(0)
},
{
"SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ",
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR,
VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR,
SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ,
SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT
},
{
"SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT",
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR,
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT,
SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
},
{
"SYNC_INDEX_INPUT_INDEX_READ",
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR,
VK_ACCESS_2_INDEX_READ_BIT_KHR,
SYNC_INDEX_INPUT_INDEX_READ,
SYNC_INDEX_INPUT_INDEX_READ_BIT
},
{
"SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ",
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR,
VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR,
SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ,
SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT
},
{
"SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ,
SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ,
SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_VERTEX_SHADER_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_VERTEX_SHADER_SHADER_STORAGE_READ,
SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT
},
{
"SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE,
SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_VERTEX_SHADER_UNIFORM_READ",
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_VERTEX_SHADER_UNIFORM_READ,
SYNC_VERTEX_SHADER_UNIFORM_READ_BIT
},
{
"SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ,
SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ,
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ,
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT
},
{
"SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE,
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ,
SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT
},
{
"SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ,
SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ,
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ,
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT
},
{
"SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE,
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ",
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ,
SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT
},
{
"SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ,
SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ,
SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ,
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT
},
{
"SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE,
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_GEOMETRY_SHADER_UNIFORM_READ",
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_GEOMETRY_SHADER_UNIFORM_READ,
SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT
},
{
"SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT",
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT,
SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
},
{
"SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT",
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,
SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT,
SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
},
{
"SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT",
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,
SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT,
SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
},
{
"SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT",
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT,
VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,
SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT,
SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
},
{
"SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ,
SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ,
SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ,
SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT
},
{
"SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE,
SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_TASK_SHADER_NV_UNIFORM_READ",
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_TASK_SHADER_NV_UNIFORM_READ,
SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT
},
{
"SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ,
SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ,
SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ,
SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT
},
{
"SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE,
SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_MESH_SHADER_NV_UNIFORM_READ",
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_MESH_SHADER_NV_UNIFORM_READ,
SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT
},
{
"SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ",
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ,
SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT
},
{
"SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ",
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR,
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR,
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ,
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
},
{
"SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE",
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR,
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR,
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE,
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
},
{
"SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ,
SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ",
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR,
SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ,
SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT
},
{
"SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ,
SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ,
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT
},
{
"SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE,
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_FRAGMENT_SHADER_UNIFORM_READ",
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_FRAGMENT_SHADER_UNIFORM_READ,
SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT
},
{
"SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ",
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR,
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR,
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ,
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
},
{
"SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE",
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR,
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR,
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE,
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
},
{
"SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ",
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR,
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ,
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT
},
{
"SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT",
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT,
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
},
{
"SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE",
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE,
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT
},
{
"SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ,
SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ,
SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ,
SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT
},
{
"SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE,
SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_COMPUTE_SHADER_UNIFORM_READ",
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_COMPUTE_SHADER_UNIFORM_READ,
SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT
},
{
"SYNC_COPY_TRANSFER_READ",
VK_PIPELINE_STAGE_2_COPY_BIT_KHR,
VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
SYNC_COPY_TRANSFER_READ,
SYNC_COPY_TRANSFER_READ_BIT
},
{
"SYNC_COPY_TRANSFER_WRITE",
VK_PIPELINE_STAGE_2_COPY_BIT_KHR,
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
SYNC_COPY_TRANSFER_WRITE,
SYNC_COPY_TRANSFER_WRITE_BIT
},
{
"SYNC_RESOLVE_TRANSFER_READ",
VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR,
VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
SYNC_RESOLVE_TRANSFER_READ,
SYNC_RESOLVE_TRANSFER_READ_BIT
},
{
"SYNC_RESOLVE_TRANSFER_WRITE",
VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR,
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
SYNC_RESOLVE_TRANSFER_WRITE,
SYNC_RESOLVE_TRANSFER_WRITE_BIT
},
{
"SYNC_BLIT_TRANSFER_READ",
VK_PIPELINE_STAGE_2_BLIT_BIT_KHR,
VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
SYNC_BLIT_TRANSFER_READ,
SYNC_BLIT_TRANSFER_READ_BIT
},
{
"SYNC_BLIT_TRANSFER_WRITE",
VK_PIPELINE_STAGE_2_BLIT_BIT_KHR,
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
SYNC_BLIT_TRANSFER_WRITE,
SYNC_BLIT_TRANSFER_WRITE_BIT
},
{
"SYNC_CLEAR_TRANSFER_WRITE",
VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR,
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
SYNC_CLEAR_TRANSFER_WRITE,
SYNC_CLEAR_TRANSFER_WRITE_BIT
},
{
"SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV",
VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV,
VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV,
SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV,
SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV
},
{
"SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV",
VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV,
VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV,
SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV,
SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV
},
{
"SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT",
VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT,
VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT,
SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT,
SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT
},
{
"SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ",
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ,
SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT
},
{
"SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ,
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ,
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT
},
{
"SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE",
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE,
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT
},
{
"SYNC_RAY_TRACING_SHADER_UNIFORM_READ",
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_RAY_TRACING_SHADER_UNIFORM_READ,
SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT
},
{
"SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE",
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE,
SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT
},
{
"SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ",
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR,
SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ,
SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT
},
{
"SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ",
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ,
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT
},
{
"SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ",
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ,
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT
},
{
"SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ",
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ,
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT
},
{
"SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE",
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE,
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT
},
{
"SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ",
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ,
SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT
},
{
"SYNC_VIDEO_DECODE_VIDEO_DECODE_READ",
VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR,
VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR,
SYNC_VIDEO_DECODE_VIDEO_DECODE_READ,
SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT
},
{
"SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE",
VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR,
VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR,
SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE,
SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT
},
{
"SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ",
VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR,
VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR,
SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ,
SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT
},
{
"SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE",
VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR,
VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR,
SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE,
SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT
},
{
"SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ",
VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI,
VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR,
SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ,
SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT
},
{
"SYNC_HOST_HOST_READ",
VK_PIPELINE_STAGE_2_HOST_BIT_KHR,
VK_ACCESS_2_HOST_READ_BIT_KHR,
SYNC_HOST_HOST_READ,
SYNC_HOST_HOST_READ_BIT
},
{
"SYNC_HOST_HOST_WRITE",
VK_PIPELINE_STAGE_2_HOST_BIT_KHR,
VK_ACCESS_2_HOST_WRITE_BIT_KHR,
SYNC_HOST_HOST_WRITE,
SYNC_HOST_HOST_WRITE_BIT
},
{
"SYNC_IMAGE_LAYOUT_TRANSITION",
VK_PIPELINE_STAGE_2_NONE_KHR,
VK_ACCESS_2_NONE_KHR,
SYNC_IMAGE_LAYOUT_TRANSITION,
SYNC_IMAGE_LAYOUT_TRANSITION_BIT
},
{
"SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER",
VK_PIPELINE_STAGE_2_NONE_KHR,
VK_ACCESS_2_NONE_KHR,
SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER,
SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER_BIT
},
} };
// Constants defining the mask of all read and write stage_access states
// Bit order mask of stage_access bit for each stage
const std::map<VkPipelineStageFlags2KHR, SyncStageAccessFlags> syncStageAccessMaskByStageBit {
{ VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, (
SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT |
SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
)},
{ VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_VERTEX_SHADER_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT |
SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, (
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT |
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT |
SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, (
SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_HOST_BIT_KHR, (
SYNC_HOST_HOST_READ_BIT |
SYNC_HOST_HOST_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, (
SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV |
SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV
)},
{ VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT},
{ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT |
SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT |
SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT |
SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT |
SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, (
SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT},
{ VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT},
{ VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT |
SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT |
SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
)},
{ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, (
SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT
)},
{ VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, (
SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT |
SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, (
SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT |
SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_COPY_BIT_KHR, (
SYNC_COPY_TRANSFER_READ_BIT |
SYNC_COPY_TRANSFER_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, (
SYNC_RESOLVE_TRANSFER_READ_BIT |
SYNC_RESOLVE_TRANSFER_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, (
SYNC_BLIT_TRANSFER_READ_BIT |
SYNC_BLIT_TRANSFER_WRITE_BIT
)},
{ VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, SYNC_CLEAR_TRANSFER_WRITE_BIT},
{ VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, SYNC_INDEX_INPUT_INDEX_READ_BIT},
{ VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT},
{ VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT},
};
// Bit order mask of stage_access bit for each access
const std::map<VkAccessFlags2KHR, SyncStageAccessFlags> syncStageAccessMaskByAccessBit {
{ VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, (
SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT
)},
{ VK_ACCESS_2_INDEX_READ_BIT_KHR, SYNC_INDEX_INPUT_INDEX_READ_BIT},
{ VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT},
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, (
SYNC_VERTEX_SHADER_UNIFORM_READ_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT |
SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT |
SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT |
SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT |
SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT |
SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT |
SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT
)},
{ VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, (
SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT |
SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT
)},
{ VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT},
{ VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT},
{ VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, (
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
)},
{ VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, (
SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
)},
{ VK_ACCESS_2_TRANSFER_READ_BIT_KHR, (
SYNC_COPY_TRANSFER_READ_BIT |
SYNC_RESOLVE_TRANSFER_READ_BIT |
SYNC_BLIT_TRANSFER_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT
)},
{ VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, (
SYNC_COPY_TRANSFER_WRITE_BIT |
SYNC_RESOLVE_TRANSFER_WRITE_BIT |
SYNC_BLIT_TRANSFER_WRITE_BIT |
SYNC_CLEAR_TRANSFER_WRITE_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT
)},
{ VK_ACCESS_2_HOST_READ_BIT_KHR, SYNC_HOST_HOST_READ_BIT},
{ VK_ACCESS_2_HOST_WRITE_BIT_KHR, SYNC_HOST_HOST_WRITE_BIT},
{ VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV},
{ VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV},
{ VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT},
{ VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT},
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, (
SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT
)},
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT},
{ VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT},
{ VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT},
{ VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT},
{ VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, (
SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT |
SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
)},
{ VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT},
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, (
SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT |
SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT |
SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT
)},
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, (
SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT |
SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT |
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT |
SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT
)},
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, (
SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT |
SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT
)},
{ VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT},
{ VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT},
{ VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT},
{ VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT},
{ VK_ACCESS_2_MEMORY_READ_BIT_KHR, syncStageAccessReadMask},
{ VK_ACCESS_2_MEMORY_WRITE_BIT_KHR, syncStageAccessWriteMask},
};
// stage_access index for each stage and access
const std::map<VkPipelineStageFlags2KHR, std::map<VkAccessFlags2KHR, SyncStageAccessIndex>> syncStageAccessIndexByStageAndAccess {
{ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE },
{ VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ },
{ VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ },
{ VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, {
{ VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_BLIT_TRANSFER_READ },
{ VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_BLIT_TRANSFER_WRITE }
} },
{ VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, {
{ VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_CLEAR_TRANSFER_WRITE }
} },
{ VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, {
{ VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ },
{ VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT },
{ VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE }
} },
{ VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, {
{ VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV },
{ VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV }
} },
{ VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_COMPUTE_SHADER_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, {
{ VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT }
} },
{ VK_PIPELINE_STAGE_2_COPY_BIT_KHR, {
{ VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_COPY_TRANSFER_READ },
{ VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_COPY_TRANSFER_WRITE }
} },
{ VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, {
{ VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ },
{ VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT }
} },
{ VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, {
{ VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
{ VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE }
} },
{ VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, {
{ VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT }
} },
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, {
{ VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ }
} },
{ VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_HOST_BIT_KHR, {
{ VK_ACCESS_2_HOST_READ_BIT_KHR, SYNC_HOST_HOST_READ },
{ VK_ACCESS_2_HOST_WRITE_BIT_KHR, SYNC_HOST_HOST_WRITE }
} },
{ VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, {
{ VK_ACCESS_2_INDEX_READ_BIT_KHR, SYNC_INDEX_INPUT_INDEX_READ }
} },
{ VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, {
{ VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
{ VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE }
} },
{ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_MESH_SHADER_NV_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, {
{ VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_RESOLVE_TRANSFER_READ },
{ VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_RESOLVE_TRANSFER_WRITE }
} },
{ VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, {
{ VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ }
} },
{ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_TASK_SHADER_NV_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, {
{ VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT },
{ VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT },
{ VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT }
} },
{ VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, {
{ VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ }
} },
{ VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, {
{ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ },
{ VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ },
{ VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_VERTEX_SHADER_SHADER_STORAGE_READ },
{ VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE },
{ VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_VERTEX_SHADER_UNIFORM_READ }
} },
{ VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, {
{ VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_READ },
{ VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE }
} },
{ VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, {
{ VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ },
{ VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE }
} },
};
// Direct VkPipelineStageFlags to valid VkAccessFlags lookup table
const std::map<VkPipelineStageFlags2KHR, VkAccessFlags2KHR> syncDirectStageToAccessMask {
{ VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, (
VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR |
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
)},
{ VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR |
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR |
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, (
VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR |
VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT |
VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_HOST_BIT_KHR, (
VK_ACCESS_2_HOST_READ_BIT_KHR |
VK_ACCESS_2_HOST_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, (
VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV |
VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
)},
{ VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT},
{ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR},
{ VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT},
{ VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT |
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT |
VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
)},
{ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, (
VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR |
VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR |
VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR |
VK_ACCESS_2_UNIFORM_READ_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, (
VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR |
VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, (
VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR |
VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COPY_BIT_KHR, (
VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, (
VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, (
VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, VK_ACCESS_2_INDEX_READ_BIT_KHR},
{ VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR},
{ VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR},
};
// Pipeline stages corresponding to VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR for each VkQueueFlagBits
const std::map<VkQueueFlagBits, VkPipelineStageFlags2KHR> syncAllCommandStagesByQueueFlags {
{ VK_QUEUE_COMPUTE_BIT, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_HOST_BIT_KHR
)},
{ VK_QUEUE_GRAPHICS_BIT, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_HOST_BIT_KHR
)},
{ VK_QUEUE_TRANSFER_BIT, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_HOST_BIT_KHR
)},
{ VK_QUEUE_VIDEO_DECODE_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_HOST_BIT_KHR
)},
{ VK_QUEUE_VIDEO_ENCODE_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_HOST_BIT_KHR
)},
};
// Masks of logically earlier stage flags for a given stage flag
const std::map<VkPipelineStageFlags2KHR, VkPipelineStageFlags2KHR> syncLogicallyEarlierStages {
{ VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
)},
{ VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COPY_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
};
// Masks of logically later stage flags for a given stage flag
const std::map<VkPipelineStageFlags2KHR, VkPipelineStageFlags2KHR> syncLogicallyLaterStages {
{ VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, (
VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, (
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, (
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, (
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, (
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, (
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
)},
{ VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_COPY_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
{ VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
};
// Lookup table of stage orderings
const std::map<VkPipelineStageFlags2KHR, int> syncStageOrder {
{ VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, 0},
{ VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, 1},
{ VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, 2},
{ VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, 3},
{ VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, 4},
{ VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, 5},
{ VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, 6},
{ VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, 7},
{ VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, 8},
{ VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, 9},
{ VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, 10},
{ VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, 11},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, 12},
{ VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, 13},
{ VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, 14},
{ VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, 15},
{ VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, 16},
{ VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, 17},
{ VK_PIPELINE_STAGE_2_COPY_BIT_KHR, 18},
{ VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, 19},
{ VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, 20},
{ VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, 21},
{ VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, 22},
{ VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, 23},
{ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, 24},
{ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, 25},
{ VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, 26},
{ VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, 27},
{ VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, 28},
{ VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, 29},
{ VK_PIPELINE_STAGE_2_HOST_BIT_KHR, 30},
};
const std::map<VkShaderStageFlagBits, SyncShaderStageAccess> syncStageAccessMaskByShaderStage {
{VK_SHADER_STAGE_VERTEX_BIT, {
SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ, SYNC_VERTEX_SHADER_SHADER_STORAGE_READ, SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE, SYNC_VERTEX_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, {
SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE, SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, {
SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE, SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_GEOMETRY_BIT, {
SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE, SYNC_GEOMETRY_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_FRAGMENT_BIT, {
SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE, SYNC_FRAGMENT_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_COMPUTE_BIT, {
SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ, SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE, SYNC_COMPUTE_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_RAYGEN_BIT_KHR, {
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE, SYNC_RAY_TRACING_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_ANY_HIT_BIT_KHR, {
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE, SYNC_RAY_TRACING_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, {
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE, SYNC_RAY_TRACING_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_MISS_BIT_KHR, {
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE, SYNC_RAY_TRACING_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_INTERSECTION_BIT_KHR, {
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE, SYNC_RAY_TRACING_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_CALLABLE_BIT_KHR, {
SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE, SYNC_RAY_TRACING_SHADER_UNIFORM_READ}},
{VK_SHADER_STAGE_TASK_BIT_NV, {
SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ, SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ, SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE, SYNC_TASK_SHADER_NV_UNIFORM_READ}},
{VK_SHADER_STAGE_MESH_BIT_NV, {
SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ, SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ, SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE, SYNC_MESH_SHADER_NV_UNIFORM_READ}},
};