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 #include "synchronization_validation_types.h"
33 
34 // clang-format off
35 
36 // Unique bit for each  stage/access combination
37 
38 // Map of the StageAccessIndices from the StageAccess Bit
39 const layer_data::unordered_map<SyncStageAccessFlags, SyncStageAccessIndex> syncStageAccessIndexByStageAccessBit  = {
40     { SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT, SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ },
41     { SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT },
42     { SYNC_INDEX_INPUT_INDEX_READ_BIT, SYNC_INDEX_INPUT_INDEX_READ },
43     { SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ },
44     { SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ },
45     { SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ },
46     { SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT, SYNC_VERTEX_SHADER_SHADER_STORAGE_READ },
47     { SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE },
48     { SYNC_VERTEX_SHADER_UNIFORM_READ_BIT, SYNC_VERTEX_SHADER_UNIFORM_READ },
49     { SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ },
50     { SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ },
51     { SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ },
52     { SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE },
53     { SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT, SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ },
54     { SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ },
55     { SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ },
56     { SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ },
57     { SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE },
58     { SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT, SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ },
59     { SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ },
60     { SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ },
61     { SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ },
62     { SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE },
63     { SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT, SYNC_GEOMETRY_SHADER_UNIFORM_READ },
64     { SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT },
65     { SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT },
66     { SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT },
67     { SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT },
68     { SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT, SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ },
69     { SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT, SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ },
70     { SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT, SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ },
71     { SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT, SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE },
72     { SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT, SYNC_TASK_SHADER_NV_UNIFORM_READ },
73     { SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT, SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ },
74     { SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT, SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ },
75     { SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT, SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ },
76     { SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT, SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE },
77     { SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT, SYNC_MESH_SHADER_NV_UNIFORM_READ },
78     { SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ },
79     { SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
80     { SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE },
81     { SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ },
82     { SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT, SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ },
83     { SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ },
84     { SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ },
85     { SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE },
86     { SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT, SYNC_FRAGMENT_SHADER_UNIFORM_READ },
87     { SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
88     { SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE },
89     { SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ },
90     { SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT },
91     { SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE },
92     { SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ },
93     { SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ },
94     { SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT, SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ },
95     { SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE },
96     { SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT, SYNC_COMPUTE_SHADER_UNIFORM_READ },
97     { SYNC_COPY_TRANSFER_READ_BIT, SYNC_COPY_TRANSFER_READ },
98     { SYNC_COPY_TRANSFER_WRITE_BIT, SYNC_COPY_TRANSFER_WRITE },
99     { SYNC_RESOLVE_TRANSFER_READ_BIT, SYNC_RESOLVE_TRANSFER_READ },
100     { SYNC_RESOLVE_TRANSFER_WRITE_BIT, SYNC_RESOLVE_TRANSFER_WRITE },
101     { SYNC_BLIT_TRANSFER_READ_BIT, SYNC_BLIT_TRANSFER_READ },
102     { SYNC_BLIT_TRANSFER_WRITE_BIT, SYNC_BLIT_TRANSFER_WRITE },
103     { SYNC_CLEAR_TRANSFER_WRITE_BIT, SYNC_CLEAR_TRANSFER_WRITE },
104     { SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV },
105     { SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV },
106     { SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT, SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT },
107     { SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT, SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ },
108     { SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT, SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ },
109     { SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ },
110     { SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE },
111     { SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT, SYNC_RAY_TRACING_SHADER_UNIFORM_READ },
112     { SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ },
113     { SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE },
114     { SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ },
115     { SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ },
116     { SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ },
117     { SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ },
118     { SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE },
119     { SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT, SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ },
120     { SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT, SYNC_VIDEO_DECODE_VIDEO_DECODE_READ },
121     { SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT, SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE },
122     { SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ },
123     { SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE },
124     { SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT, SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ },
125     { SYNC_HOST_HOST_READ_BIT, SYNC_HOST_HOST_READ },
126     { SYNC_HOST_HOST_WRITE_BIT, SYNC_HOST_HOST_WRITE },
127     { SYNC_IMAGE_LAYOUT_TRANSITION_BIT, SYNC_IMAGE_LAYOUT_TRANSITION },
128     { SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER_BIT, SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER },
129 };
130 
131 // Array of text names and component masks for each stage/access index
132 const std::array<SyncStageAccessInfoType, 90> syncStageAccessInfoByStageAccessIndex { {
133     {
134         "SYNC_ACCESS_INDEX_NONE",
135         VK_PIPELINE_STAGE_2_NONE_KHR,
136         VK_ACCESS_2_NONE_KHR,
137         SYNC_ACCESS_INDEX_NONE,
138         SyncStageAccessFlags(0)
139     },
140     {
141         "SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ",
142         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR,
143         VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR,
144         SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ,
145         SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT
146     },
147     {
148         "SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT",
149         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR,
150         VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
151         SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT,
152         SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
153     },
154     {
155         "SYNC_INDEX_INPUT_INDEX_READ",
156         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR,
157         VK_ACCESS_2_INDEX_READ_BIT_KHR,
158         SYNC_INDEX_INPUT_INDEX_READ,
159         SYNC_INDEX_INPUT_INDEX_READ_BIT
160     },
161     {
162         "SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ",
163         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR,
164         VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR,
165         SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ,
166         SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT
167     },
168     {
169         "SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ",
170         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
171         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
172         SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ,
173         SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT
174     },
175     {
176         "SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ",
177         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
178         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
179         SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ,
180         SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT
181     },
182     {
183         "SYNC_VERTEX_SHADER_SHADER_STORAGE_READ",
184         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
185         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
186         SYNC_VERTEX_SHADER_SHADER_STORAGE_READ,
187         SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT
188     },
189     {
190         "SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE",
191         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
192         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
193         SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE,
194         SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT
195     },
196     {
197         "SYNC_VERTEX_SHADER_UNIFORM_READ",
198         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,
199         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
200         SYNC_VERTEX_SHADER_UNIFORM_READ,
201         SYNC_VERTEX_SHADER_UNIFORM_READ_BIT
202     },
203     {
204         "SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ",
205         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
206         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
207         SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ,
208         SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT
209     },
210     {
211         "SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ",
212         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
213         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
214         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ,
215         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT
216     },
217     {
218         "SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ",
219         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
220         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
221         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ,
222         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT
223     },
224     {
225         "SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE",
226         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
227         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
228         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE,
229         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT
230     },
231     {
232         "SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ",
233         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
234         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
235         SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ,
236         SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT
237     },
238     {
239         "SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ",
240         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
241         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
242         SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ,
243         SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT
244     },
245     {
246         "SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ",
247         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
248         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
249         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ,
250         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT
251     },
252     {
253         "SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ",
254         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
255         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
256         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ,
257         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT
258     },
259     {
260         "SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE",
261         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
262         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
263         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE,
264         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT
265     },
266     {
267         "SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ",
268         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
269         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
270         SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ,
271         SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT
272     },
273     {
274         "SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ",
275         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
276         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
277         SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ,
278         SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT
279     },
280     {
281         "SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ",
282         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
283         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
284         SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ,
285         SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT
286     },
287     {
288         "SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ",
289         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
290         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
291         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ,
292         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT
293     },
294     {
295         "SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE",
296         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
297         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
298         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE,
299         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT
300     },
301     {
302         "SYNC_GEOMETRY_SHADER_UNIFORM_READ",
303         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
304         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
305         SYNC_GEOMETRY_SHADER_UNIFORM_READ,
306         SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT
307     },
308     {
309         "SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT",
310         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
311         VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
312         SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT,
313         SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
314     },
315     {
316         "SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT",
317         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
318         VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,
319         SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT,
320         SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
321     },
322     {
323         "SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT",
324         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
325         VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,
326         SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT,
327         SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
328     },
329     {
330         "SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT",
331         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT,
332         VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,
333         SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT,
334         SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
335     },
336     {
337         "SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ",
338         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
339         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
340         SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ,
341         SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT
342     },
343     {
344         "SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ",
345         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
346         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
347         SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ,
348         SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT
349     },
350     {
351         "SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ",
352         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
353         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
354         SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ,
355         SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT
356     },
357     {
358         "SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE",
359         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
360         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
361         SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE,
362         SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT
363     },
364     {
365         "SYNC_TASK_SHADER_NV_UNIFORM_READ",
366         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
367         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
368         SYNC_TASK_SHADER_NV_UNIFORM_READ,
369         SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT
370     },
371     {
372         "SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ",
373         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
374         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
375         SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ,
376         SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT
377     },
378     {
379         "SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ",
380         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
381         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
382         SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ,
383         SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT
384     },
385     {
386         "SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ",
387         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
388         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
389         SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ,
390         SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT
391     },
392     {
393         "SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE",
394         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
395         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
396         SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE,
397         SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT
398     },
399     {
400         "SYNC_MESH_SHADER_NV_UNIFORM_READ",
401         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
402         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
403         SYNC_MESH_SHADER_NV_UNIFORM_READ,
404         SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT
405     },
406     {
407         "SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ",
408         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
409         VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
410         SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ,
411         SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT
412     },
413     {
414         "SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ",
415         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR,
416         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR,
417         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ,
418         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
419     },
420     {
421         "SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE",
422         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR,
423         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR,
424         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE,
425         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
426     },
427     {
428         "SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ",
429         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
430         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
431         SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ,
432         SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT
433     },
434     {
435         "SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ",
436         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
437         VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR,
438         SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ,
439         SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT
440     },
441     {
442         "SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ",
443         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
444         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
445         SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ,
446         SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT
447     },
448     {
449         "SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ",
450         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
451         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
452         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ,
453         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT
454     },
455     {
456         "SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE",
457         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
458         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
459         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE,
460         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT
461     },
462     {
463         "SYNC_FRAGMENT_SHADER_UNIFORM_READ",
464         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
465         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
466         SYNC_FRAGMENT_SHADER_UNIFORM_READ,
467         SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT
468     },
469     {
470         "SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ",
471         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR,
472         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR,
473         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ,
474         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
475     },
476     {
477         "SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE",
478         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR,
479         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR,
480         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE,
481         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
482     },
483     {
484         "SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ",
485         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
486         VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR,
487         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ,
488         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT
489     },
490     {
491         "SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT",
492         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
493         VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,
494         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT,
495         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
496     },
497     {
498         "SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE",
499         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
500         VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,
501         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE,
502         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT
503     },
504     {
505         "SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ",
506         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
507         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
508         SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ,
509         SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT
510     },
511     {
512         "SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ",
513         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
514         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
515         SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ,
516         SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT
517     },
518     {
519         "SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ",
520         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
521         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
522         SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ,
523         SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT
524     },
525     {
526         "SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE",
527         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
528         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
529         SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE,
530         SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT
531     },
532     {
533         "SYNC_COMPUTE_SHADER_UNIFORM_READ",
534         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,
535         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
536         SYNC_COMPUTE_SHADER_UNIFORM_READ,
537         SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT
538     },
539     {
540         "SYNC_COPY_TRANSFER_READ",
541         VK_PIPELINE_STAGE_2_COPY_BIT_KHR,
542         VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
543         SYNC_COPY_TRANSFER_READ,
544         SYNC_COPY_TRANSFER_READ_BIT
545     },
546     {
547         "SYNC_COPY_TRANSFER_WRITE",
548         VK_PIPELINE_STAGE_2_COPY_BIT_KHR,
549         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
550         SYNC_COPY_TRANSFER_WRITE,
551         SYNC_COPY_TRANSFER_WRITE_BIT
552     },
553     {
554         "SYNC_RESOLVE_TRANSFER_READ",
555         VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR,
556         VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
557         SYNC_RESOLVE_TRANSFER_READ,
558         SYNC_RESOLVE_TRANSFER_READ_BIT
559     },
560     {
561         "SYNC_RESOLVE_TRANSFER_WRITE",
562         VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR,
563         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
564         SYNC_RESOLVE_TRANSFER_WRITE,
565         SYNC_RESOLVE_TRANSFER_WRITE_BIT
566     },
567     {
568         "SYNC_BLIT_TRANSFER_READ",
569         VK_PIPELINE_STAGE_2_BLIT_BIT_KHR,
570         VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
571         SYNC_BLIT_TRANSFER_READ,
572         SYNC_BLIT_TRANSFER_READ_BIT
573     },
574     {
575         "SYNC_BLIT_TRANSFER_WRITE",
576         VK_PIPELINE_STAGE_2_BLIT_BIT_KHR,
577         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
578         SYNC_BLIT_TRANSFER_WRITE,
579         SYNC_BLIT_TRANSFER_WRITE_BIT
580     },
581     {
582         "SYNC_CLEAR_TRANSFER_WRITE",
583         VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR,
584         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
585         SYNC_CLEAR_TRANSFER_WRITE,
586         SYNC_CLEAR_TRANSFER_WRITE_BIT
587     },
588     {
589         "SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV",
590         VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV,
591         VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV,
592         SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV,
593         SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV
594     },
595     {
596         "SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV",
597         VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV,
598         VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV,
599         SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV,
600         SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV
601     },
602     {
603         "SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT",
604         VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT,
605         VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT,
606         SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT,
607         SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT
608     },
609     {
610         "SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ",
611         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
612         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
613         SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ,
614         SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT
615     },
616     {
617         "SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ",
618         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
619         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
620         SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ,
621         SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT
622     },
623     {
624         "SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ",
625         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
626         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
627         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ,
628         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT
629     },
630     {
631         "SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE",
632         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
633         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
634         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE,
635         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT
636     },
637     {
638         "SYNC_RAY_TRACING_SHADER_UNIFORM_READ",
639         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
640         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
641         SYNC_RAY_TRACING_SHADER_UNIFORM_READ,
642         SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT
643     },
644     {
645         "SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ",
646         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
647         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
648         SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ,
649         SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ_BIT
650     },
651     {
652         "SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE",
653         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
654         VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
655         SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE,
656         SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT
657     },
658     {
659         "SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ",
660         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
661         VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR,
662         SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ,
663         SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT
664     },
665     {
666         "SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ",
667         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
668         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
669         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ,
670         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT
671     },
672     {
673         "SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ",
674         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
675         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
676         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ,
677         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT
678     },
679     {
680         "SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ",
681         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
682         VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
683         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ,
684         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT
685     },
686     {
687         "SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE",
688         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
689         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
690         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE,
691         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT
692     },
693     {
694         "SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ",
695         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
696         VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
697         SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ,
698         SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT
699     },
700     {
701         "SYNC_VIDEO_DECODE_VIDEO_DECODE_READ",
702         VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR,
703         VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR,
704         SYNC_VIDEO_DECODE_VIDEO_DECODE_READ,
705         SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT
706     },
707     {
708         "SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE",
709         VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR,
710         VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR,
711         SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE,
712         SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT
713     },
714     {
715         "SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ",
716         VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR,
717         VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR,
718         SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ,
719         SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT
720     },
721     {
722         "SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE",
723         VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR,
724         VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR,
725         SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE,
726         SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT
727     },
728     {
729         "SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ",
730         VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI,
731         VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR,
732         SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ,
733         SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT
734     },
735     {
736         "SYNC_HOST_HOST_READ",
737         VK_PIPELINE_STAGE_2_HOST_BIT_KHR,
738         VK_ACCESS_2_HOST_READ_BIT_KHR,
739         SYNC_HOST_HOST_READ,
740         SYNC_HOST_HOST_READ_BIT
741     },
742     {
743         "SYNC_HOST_HOST_WRITE",
744         VK_PIPELINE_STAGE_2_HOST_BIT_KHR,
745         VK_ACCESS_2_HOST_WRITE_BIT_KHR,
746         SYNC_HOST_HOST_WRITE,
747         SYNC_HOST_HOST_WRITE_BIT
748     },
749     {
750         "SYNC_IMAGE_LAYOUT_TRANSITION",
751         VK_PIPELINE_STAGE_2_NONE_KHR,
752         VK_ACCESS_2_NONE_KHR,
753         SYNC_IMAGE_LAYOUT_TRANSITION,
754         SYNC_IMAGE_LAYOUT_TRANSITION_BIT
755     },
756     {
757         "SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER",
758         VK_PIPELINE_STAGE_2_NONE_KHR,
759         VK_ACCESS_2_NONE_KHR,
760         SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER,
761         SYNC_QUEUE_FAMILY_OWNERSHIP_TRANSFER_BIT
762     },
763 } };
764 
765 // Constants defining the mask of all read and write stage_access states
766 // Bit order mask of stage_access bit for each stage
767 const std::map<VkPipelineStageFlags2KHR, SyncStageAccessFlags> syncStageAccessMaskByStageBit {
768     { VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, (
769         SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT |
770         SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
771     )},
772     { VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
773         SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
774         SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT |
775         SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT |
776         SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT |
777         SYNC_VERTEX_SHADER_UNIFORM_READ_BIT
778     )},
779     { VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
780         SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
781         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT |
782         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT |
783         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT |
784         SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT
785     )},
786     { VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
787         SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
788         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT |
789         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT |
790         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT |
791         SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT
792     )},
793     { VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
794         SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
795         SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT |
796         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT |
797         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT |
798         SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT
799     )},
800     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
801         SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
802         SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT |
803         SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT |
804         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT |
805         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT |
806         SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT
807     )},
808     { VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
809         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
810         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
811     )},
812     { VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
813         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
814         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
815     )},
816     { VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, (
817         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT |
818         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT |
819         SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT
820     )},
821     { VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, (
822         SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
823         SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT |
824         SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT |
825         SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT |
826         SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT
827     )},
828     { VK_PIPELINE_STAGE_2_HOST_BIT_KHR, (
829         SYNC_HOST_HOST_READ_BIT |
830         SYNC_HOST_HOST_WRITE_BIT
831     )},
832     { VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, (
833         SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV |
834         SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV
835     )},
836     { VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT},
837     { VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
838         SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
839         SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT |
840         SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT |
841         SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
842         SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT
843     )},
844     { VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
845         SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
846         SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT |
847         SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT |
848         SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
849         SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT
850     )},
851     { VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, (
852         SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
853         SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT |
854         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT |
855         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT |
856         SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT
857     )},
858     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT},
859     { VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT},
860     { VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
861         SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT |
862         SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT |
863         SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
864     )},
865     { VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, (
866         SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ_BIT |
867         SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT |
868         SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT |
869         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT |
870         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT |
871         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT |
872         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT |
873         SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT
874     )},
875     { VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, (
876         SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT |
877         SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT
878     )},
879     { VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, (
880         SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT |
881         SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT
882     )},
883     { VK_PIPELINE_STAGE_2_COPY_BIT_KHR, (
884         SYNC_COPY_TRANSFER_READ_BIT |
885         SYNC_COPY_TRANSFER_WRITE_BIT
886     )},
887     { VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, (
888         SYNC_RESOLVE_TRANSFER_READ_BIT |
889         SYNC_RESOLVE_TRANSFER_WRITE_BIT
890     )},
891     { VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, (
892         SYNC_BLIT_TRANSFER_READ_BIT |
893         SYNC_BLIT_TRANSFER_WRITE_BIT
894     )},
895     { VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, SYNC_CLEAR_TRANSFER_WRITE_BIT},
896     { VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, SYNC_INDEX_INPUT_INDEX_READ_BIT},
897     { VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT},
898     { VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT},
899 };
900 
901 // Bit order mask of stage_access bit for each access
902 const std::map<VkAccessFlags2KHR, SyncStageAccessFlags> syncStageAccessMaskByAccessBit {
903     { VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, (
904         SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ_BIT |
905         SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ_BIT
906     )},
907     { VK_ACCESS_2_INDEX_READ_BIT_KHR, SYNC_INDEX_INPUT_INDEX_READ_BIT},
908     { VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ_BIT},
909     { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, (
910         SYNC_VERTEX_SHADER_UNIFORM_READ_BIT |
911         SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ_BIT |
912         SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ_BIT |
913         SYNC_GEOMETRY_SHADER_UNIFORM_READ_BIT |
914         SYNC_TASK_SHADER_NV_UNIFORM_READ_BIT |
915         SYNC_MESH_SHADER_NV_UNIFORM_READ_BIT |
916         SYNC_FRAGMENT_SHADER_UNIFORM_READ_BIT |
917         SYNC_COMPUTE_SHADER_UNIFORM_READ_BIT |
918         SYNC_RAY_TRACING_SHADER_UNIFORM_READ_BIT |
919         SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ_BIT
920     )},
921     { VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, (
922         SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ_BIT |
923         SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ_BIT
924     )},
925     { VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_BIT},
926     { VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE_BIT},
927     { VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, (
928         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
929         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
930     )},
931     { VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, (
932         SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
933         SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
934     )},
935     { VK_ACCESS_2_TRANSFER_READ_BIT_KHR, (
936         SYNC_COPY_TRANSFER_READ_BIT |
937         SYNC_RESOLVE_TRANSFER_READ_BIT |
938         SYNC_BLIT_TRANSFER_READ_BIT |
939         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ_BIT
940     )},
941     { VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, (
942         SYNC_COPY_TRANSFER_WRITE_BIT |
943         SYNC_RESOLVE_TRANSFER_WRITE_BIT |
944         SYNC_BLIT_TRANSFER_WRITE_BIT |
945         SYNC_CLEAR_TRANSFER_WRITE_BIT |
946         SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE_BIT
947     )},
948     { VK_ACCESS_2_HOST_READ_BIT_KHR, SYNC_HOST_HOST_READ_BIT},
949     { VK_ACCESS_2_HOST_WRITE_BIT_KHR, SYNC_HOST_HOST_WRITE_BIT},
950     { VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_READ_BIT_NV},
951     { VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, SYNC_COMMAND_PREPROCESS_BIT_NV_COMMAND_PREPROCESS_WRITE_BIT_NV},
952     { VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT},
953     { VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, SYNC_CONDITIONAL_RENDERING_BIT_EXT_CONDITIONAL_RENDERING_READ_BIT_EXT},
954     { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, (
955         SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
956         SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
957         SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
958         SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
959         SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
960         SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ_BIT |
961         SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
962         SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
963         SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ_BIT |
964         SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ_BIT
965     )},
966     { VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE_BIT},
967     { VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT},
968     { VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_BIT_EXT_FRAGMENT_DENSITY_MAP_READ_BIT_EXT},
969     { VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_WRITE_BIT_EXT},
970     { VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, (
971         SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT |
972         SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
973     )},
974     { VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_BIT_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT},
975     { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, (
976         SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ_BIT |
977         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ_BIT |
978         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ_BIT |
979         SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ_BIT |
980         SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ_BIT |
981         SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ_BIT |
982         SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ_BIT |
983         SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ_BIT |
984         SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ_BIT |
985         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ_BIT
986     )},
987     { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, (
988         SYNC_VERTEX_SHADER_SHADER_STORAGE_READ_BIT |
989         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ_BIT |
990         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ_BIT |
991         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ_BIT |
992         SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ_BIT |
993         SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ_BIT |
994         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ_BIT |
995         SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ_BIT |
996         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ_BIT |
997         SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ_BIT
998     )},
999     { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, (
1000         SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE_BIT |
1001         SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE_BIT |
1002         SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE_BIT |
1003         SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE_BIT |
1004         SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
1005         SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE_BIT |
1006         SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE_BIT |
1007         SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE_BIT |
1008         SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE_BIT
1009     )},
1010     { VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_READ_BIT},
1011     { VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE_BIT},
1012     { VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ_BIT},
1013     { VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE_BIT},
1014     { VK_ACCESS_2_MEMORY_READ_BIT_KHR, syncStageAccessReadMask},
1015     { VK_ACCESS_2_MEMORY_WRITE_BIT_KHR, syncStageAccessWriteMask},
1016 };
1017 
1018 // stage_access index for each stage and access
1019 const std::map<VkPipelineStageFlags2KHR, std::map<VkAccessFlags2KHR, SyncStageAccessIndex>> syncStageAccessIndexByStageAndAccess {
1020     { VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, {
1021         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_READ },
1022         { VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_ACCELERATION_STRUCTURE_WRITE },
1023         { VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_INDIRECT_COMMAND_READ },
1024         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_SAMPLED_READ },
1025         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_STORAGE_READ },
1026         { VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_READ },
1027         { VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_TRANSFER_WRITE },
1028         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_ACCELERATION_STRUCTURE_BUILD_UNIFORM_READ }
1029     } },
1030     { VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, {
1031         { VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_BLIT_TRANSFER_READ },
1032         { VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_BLIT_TRANSFER_WRITE }
1033     } },
1034     { VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, {
1035         { VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_CLEAR_TRANSFER_WRITE }
1036     } },
1037     { VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, {
1038         { VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ },
1039         { VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_READ_NONCOHERENT_EXT },
1040         { VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR, SYNC_COLOR_ATTACHMENT_OUTPUT_COLOR_ATTACHMENT_WRITE }
1041     } },
1042     { VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, {
1043         { VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_READ_NV },
1044         { VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, SYNC_COMMAND_PREPROCESS_NV_COMMAND_PREPROCESS_WRITE_NV }
1045     } },
1046     { VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, {
1047         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_COMPUTE_SHADER_ACCELERATION_STRUCTURE_READ },
1048         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ },
1049         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ },
1050         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE },
1051         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_COMPUTE_SHADER_UNIFORM_READ }
1052     } },
1053     { VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, {
1054         { VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, SYNC_CONDITIONAL_RENDERING_EXT_CONDITIONAL_RENDERING_READ_EXT }
1055     } },
1056     { VK_PIPELINE_STAGE_2_COPY_BIT_KHR, {
1057         { VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_COPY_TRANSFER_READ },
1058         { VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_COPY_TRANSFER_WRITE }
1059     } },
1060     { VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, {
1061         { VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, SYNC_DRAW_INDIRECT_INDIRECT_COMMAND_READ },
1062         { VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_DRAW_INDIRECT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT }
1063     } },
1064     { VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, {
1065         { VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
1066         { VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, SYNC_EARLY_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE }
1067     } },
1068     { VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, {
1069         { VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, SYNC_FRAGMENT_DENSITY_PROCESS_EXT_FRAGMENT_DENSITY_MAP_READ_EXT }
1070     } },
1071     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, {
1072         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_ACCELERATION_STRUCTURE_READ },
1073         { VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_INPUT_ATTACHMENT_READ },
1074         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ },
1075         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ },
1076         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE },
1077         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_FRAGMENT_SHADER_UNIFORM_READ }
1078     } },
1079     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, {
1080         { VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, SYNC_FRAGMENT_SHADING_RATE_ATTACHMENT_FRAGMENT_SHADING_RATE_ATTACHMENT_READ }
1081     } },
1082     { VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, {
1083         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_ACCELERATION_STRUCTURE_READ },
1084         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ },
1085         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ },
1086         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE },
1087         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_GEOMETRY_SHADER_UNIFORM_READ }
1088     } },
1089     { VK_PIPELINE_STAGE_2_HOST_BIT_KHR, {
1090         { VK_ACCESS_2_HOST_READ_BIT_KHR, SYNC_HOST_HOST_READ },
1091         { VK_ACCESS_2_HOST_WRITE_BIT_KHR, SYNC_HOST_HOST_WRITE }
1092     } },
1093     { VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, {
1094         { VK_ACCESS_2_INDEX_READ_BIT_KHR, SYNC_INDEX_INPUT_INDEX_READ }
1095     } },
1096     { VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, {
1097         { VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_READ },
1098         { VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, SYNC_LATE_FRAGMENT_TESTS_DEPTH_STENCIL_ATTACHMENT_WRITE }
1099     } },
1100     { VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, {
1101         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_MESH_SHADER_NV_ACCELERATION_STRUCTURE_READ },
1102         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_MESH_SHADER_NV_SHADER_SAMPLED_READ },
1103         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_MESH_SHADER_NV_SHADER_STORAGE_READ },
1104         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_MESH_SHADER_NV_SHADER_STORAGE_WRITE },
1105         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_MESH_SHADER_NV_UNIFORM_READ }
1106     } },
1107     { VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, {
1108         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_ACCELERATION_STRUCTURE_READ },
1109         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_SHADER_SAMPLED_READ },
1110         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_READ },
1111         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_RAY_TRACING_SHADER_SHADER_STORAGE_WRITE },
1112         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_RAY_TRACING_SHADER_UNIFORM_READ }
1113     } },
1114     { VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, {
1115         { VK_ACCESS_2_TRANSFER_READ_BIT_KHR, SYNC_RESOLVE_TRANSFER_READ },
1116         { VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, SYNC_RESOLVE_TRANSFER_WRITE }
1117     } },
1118     { VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, {
1119         { VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, SYNC_SUBPASS_SHADING_HUAWEI_INPUT_ATTACHMENT_READ }
1120     } },
1121     { VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, {
1122         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_TASK_SHADER_NV_ACCELERATION_STRUCTURE_READ },
1123         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_TASK_SHADER_NV_SHADER_SAMPLED_READ },
1124         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_TASK_SHADER_NV_SHADER_STORAGE_READ },
1125         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_TASK_SHADER_NV_SHADER_STORAGE_WRITE },
1126         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_TASK_SHADER_NV_UNIFORM_READ }
1127     } },
1128     { VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, {
1129         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_ACCELERATION_STRUCTURE_READ },
1130         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_SAMPLED_READ },
1131         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_READ },
1132         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_SHADER_STORAGE_WRITE },
1133         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_TESSELLATION_CONTROL_SHADER_UNIFORM_READ }
1134     } },
1135     { VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, {
1136         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_ACCELERATION_STRUCTURE_READ },
1137         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_SAMPLED_READ },
1138         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_READ },
1139         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_SHADER_STORAGE_WRITE },
1140         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_TESSELLATION_EVALUATION_SHADER_UNIFORM_READ }
1141     } },
1142     { VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, {
1143         { VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_READ_EXT },
1144         { VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT },
1145         { VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, SYNC_TRANSFORM_FEEDBACK_EXT_TRANSFORM_FEEDBACK_WRITE_EXT }
1146     } },
1147     { VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, {
1148         { VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR, SYNC_VERTEX_ATTRIBUTE_INPUT_VERTEX_ATTRIBUTE_READ }
1149     } },
1150     { VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, {
1151         { VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, SYNC_VERTEX_SHADER_ACCELERATION_STRUCTURE_READ },
1152         { VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ },
1153         { VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, SYNC_VERTEX_SHADER_SHADER_STORAGE_READ },
1154         { VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE },
1155         { VK_ACCESS_2_UNIFORM_READ_BIT_KHR, SYNC_VERTEX_SHADER_UNIFORM_READ }
1156     } },
1157     { VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, {
1158         { VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_READ },
1159         { VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR, SYNC_VIDEO_DECODE_VIDEO_DECODE_WRITE }
1160     } },
1161     { VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, {
1162         { VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_READ },
1163         { VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR, SYNC_VIDEO_ENCODE_VIDEO_ENCODE_WRITE }
1164     } },
1165 };
1166 
1167 // Direct VkPipelineStageFlags to valid VkAccessFlags lookup table
1168 const std::map<VkPipelineStageFlags2KHR, VkAccessFlags2KHR> syncDirectStageToAccessMask {
1169     { VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, (
1170         VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR |
1171         VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
1172     )},
1173     { VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
1174         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1175         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1176         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1177         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1178         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1179     )},
1180     { VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
1181         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1182         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1183         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1184         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1185         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1186     )},
1187     { VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
1188         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1189         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1190         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1191         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1192         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1193     )},
1194     { VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
1195         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1196         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1197         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1198         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1199         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1200     )},
1201     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
1202         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1203         VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR |
1204         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1205         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1206         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1207         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1208     )},
1209     { VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
1210         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR |
1211         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR
1212     )},
1213     { VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
1214         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR |
1215         VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR
1216     )},
1217     { VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, (
1218         VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR |
1219         VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT |
1220         VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR
1221     )},
1222     { VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, (
1223         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1224         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1225         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1226         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1227         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1228     )},
1229     { VK_PIPELINE_STAGE_2_HOST_BIT_KHR, (
1230         VK_ACCESS_2_HOST_READ_BIT_KHR |
1231         VK_ACCESS_2_HOST_WRITE_BIT_KHR
1232     )},
1233     { VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, (
1234         VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV |
1235         VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
1236     )},
1237     { VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT},
1238     { VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
1239         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1240         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1241         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1242         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1243         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1244     )},
1245     { VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
1246         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1247         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1248         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1249         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1250         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1251     )},
1252     { VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, (
1253         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1254         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1255         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1256         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR |
1257         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1258     )},
1259     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR},
1260     { VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT},
1261     { VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
1262         VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT |
1263         VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT |
1264         VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
1265     )},
1266     { VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, (
1267         VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR |
1268         VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR |
1269         VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR |
1270         VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR |
1271         VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR |
1272         VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
1273         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR |
1274         VK_ACCESS_2_UNIFORM_READ_BIT_KHR
1275     )},
1276     { VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, (
1277         VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR |
1278         VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
1279     )},
1280     { VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, (
1281         VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR |
1282         VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
1283     )},
1284     { VK_PIPELINE_STAGE_2_COPY_BIT_KHR, (
1285         VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
1286         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR
1287     )},
1288     { VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, (
1289         VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
1290         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR
1291     )},
1292     { VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, (
1293         VK_ACCESS_2_TRANSFER_READ_BIT_KHR |
1294         VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR
1295     )},
1296     { VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR},
1297     { VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, VK_ACCESS_2_INDEX_READ_BIT_KHR},
1298     { VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR},
1299     { VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR},
1300 };
1301 
1302 // Pipeline stages corresponding to VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR for each VkQueueFlagBits
1303 const std::map<VkQueueFlagBits, VkPipelineStageFlags2KHR> syncAllCommandStagesByQueueFlags {
1304     { VK_QUEUE_COMPUTE_BIT, (
1305         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1306         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1307         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
1308         VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
1309         VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
1310         VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
1311         VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
1312         VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
1313         VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
1314         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
1315         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
1316         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
1317         VK_PIPELINE_STAGE_2_HOST_BIT_KHR
1318     )},
1319     { VK_QUEUE_GRAPHICS_BIT, (
1320         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1321         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1322         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1323         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1324         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1325         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1326         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1327         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1328         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1329         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
1330         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1331         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1332         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1333         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1334         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1335         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1336         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1337         VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
1338         VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
1339         VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
1340         VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
1341         VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
1342         VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
1343         VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI |
1344         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
1345         VK_PIPELINE_STAGE_2_HOST_BIT_KHR
1346     )},
1347     { VK_QUEUE_TRANSFER_BIT, (
1348         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1349         VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
1350         VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
1351         VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
1352         VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
1353         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
1354         VK_PIPELINE_STAGE_2_HOST_BIT_KHR
1355     )},
1356     { VK_QUEUE_VIDEO_DECODE_BIT_KHR, (
1357         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1358         VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
1359         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
1360         VK_PIPELINE_STAGE_2_HOST_BIT_KHR
1361     )},
1362     { VK_QUEUE_VIDEO_ENCODE_BIT_KHR, (
1363         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1364         VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
1365         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR |
1366         VK_PIPELINE_STAGE_2_HOST_BIT_KHR
1367     )},
1368 };
1369 
1370 // Masks of logically earlier stage flags for a given stage flag
1371 const std::map<VkPipelineStageFlags2KHR, VkPipelineStageFlags2KHR> syncLogicallyEarlierStages {
1372     { VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1373     { VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1374     { VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, (
1375         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1376         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
1377     )},
1378     { VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, (
1379         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1380         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1381         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR
1382     )},
1383     { VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
1384         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1385         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1386         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1387         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR
1388     )},
1389     { VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
1390         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1391         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1392         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1393         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1394         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR
1395     )},
1396     { VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
1397         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1398         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1399         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1400         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1401         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1402         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR
1403     )},
1404     { VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
1405         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1406         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1407         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1408         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1409         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1410         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1411         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR
1412     )},
1413     { VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
1414         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1415         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1416         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1417         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1418         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1419         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1420         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1421         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR
1422     )},
1423     { VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1424     { VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
1425         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1426         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
1427     )},
1428     { VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
1429         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1430         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1431         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
1432     )},
1433     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, (
1434         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1435         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1436         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1437         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1438         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1439         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1440         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1441         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1442         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1443         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1444         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
1445     )},
1446     { VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
1447         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1448         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1449         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1450         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1451         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1452         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1453         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1454         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1455         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1456         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
1457         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1458         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1459         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
1460     )},
1461     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
1462         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1463         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1464         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1465         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1466         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1467         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1468         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1469         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1470         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1471         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
1472         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1473         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1474         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1475         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR
1476     )},
1477     { VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
1478         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1479         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1480         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1481         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1482         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1483         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1484         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1485         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1486         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1487         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
1488         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1489         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1490         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1491         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1492         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR
1493     )},
1494     { VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, (
1495         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1496         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1497         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1498         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1499         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1500         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1501         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1502         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1503         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1504         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
1505         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1506         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1507         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1508         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1509         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1510         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR
1511     )},
1512     { VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, (
1513         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1514         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
1515     )},
1516     { VK_PIPELINE_STAGE_2_COPY_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1517     { VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1518     { VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1519     { VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1520     { VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1521     { VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1522     { VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, (
1523         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1524         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
1525     )},
1526     { VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1527     { VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1528     { VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1529     { VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR},
1530     { VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, (
1531         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1532         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1533         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1534         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1535         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1536         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1537         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1538         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1539         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1540         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
1541         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1542         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1543         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1544         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1545         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1546         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1547         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1548         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
1549         VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
1550         VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
1551         VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
1552         VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
1553         VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
1554         VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
1555         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
1556         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
1557         VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
1558         VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
1559         VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI |
1560         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1561     )},
1562 };
1563 
1564 // Masks of logically later stage flags for a given stage flag
1565 const std::map<VkPipelineStageFlags2KHR, VkPipelineStageFlags2KHR> syncLogicallyLaterStages {
1566     { VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, (
1567         VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR |
1568         VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR |
1569         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1570         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1571         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1572         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1573         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1574         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1575         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1576         VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
1577         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1578         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1579         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1580         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1581         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1582         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1583         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1584         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
1585         VK_PIPELINE_STAGE_2_COPY_BIT_KHR |
1586         VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR |
1587         VK_PIPELINE_STAGE_2_BLIT_BIT_KHR |
1588         VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR |
1589         VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV |
1590         VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT |
1591         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
1592         VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
1593         VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
1594         VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
1595         VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI |
1596         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1597     )},
1598     { VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, (
1599         VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR |
1600         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1601         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1602         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1603         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1604         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1605         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1606         VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV |
1607         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1608         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1609         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1610         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1611         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1612         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1613         VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR |
1614         VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR |
1615         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1616     )},
1617     { VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, (
1618         VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR |
1619         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1620         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1621         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1622         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1623         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1624         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1625         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1626         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1627         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1628         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1629         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1630     )},
1631     { VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, (
1632         VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR |
1633         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1634         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1635         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1636         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1637         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1638         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1639         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1640         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1641         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1642         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1643     )},
1644     { VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, (
1645         VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR |
1646         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1647         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1648         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1649         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1650         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1651         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1652         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1653         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1654         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1655     )},
1656     { VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, (
1657         VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR |
1658         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1659         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1660         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1661         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1662         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1663         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1664         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1665         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1666     )},
1667     { VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, (
1668         VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR |
1669         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1670         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1671         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1672         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1673         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1674         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1675         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1676     )},
1677     { VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, (
1678         VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT |
1679         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1680         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1681         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1682         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1683         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1684         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1685     )},
1686     { VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, (
1687         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1688         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1689         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1690         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1691         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1692         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1693     )},
1694     { VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, (
1695         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1696         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1697         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1698         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1699         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1700     )},
1701     { VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, (
1702         VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV |
1703         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1704         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1705         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1706         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1707         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1708         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1709     )},
1710     { VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, (
1711         VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
1712         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1713         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1714         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1715         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1716         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1717     )},
1718     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, (
1719         VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR |
1720         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1721         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1722         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1723         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1724     )},
1725     { VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, (
1726         VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR |
1727         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1728         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1729         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1730     )},
1731     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, (
1732         VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR |
1733         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1734         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1735     )},
1736     { VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, (
1737         VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR |
1738         VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
1739     )},
1740     { VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1741     { VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1742     { VK_PIPELINE_STAGE_2_COPY_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1743     { VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1744     { VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1745     { VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1746     { VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1747     { VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1748     { VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1749     { VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1750     { VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1751     { VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1752     { VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1753     { VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR},
1754 };
1755 
1756 // Lookup table of stage orderings
1757 const std::map<VkPipelineStageFlags2KHR, int> syncStageOrder {
1758     { VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, 0},
1759     { VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, 1},
1760     { VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, 2},
1761     { VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, 3},
1762     { VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, 4},
1763     { VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, 5},
1764     { VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, 6},
1765     { VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, 7},
1766     { VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, 8},
1767     { VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, 9},
1768     { VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, 10},
1769     { VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, 11},
1770     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, 12},
1771     { VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, 13},
1772     { VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, 14},
1773     { VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, 15},
1774     { VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, 16},
1775     { VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, 17},
1776     { VK_PIPELINE_STAGE_2_COPY_BIT_KHR, 18},
1777     { VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, 19},
1778     { VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, 20},
1779     { VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, 21},
1780     { VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, 22},
1781     { VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, 23},
1782     { VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, 24},
1783     { VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, 25},
1784     { VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, 26},
1785     { VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, 27},
1786     { VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, 28},
1787     { VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, 29},
1788     { VK_PIPELINE_STAGE_2_HOST_BIT_KHR, 30},
1789 };
1790 
1791 const std::map<VkShaderStageFlagBits, SyncShaderStageAccess> syncStageAccessMaskByShaderStage {
1792     {VK_SHADER_STAGE_VERTEX_BIT, {
1793         SYNC_VERTEX_SHADER_SHADER_SAMPLED_READ, SYNC_VERTEX_SHADER_SHADER_STORAGE_READ, SYNC_VERTEX_SHADER_SHADER_STORAGE_WRITE, SYNC_VERTEX_SHADER_UNIFORM_READ}},
1794     {VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, {
1795         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}},
1796     {VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, {
1797         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}},
1798     {VK_SHADER_STAGE_GEOMETRY_BIT, {
1799         SYNC_GEOMETRY_SHADER_SHADER_SAMPLED_READ, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_READ, SYNC_GEOMETRY_SHADER_SHADER_STORAGE_WRITE, SYNC_GEOMETRY_SHADER_UNIFORM_READ}},
1800     {VK_SHADER_STAGE_FRAGMENT_BIT, {
1801         SYNC_FRAGMENT_SHADER_SHADER_SAMPLED_READ, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, SYNC_FRAGMENT_SHADER_SHADER_STORAGE_WRITE, SYNC_FRAGMENT_SHADER_UNIFORM_READ}},
1802     {VK_SHADER_STAGE_COMPUTE_BIT, {
1803         SYNC_COMPUTE_SHADER_SHADER_SAMPLED_READ, SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, SYNC_COMPUTE_SHADER_SHADER_STORAGE_WRITE, SYNC_COMPUTE_SHADER_UNIFORM_READ}},
1804     {VK_SHADER_STAGE_RAYGEN_BIT_KHR, {
1805         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}},
1806     {VK_SHADER_STAGE_ANY_HIT_BIT_KHR, {
1807         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}},
1808     {VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, {
1809         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}},
1810     {VK_SHADER_STAGE_MISS_BIT_KHR, {
1811         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}},
1812     {VK_SHADER_STAGE_INTERSECTION_BIT_KHR, {
1813         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}},
1814     {VK_SHADER_STAGE_CALLABLE_BIT_KHR, {
1815         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}},
1816     {VK_SHADER_STAGE_TASK_BIT_NV, {
1817         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}},
1818     {VK_SHADER_STAGE_MESH_BIT_NV, {
1819         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}},
1820 };
1821