1 // *** THIS FILE IS GENERATED - DO NOT EDIT *** 2 // See helper_file_generator.py for modifications 3 4 5 /*************************************************************************** 6 * 7 * Copyright (c) 2015-2021 The Khronos Group Inc. 8 * Copyright (c) 2015-2021 Valve Corporation 9 * Copyright (c) 2015-2021 LunarG, Inc. 10 * Copyright (c) 2015-2021 Google Inc. 11 * 12 * Licensed under the Apache License, Version 2.0 (the "License"); 13 * you may not use this file except in compliance with the License. 14 * You may obtain a copy of the License at 15 * 16 * http://www.apache.org/licenses/LICENSE-2.0 17 * 18 * Unless required by applicable law or agreed to in writing, software 19 * distributed under the License is distributed on an "AS IS" BASIS, 20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 * See the License for the specific language governing permissions and 22 * limitations under the License. 23 * 24 * Author: Mark Lobodzinski <mark@lunarg.com> 25 * Author: Courtney Goeltzenleuchter <courtneygo@google.com> 26 * Author: Tobin Ehlis <tobine@google.com> 27 * Author: Chris Forbes <chrisforbes@google.com> 28 * Author: John Zulauf<jzulauf@lunarg.com> 29 * 30 ****************************************************************************/ 31 32 #pragma once 33 34 #include <array> 35 #include <bitset> 36 #include <map> 37 #include <stdint.h> 38 #include <vulkan/vulkan.h> 39 #include "vk_layer_data.h" 40 using SyncStageAccessFlags = std::bitset<128>; 41 42 // clang-format off 43 44 // Unique number for each stage/access combination 45 enum SyncStageAccessIndex { 46 SYNC_ACCESS_INDEX_NONE = 0, 47 SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ = 1, 48 SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT = 2, 49 SYNC_INDEX_INPUT_INDEX_READ = 3, 50 SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ = 4, 51 SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ = 5, 52 SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ = 6, 53 SYNC_VERTEX_SHADER_SHADER_STORAGE_READ = 7, 54 SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE = 8, 55 SYNC_VERTEX_SHADER_UNIFORM_READ = 9, 56 SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ = 10, 57 SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ = 11, 58 SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ = 12, 59 SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE = 13, 60 SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ = 14, 61 SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ = 15, 62 SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ = 16, 63 SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ = 17, 64 SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE = 18, 65 SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ = 19, 66 SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ = 20, 67 SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ = 21, 68 SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ = 22, 69 SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE = 23, 70 SYNC_GEOMETRY_SHADER_UNIFORM_READ = 24, 71 SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT = 25, 72 SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT = 26, 73 SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT = 27, 74 SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT = 28, 75 SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ = 29, 76 SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ = 30, 77 SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ = 31, 78 SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE = 32, 79 SYNC_TASK_SHADER_NV_UNIFORM_READ = 33, 80 SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ = 34, 81 SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ = 35, 82 SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ = 36, 83 SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE = 37, 84 SYNC_MESH_SHADER_NV_UNIFORM_READ = 38, 85 SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ = 39, 86 SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ = 40, 87 SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE = 41, 88 SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ = 42, 89 SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ = 43, 90 SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ = 44, 91 SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ = 45, 92 SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE = 46, 93 SYNC_FRAGMENT_SHADER_UNIFORM_READ = 47, 94 SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ = 48, 95 SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE = 49, 96 SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ = 50, 97 SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT = 51, 98 SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE = 52, 99 SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ = 53, 100 SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ = 54, 101 SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ = 55, 102 SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE = 56, 103 SYNC_COMPUTE_SHADER_UNIFORM_READ = 57, 104 SYNC_COPY_TRANSFER_READ = 58, 105 SYNC_COPY_TRANSFER_WRITE = 59, 106 SYNC_RESOLVE_TRANSFER_READ = 60, 107 SYNC_RESOLVE_TRANSFER_WRITE = 61, 108 SYNC_BLIT_TRANSFER_READ = 62, 109 SYNC_BLIT_TRANSFER_WRITE = 63, 110 SYNC_CLEAR_TRANSFER_WRITE = 64, 111 SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV = 65, 112 SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV = 66, 113 SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT = 67, 114 SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ = 68, 115 SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ = 69, 116 SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ = 70, 117 SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE = 71, 118 SYNC_RAY_TRACING_SHADER_UNIFORM_READ = 72, 119 SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ = 73, 120 SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE = 74, 121 SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ = 75, 122 SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ = 76, 123 SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ = 77, 124 SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ = 78, 125 SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE = 79, 126 SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ = 80, 127 SYNC_VIDEO_DECODE_VIDEO_DECODE_READ = 81, 128 SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE = 82, 129 SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ = 83, 130 SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE = 84, 131 SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ = 85, 132 SYNC_HOST_HOST_READ = 86, 133 SYNC_HOST_HOST_WRITE = 87, 134 SYNC_IMAGE_LAYOUT_TRANSITION = 88, 135 SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER = 89, 136 }; 137 138 // Unique bit for each stage/access combination 139 static const SyncStageAccessFlags SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT = (SyncStageAccessFlags(1) << SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ); 140 static const SyncStageAccessFlags SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = (SyncStageAccessFlags(1) << SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT); 141 static const SyncStageAccessFlags SYNC_INDEX_INPUT_INDEX_READ_BIT = (SyncStageAccessFlags(1) << SYNC_INDEX_INPUT_INDEX_READ); 142 static const SyncStageAccessFlags SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ); 143 static const SyncStageAccessFlags SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ); 144 static const SyncStageAccessFlags SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ); 145 static const SyncStageAccessFlags SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_VERTEX_SHADER_SHADER_STORAGE_READ); 146 static const SyncStageAccessFlags SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE); 147 static const SyncStageAccessFlags SYNC_VERTEX_SHADER_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_VERTEX_SHADER_UNIFORM_READ); 148 static const SyncStageAccessFlags SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ); 149 static const SyncStageAccessFlags SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ); 150 static const SyncStageAccessFlags SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ); 151 static const SyncStageAccessFlags SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE); 152 static const SyncStageAccessFlags SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ); 153 static const SyncStageAccessFlags SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ); 154 static const SyncStageAccessFlags SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ); 155 static const SyncStageAccessFlags SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ); 156 static const SyncStageAccessFlags SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE); 157 static const SyncStageAccessFlags SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ); 158 static const SyncStageAccessFlags SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ); 159 static const SyncStageAccessFlags SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ); 160 static const SyncStageAccessFlags SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ); 161 static const SyncStageAccessFlags SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE); 162 static const SyncStageAccessFlags SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_GEOMETRY_SHADER_UNIFORM_READ); 163 static const SyncStageAccessFlags SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = (SyncStageAccessFlags(1) << SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT); 164 static const SyncStageAccessFlags SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = (SyncStageAccessFlags(1) << SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT); 165 static const SyncStageAccessFlags SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = (SyncStageAccessFlags(1) << SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT); 166 static const SyncStageAccessFlags SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT); 167 static const SyncStageAccessFlags SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ); 168 static const SyncStageAccessFlags SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ); 169 static const SyncStageAccessFlags SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ); 170 static const SyncStageAccessFlags SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE); 171 static const SyncStageAccessFlags SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_TASK_SHADER_NV_UNIFORM_READ); 172 static const SyncStageAccessFlags SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ); 173 static const SyncStageAccessFlags SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ); 174 static const SyncStageAccessFlags SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ); 175 static const SyncStageAccessFlags SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE); 176 static const SyncStageAccessFlags SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_MESH_SHADER_NV_UNIFORM_READ); 177 static const SyncStageAccessFlags SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ); 178 static const SyncStageAccessFlags SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = (SyncStageAccessFlags(1) << SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ); 179 static const SyncStageAccessFlags SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE); 180 static const SyncStageAccessFlags SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ); 181 static const SyncStageAccessFlags SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ); 182 static const SyncStageAccessFlags SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ); 183 static const SyncStageAccessFlags SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ); 184 static const SyncStageAccessFlags SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE); 185 static const SyncStageAccessFlags SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_FRAGMENT_SHADER_UNIFORM_READ); 186 static const SyncStageAccessFlags SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = (SyncStageAccessFlags(1) << SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ); 187 static const SyncStageAccessFlags SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE); 188 static const SyncStageAccessFlags SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT = (SyncStageAccessFlags(1) << SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ); 189 static const SyncStageAccessFlags SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = (SyncStageAccessFlags(1) << SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT); 190 static const SyncStageAccessFlags SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE); 191 static const SyncStageAccessFlags SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ); 192 static const SyncStageAccessFlags SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ); 193 static const SyncStageAccessFlags SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ); 194 static const SyncStageAccessFlags SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE); 195 static const SyncStageAccessFlags SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_COMPUTE_SHADER_UNIFORM_READ); 196 static const SyncStageAccessFlags SYNC_COPY_TRANSFER_READ_BIT = (SyncStageAccessFlags(1) << SYNC_COPY_TRANSFER_READ); 197 static const SyncStageAccessFlags SYNC_COPY_TRANSFER_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_COPY_TRANSFER_WRITE); 198 static const SyncStageAccessFlags SYNC_RESOLVE_TRANSFER_READ_BIT = (SyncStageAccessFlags(1) << SYNC_RESOLVE_TRANSFER_READ); 199 static const SyncStageAccessFlags SYNC_RESOLVE_TRANSFER_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_RESOLVE_TRANSFER_WRITE); 200 static const SyncStageAccessFlags SYNC_BLIT_TRANSFER_READ_BIT = (SyncStageAccessFlags(1) << SYNC_BLIT_TRANSFER_READ); 201 static const SyncStageAccessFlags SYNC_BLIT_TRANSFER_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_BLIT_TRANSFER_WRITE); 202 static const SyncStageAccessFlags SYNC_CLEAR_TRANSFER_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_CLEAR_TRANSFER_WRITE); 203 static const SyncStageAccessFlags SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV = (SyncStageAccessFlags(1) << SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV); 204 static const SyncStageAccessFlags SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV = (SyncStageAccessFlags(1) << SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV); 205 static const SyncStageAccessFlags SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT = (SyncStageAccessFlags(1) << SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT); 206 static const SyncStageAccessFlags SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ); 207 static const SyncStageAccessFlags SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ); 208 static const SyncStageAccessFlags SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ); 209 static const SyncStageAccessFlags SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE); 210 static const SyncStageAccessFlags SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_RAY_TRACING_SHADER_UNIFORM_READ); 211 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ); 212 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE); 213 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ); 214 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ); 215 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ); 216 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ); 217 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE); 218 static const SyncStageAccessFlags SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT = (SyncStageAccessFlags(1) << SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ); 219 static const SyncStageAccessFlags SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_VIDEO_DECODE_VIDEO_DECODE_READ); 220 static const SyncStageAccessFlags SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE); 221 static const SyncStageAccessFlags SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT = (SyncStageAccessFlags(1) << SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ); 222 static const SyncStageAccessFlags SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE); 223 static const SyncStageAccessFlags SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT = (SyncStageAccessFlags(1) << SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ); 224 static const SyncStageAccessFlags SYNC_HOST_HOST_READ_BIT = (SyncStageAccessFlags(1) << SYNC_HOST_HOST_READ); 225 static const SyncStageAccessFlags SYNC_HOST_HOST_WRITE_BIT = (SyncStageAccessFlags(1) << SYNC_HOST_HOST_WRITE); 226 static const SyncStageAccessFlags SYNC_IMAGE_LAYOUT_TRANSITION_BIT = (SyncStageAccessFlags(1) << SYNC_IMAGE_LAYOUT_TRANSITION); 227 static const SyncStageAccessFlags SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER_BIT = (SyncStageAccessFlags(1) << SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER); 228 229 // Map of the StageAccessIndices from the StageAccess Bit 230 extern const layer_data::unordered_map<SyncStageAccessFlags, SyncStageAccessIndex> syncStageAccessIndexByStageAccessBit; 231 232 struct SyncStageAccessInfoType { 233 const char *name; 234 VkPipelineStageFlags2KHR stage_mask; 235 VkAccessFlags2KHR access_mask; 236 SyncStageAccessIndex stage_access_index; 237 SyncStageAccessFlags stage_access_bit; 238 }; 239 240 // Array of text names and component masks for each stage/access index 241 extern const std::array<SyncStageAccessInfoType, 90> syncStageAccessInfoByStageAccessIndex; 242 243 // Constants defining the mask of all read and write stage_access states 244 static const SyncStageAccessFlags syncStageAccessReadMask = ( // Mask of all read StageAccess bits 245 SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT | 246 SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT | 247 SYNC_INDEX_INPUT_INDEX_READ_BIT | 248 SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT | 249 SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT | 250 SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT | 251 SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT | 252 SYNC_VERTEX_SHADER_UNIFORM_READ_BIT | 253 SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT | 254 SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT | 255 SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT | 256 SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT | 257 SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT | 258 SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT | 259 SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT | 260 SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT | 261 SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT | 262 SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT | 263 SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT | 264 SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT | 265 SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT | 266 SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT | 267 SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT | 268 SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT | 269 SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT | 270 SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT | 271 SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT | 272 SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT | 273 SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT | 274 SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT | 275 SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT | 276 SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | 277 SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT | 278 SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT | 279 SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT | 280 SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT | 281 SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT | 282 SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | 283 SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT | 284 SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT | 285 SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT | 286 SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT | 287 SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT | 288 SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT | 289 SYNC_COPY_TRANSFER_READ_BIT | 290 SYNC_RESOLVE_TRANSFER_READ_BIT | 291 SYNC_BLIT_TRANSFER_READ_BIT | 292 SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV | 293 SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT | 294 SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT | 295 SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT | 296 SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT | 297 SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT | 298 SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ_BIT | 299 SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT | 300 SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT | 301 SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT | 302 SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT | 303 SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT | 304 SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT | 305 SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT | 306 SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT | 307 SYNC_HOST_HOST_READ_BIT 308 ); 309 310 static const SyncStageAccessFlags syncStageAccessWriteMask = ( // Mask of all write StageAccess bits 311 SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT | 312 SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT | 313 SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT | 314 SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT | 315 SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT | 316 SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT | 317 SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT | 318 SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT | 319 SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | 320 SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT | 321 SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | 322 SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT | 323 SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT | 324 SYNC_COPY_TRANSFER_WRITE_BIT | 325 SYNC_RESOLVE_TRANSFER_WRITE_BIT | 326 SYNC_BLIT_TRANSFER_WRITE_BIT | 327 SYNC_CLEAR_TRANSFER_WRITE_BIT | 328 SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV | 329 SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT | 330 SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT | 331 SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT | 332 SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT | 333 SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT | 334 SYNC_HOST_HOST_WRITE_BIT | 335 SYNC_IMAGE_LAYOUT_TRANSITION_BIT | 336 SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER_BIT 337 ); 338 339 // Bit order mask of stage_access bit for each stage 340 extern const std::map<VkPipelineStageFlags2KHR, SyncStageAccessFlags> syncStageAccessMaskByStageBit; 341 342 // Bit order mask of stage_access bit for each access 343 extern const std::map<VkAccessFlags2KHR, SyncStageAccessFlags> syncStageAccessMaskByAccessBit; 344 345 // stage_access index for each stage and access 346 extern const std::map<VkPipelineStageFlags2KHR, std::map<VkAccessFlags2KHR, SyncStageAccessIndex>> syncStageAccessIndexByStageAndAccess; 347 348 // Direct VkPipelineStageFlags to valid VkAccessFlags lookup table 349 extern const std::map<VkPipelineStageFlags2KHR, VkAccessFlags2KHR> syncDirectStageToAccessMask; 350 351 // Pipeline stages corresponding to VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR for each VkQueueFlagBits 352 extern const std::map<VkQueueFlagBits, VkPipelineStageFlags2KHR> syncAllCommandStagesByQueueFlags; 353 354 // Masks of logically earlier stage flags for a given stage flag 355 extern const std::map<VkPipelineStageFlags2KHR, VkPipelineStageFlags2KHR> syncLogicallyEarlierStages; 356 357 // Masks of logically later stage flags for a given stage flag 358 extern const std::map<VkPipelineStageFlags2KHR, VkPipelineStageFlags2KHR> syncLogicallyLaterStages; 359 360 // Lookup table of stage orderings 361 extern const std::map<VkPipelineStageFlags2KHR, int> syncStageOrder; 362 363 struct SyncShaderStageAccess { 364 SyncStageAccessIndex sampled_read; 365 SyncStageAccessIndex storage_read; 366 SyncStageAccessIndex storage_write; 367 SyncStageAccessIndex uniform_read; 368 }; 369 370 extern const std::map<VkShaderStageFlagBits, SyncShaderStageAccess> syncStageAccessMaskByShaderStage; 371