blob: 41d39edb8aa21c08dcd665e1418a334b7640ec9a [file] [log] [blame]
Tony-LunarG4c253372022-01-18 13:51:07 -07001/* Copyright (c) 2021-2022 The Khronos Group Inc.
2 * Copyright (c) 2021-2022 Valve Corporation
3 * Copyright (c) 2021-2022 LunarG, Inc.
4 * Copyright (C) 2021-2022 Google Inc.
Jeremy Gebbene60d4172021-02-02 15:42:15 -07005 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 * Author: Jeremy Gebben <jeremyg@lunarg.com>
19 */
20#include "sync_vuid_maps.h"
21#include "core_error_location.h"
Jeremy Gebben5573a8c2021-06-04 08:55:10 -060022#include "device_state.h"
23#include "core_validation.h"
Jeremy Gebbene60d4172021-02-02 15:42:15 -070024#include <cassert>
25#include <algorithm>
26#include <array>
27#include <vector>
Jeremy Gebbene60d4172021-02-02 15:42:15 -070028
29namespace sync_vuid_maps {
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -070030using core_error::Field;
31using core_error::Func;
32using core_error::Struct;
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070033using core_error::FindVUID;
34using core_error::Key;
35using core_error::Entry;
Jeremy Gebbene60d4172021-02-02 15:42:15 -070036
37const std::map<VkPipelineStageFlags2KHR, std::string> kFeatureNameMap{
38 {VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, "geometryShader"},
39 {VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, "tessellationShader"},
40 {VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, "tessellationShader"},
41 {VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, "conditionalRendering"},
42 {VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, "fragmentDensity"},
43 {VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, "transformFeedback"},
44 {VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, "meshShader"},
45 {VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, "taskShader"},
46 {VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "shadingRate"},
47 {VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, "rayTracing"},
48 {VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, "rayTracing"},
49};
50
Jeremy Gebbene60d4172021-02-02 15:42:15 -070051// commonvalidity/pipeline_stage_common.txt
52// commonvalidity/stage_mask_2_common.txt
53// commonvalidity/stage_mask_common.txt
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070054static const std::map<VkPipelineStageFlags2KHR, std::vector<Entry>> kStageMaskErrors{
Jeremy Gebbene60d4172021-02-02 15:42:15 -070055 {VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070056 {
Tony-LunarG279601c2021-11-16 10:50:51 -070057 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03931"},
58 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03931"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070059 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04092"},
60 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04092"},
Tony-LunarG279601c2021-11-16 10:50:51 -070061 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03931"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070062 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04092"},
63 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04092"},
64 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04092"},
65 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04092"},
Tony-LunarG279601c2021-11-16 10:50:51 -070066 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03931"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070067 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04077"},
Tony-LunarG279601c2021-11-16 10:50:51 -070068 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03931"},
69 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03931"},
70 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03931"},
71 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03931"},
72 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03931"},
sfricke-samsung1ac64842021-09-23 14:11:17 -070073 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04092"},
74 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04092"},
75 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04092"},
76 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04092"},
77 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04092"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070078 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -070079 {VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070080 {
Tony-LunarG279601c2021-11-16 10:50:51 -070081 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03932"},
82 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03932"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070083 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04093"},
84 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04093"},
Tony-LunarG279601c2021-11-16 10:50:51 -070085 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03932"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070086 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04093"},
87 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04093"},
88 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04093"},
89 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04093"},
Tony-LunarG279601c2021-11-16 10:50:51 -070090 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03932"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -070091 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04078"},
Tony-LunarG279601c2021-11-16 10:50:51 -070092 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03932"},
93 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03932"},
94 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03932"},
95 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03932"},
96 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03932"},
sfricke-samsung1ac64842021-09-23 14:11:17 -070097 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04093"},
98 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04093"},
99 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04093"},
100 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04093"},
101 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04093"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700102 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700103 {VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700104 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700105 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-04956"},
106 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-04956"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700107 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04097"},
108 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04097"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700109 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-04956"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700110 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04097"},
111 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04097"},
112 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04097"},
113 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04097"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700114 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-04956"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700115 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04081"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700116 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-04956"},
117 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-04956"},
118 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-04956"},
119 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-04956"},
120 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-04956"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700121 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04097"},
122 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04097"},
123 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04097"},
124 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04097"},
125 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04097"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700126 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700127 {VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700128 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700129 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03929"},
130 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03929"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700131 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04090"},
132 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04090"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700133 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03929"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700134 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04090"},
135 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04090"},
136 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04090"},
137 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04090"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700138 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03929"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700139 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04075"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700140 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03929"},
141 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03929"},
142 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03929"},
143 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03929"},
144 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03929"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700145 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04090"},
146 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04090"},
147 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04090"},
148 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04090"},
149 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04090"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700150 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700151 {VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700152 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700153 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03934"},
154 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03934"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700155 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04095"},
156 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04095"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700157 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03934"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700158 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04095"},
159 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04095"},
160 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04095"},
161 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04095"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700162 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03934"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700163 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04080"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700164 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03934"},
165 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03934"},
166 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03934"},
167 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03934"},
168 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03934"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700169 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04095"},
170 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04095"},
171 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04095"},
172 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04095"},
173 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04095"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700174 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700175 {VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700176 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700177 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03935"},
178 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03935"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700179 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04096"},
180 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04096"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700181 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03935"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700182 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04096"},
183 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04096"},
184 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04096"},
185 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04096"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700186 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03935"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700187 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04080"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700188 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03935"},
189 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03935"},
190 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03935"},
191 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03935"},
192 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03935"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700193 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04096"},
194 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04096"},
195 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04096"},
196 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04096"},
197 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04096"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700198 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700199 {VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700200 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700201 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03930"},
202 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03930"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700203 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04091"},
204 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04091"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700205 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03930"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700206 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04091"},
207 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04091"},
208 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04091"},
209 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04091"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700210 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03930"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700211 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04076"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700212 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03930"},
213 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03930"},
214 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03930"},
215 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03930"},
216 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03930"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700217 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04091"},
218 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04091"},
219 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04091"},
220 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04091"},
221 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04091"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700222 }},
223 {
224 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR,
225 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700226 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03930"},
227 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03930"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700228 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04091"},
229 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04091"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700230 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03930"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700231 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04091"},
232 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04091"},
233 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04091"},
234 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04091"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700235 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03930"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700236 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04076"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700237 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03930"},
238 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03930"},
239 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03930"},
240 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03930"},
241 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03930"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700242 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04091"},
243 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04091"},
244 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04091"},
245 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04091"},
246 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04091"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700247 },
248 },
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700249 {VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700250 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700251 {Key(Struct::VkBufferMemoryBarrier2, Field::dstStageMask), "VUID-VkBufferMemoryBarrier2-dstStageMask-03933"},
252 {Key(Struct::VkBufferMemoryBarrier2, Field::srcStageMask), "VUID-VkBufferMemoryBarrier2-srcStageMask-03933"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700253 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-04094"},
254 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-04094"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700255 {Key(Func::vkCmdResetEvent2, Field::stageMask), "VUID-vkCmdResetEvent2-stageMask-03933"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700256 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-04094"},
257 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-04094"},
258 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-04094"},
259 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-04094"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700260 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03933"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700261 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04079"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700262 {Key(Struct::VkImageMemoryBarrier2, Field::dstStageMask), "VUID-VkImageMemoryBarrier2-dstStageMask-03933"},
263 {Key(Struct::VkImageMemoryBarrier2, Field::srcStageMask), "VUID-VkImageMemoryBarrier2-srcStageMask-03933"},
264 {Key(Struct::VkMemoryBarrier2, Field::dstStageMask), "VUID-VkMemoryBarrier2-dstStageMask-03933"},
265 {Key(Struct::VkMemoryBarrier2, Field::srcStageMask), "VUID-VkMemoryBarrier2-srcStageMask-03933"},
266 {Key(Struct::VkSemaphoreSubmitInfo, Field::stageMask), "VUID-VkSemaphoreSubmitInfo-stageMask-03933"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700267 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-04094"},
268 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-04094"},
269 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-04094"},
270 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-04094"},
271 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-04094"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700272 }},
273 // special case for the NONE stage. This entry omits the synchronization2
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700274 // commands because they shouldn't be called unless synchronization2 is enabled.
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700275 {VK_PIPELINE_STAGE_2_NONE_KHR,
276 {
277 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-03937"},
278 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-03937"},
279 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-03937"},
280 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-03937"},
281 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-03937"},
282 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-03937"},
sfricke-samsungc11844b2021-06-16 09:39:32 -0700283 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04074"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700284 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-VkSubmitInfo-pWaitDstStageMask-03937"},
285 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-VkSubpassDependency-srcStageMask-03937"},
286 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-VkSubpassDependency-dstStageMask-03937"},
287 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-VkSubpassDependency2-srcStageMask-03937"},
288 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-VkSubpassDependency2-dstStageMask-03937"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700289 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700290};
291
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700292const std::string &GetBadFeatureVUID(const Location &loc, VkPipelineStageFlags2KHR bit) {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700293 const auto &result = FindVUID(bit, loc, kStageMaskErrors);
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700294 assert(!result.empty());
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700295 if (result.empty()) {
296 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandle-pipeline-stage-feature");
297 return unhandled;
298 }
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700299 return result;
300}
301
302// commonvalidity/access_mask_2_common.txt
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700303static const std::map<VkAccessFlags2KHR, std::array<Entry, 6>> kAccessMask2Common{
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700304 {VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700305 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700306 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03900"},
307 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03900"},
308 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03900"},
309 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03900"},
310 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03900"},
311 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03900"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700312 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700313 {VK_ACCESS_2_INDEX_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700314 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700315 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03901"},
316 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03901"},
317 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03901"},
318 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03901"},
319 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03901"},
320 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03901"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700321 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700322 {VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700323 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700324 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03902"},
325 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03902"},
326 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03902"},
327 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03902"},
328 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03902"},
329 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03902"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700330 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700331 {VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700332 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700333 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03903"},
334 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03903"},
335 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03903"},
336 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03903"},
337 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03903"},
338 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03903"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700339 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700340 {VK_ACCESS_2_UNIFORM_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700341 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700342 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03904"},
343 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03904"},
344 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03904"},
345 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03904"},
346 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03904"},
347 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03904"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700348 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700349 {VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700350 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700351 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03905"},
352 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03905"},
353 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03905"},
354 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03905"},
355 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03905"},
356 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03905"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700357 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700358 {VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700359 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700360 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03906"},
361 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03906"},
362 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03906"},
363 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03906"},
364 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03906"},
365 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03906"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700366 }}},
Jeremy Gebben1a793b52022-08-09 13:57:55 -0600367 {VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR,
368 {{
369 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "UNASSIGNED-VkMemoryBarrier2-srcAccessMask-SHADER_BINDING_TABLE_READ"},
370 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "UNASSIGNED-VkMemoryBarrier2-dstAccessMask-SHADER_BINDING_TABLE_READ"},
371 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "UNASSIGNED-VkBufferMemoryBarrier2-srcAccessMask-SHADER_BINDING_TABLE_READ"},
372 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "UNASSIGNED-VkBufferMemoryBarrier2-dstAccessMask-SHADER_BINDING_TABLE_READ"},
373 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "UNASSIGNED-VkImageMemoryBarrier2-srcAccessMask-SHADER_BINDING_TABLE_READ"},
374 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "UNASSIGNED-VkImageMemoryBarrier2-dstAccessMask-SHADER_BINDING_TABLE_READ"},
375 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700376 {VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700377 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700378 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03907"},
379 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03907"},
380 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03907"},
381 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03907"},
382 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03907"},
383 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03907"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700384 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700385 {VK_ACCESS_2_SHADER_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700386 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700387 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03908"},
388 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03908"},
389 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03908"},
390 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03908"},
391 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03908"},
392 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03908"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700393 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700394 {VK_ACCESS_2_SHADER_WRITE_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700395 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700396 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03909"},
397 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03909"},
398 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03909"},
399 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03909"},
400 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03909"},
401 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03909"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700402 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700403 {VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700404 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700405 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03910"},
406 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03910"},
407 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03910"},
408 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03910"},
409 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03910"},
410 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03910"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700411 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700412 {VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700413 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700414 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03911"},
415 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03911"},
416 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03911"},
417 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03911"},
418 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03911"},
419 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03911"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700420 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700421 {VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700422 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700423 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03912"},
424 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03912"},
425 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03912"},
426 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03912"},
427 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03912"},
428 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03912"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700429 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700430 {VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700431 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700432 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03913"},
433 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03913"},
434 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03913"},
435 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03913"},
436 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03913"},
437 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03913"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700438 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700439 {VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700440 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700441 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03914"},
442 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03914"},
443 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03914"},
444 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03914"},
445 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03914"},
446 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03914"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700447 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700448 {VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700449 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700450 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03915"},
451 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03915"},
452 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03915"},
453 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03915"},
454 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03915"},
455 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03915"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700456 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700457 {VK_ACCESS_2_HOST_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700458 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700459 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03916"},
460 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03916"},
461 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03916"},
462 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03916"},
463 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03916"},
464 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03916"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700465 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700466 {VK_ACCESS_2_HOST_WRITE_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700467 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700468 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03917"},
469 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03917"},
470 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03917"},
471 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03917"},
472 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03917"},
473 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03917"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700474 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700475 {VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700476 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700477 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03918"},
478 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03918"},
479 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03918"},
480 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03918"},
481 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03918"},
482 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03918"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700483 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700484 {VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700485 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700486 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03919"},
487 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03919"},
488 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03919"},
489 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03919"},
490 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03919"},
491 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03919"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700492 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700493 {VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700494 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700495 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03920"},
496 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03920"},
497 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03920"},
498 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03920"},
499 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03920"},
500 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03920"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700501 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700502 {VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700503 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700504 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-04747"},
505 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-04747"},
506 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-04747"},
507 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-04747"},
508 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-04747"},
509 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-04747"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700510 }}},
Shannon McPherson8b29a082021-03-08 14:44:31 -0700511 {VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700512 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700513 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03920"},
514 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03920"},
515 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03920"},
516 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03920"},
517 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03920"},
518 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03920"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700519 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700520 {VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700521 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700522 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03922"},
523 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03922"},
524 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03922"},
525 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03922"},
526 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03922"},
527 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03922"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700528 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700529 {VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700530 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700531 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03923"},
532 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03923"},
533 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03923"},
534 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03923"},
535 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03923"},
536 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03923"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700537 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700538 {VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700539 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700540 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03924"},
541 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03924"},
542 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03924"},
543 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03924"},
544 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03924"},
545 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03924"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700546 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700547 {VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700548 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700549 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03925"},
550 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03925"},
551 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03925"},
552 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03925"},
553 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03925"},
554 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03925"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700555 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700556 {VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700557 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700558 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03926"},
559 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03926"},
560 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03926"},
561 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03926"},
562 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03926"},
563 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03926"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700564 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700565 {VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700566 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700567 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03927"},
568 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03927"},
569 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03927"},
570 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03927"},
571 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03927"},
572 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03927"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700573 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700574 {VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700575 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700576 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-03928"},
577 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-03928"},
578 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-03928"},
579 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-03928"},
580 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-03928"},
581 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-03928"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700582 }}},
ziga-lunargd63e4e42022-04-20 15:04:50 +0200583 {VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR,
584 {{
585 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-04858"},
586 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-04858"},
587 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-04858"},
588 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-04858"},
589 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-04858"},
590 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-04858"},
591 }}},
592 {VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR,
593 {{
594 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-04859"},
595 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-04859"},
596 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-04859"},
597 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-04859"},
598 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-04859"},
599 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-04859"},
600 }}},
601 {VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR,
602 {{
603 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-04860"},
604 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-04860"},
605 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-04860"},
606 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-04860"},
607 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-04860"},
608 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-04860"},
609 }}},
610 {VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR,
611 {{
612 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-04861"},
613 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-04861"},
614 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-04861"},
615 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-04861"},
616 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-04861"},
617 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-04861"},
618 }}},
619 {VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI,
620 {{
621 {Key(Struct::VkMemoryBarrier2, Field::srcAccessMask), "VUID-VkMemoryBarrier2-srcAccessMask-04994"},
622 {Key(Struct::VkMemoryBarrier2, Field::dstAccessMask), "VUID-VkMemoryBarrier2-dstAccessMask-04994"},
623 {Key(Struct::VkBufferMemoryBarrier2, Field::srcAccessMask), "VUID-VkBufferMemoryBarrier2-srcAccessMask-04994"},
624 {Key(Struct::VkBufferMemoryBarrier2, Field::dstAccessMask), "VUID-VkBufferMemoryBarrier2-dstAccessMask-04994"},
625 {Key(Struct::VkImageMemoryBarrier2, Field::srcAccessMask), "VUID-VkImageMemoryBarrier2-srcAccessMask-04994"},
626 {Key(Struct::VkImageMemoryBarrier2, Field::dstAccessMask), "VUID-VkImageMemoryBarrier2-dstAccessMask-04994"},
627 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700628};
629
630// commonvalidity/fine_sync_commands_common.txt
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700631static const std::vector<Entry> kFineSyncCommon = {
632 {Key(Func::vkCmdPipelineBarrier, Field::srcAccessMask), "VUID-vkCmdPipelineBarrier-srcAccessMask-02815"},
633 {Key(Func::vkCmdPipelineBarrier, Field::dstAccessMask), "VUID-vkCmdPipelineBarrier-dstAccessMask-02816"},
634 {Key(Func::vkCmdWaitEvents, Field::srcAccessMask), "VUID-vkCmdWaitEvents-srcAccessMask-02815"},
635 {Key(Func::vkCmdWaitEvents, Field::dstAccessMask), "VUID-vkCmdWaitEvents-dstAccessMask-02816"},
636 {Key(Struct::VkSubpassDependency, Field::srcAccessMask), "VUID-VkSubpassDependency-srcAccessMask-00868"},
637 {Key(Struct::VkSubpassDependency, Field::dstAccessMask), "VUID-VkSubpassDependency-dstAccessMask-00869"},
638 {Key(Struct::VkSubpassDependency2, Field::srcAccessMask), "VUID-VkSubpassDependency2-srcAccessMask-03088"},
639 {Key(Struct::VkSubpassDependency2, Field::dstAccessMask), "VUID-VkSubpassDependency2-dstAccessMask-03089"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700640};
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700641const std::string &GetBadAccessFlagsVUID(const Location &loc, VkAccessFlags2KHR bit) {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700642 const auto &result = FindVUID(bit, loc, kAccessMask2Common);
643 if (!result.empty()) {
644 return result;
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700645 }
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700646 const auto &result2 = FindVUID(loc, kFineSyncCommon);
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700647 assert(!result2.empty());
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700648 if (result2.empty()) {
649 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandled-bad-access-flags");
650 return unhandled;
651 }
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700652 return result2;
653}
654
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700655static const std::vector<Entry> kQueueCapErrors{
656 {Key(Struct::VkSubmitInfo, Field::pWaitDstStageMask), "VUID-vkQueueSubmit-pWaitDstStageMask-00066"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700657 {Key(Struct::VkSubpassDependency, Field::srcStageMask), "VUID-vkCmdBeginRenderPass-srcStageMask-06451"},
658 {Key(Struct::VkSubpassDependency, Field::dstStageMask), "VUID-vkCmdBeginRenderPass-dstStageMask-06452"},
659 {Key(Func::vkCmdSetEvent, Field::stageMask), "VUID-vkCmdSetEvent-stageMask-06457"},
660 {Key(Func::vkCmdResetEvent, Field::stageMask), "VUID-vkCmdResetEvent-stageMask-06458"},
661 {Key(Func::vkCmdWaitEvents, Field::srcStageMask), "VUID-vkCmdWaitEvents-srcStageMask-06459"},
662 {Key(Func::vkCmdWaitEvents, Field::dstStageMask), "VUID-vkCmdWaitEvents-dstStageMask-06460"},
663 {Key(Func::vkCmdPipelineBarrier, Field::srcStageMask), "VUID-vkCmdPipelineBarrier-srcStageMask-06461"},
664 {Key(Func::vkCmdPipelineBarrier, Field::dstStageMask), "VUID-vkCmdPipelineBarrier-dstStageMask-06462"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700665 {Key(Func::vkCmdWriteTimestamp, Field::pipelineStage), "VUID-vkCmdWriteTimestamp-pipelineStage-04074"},
sfricke-samsung1ac64842021-09-23 14:11:17 -0700666 {Key(Struct::VkSubpassDependency2, Field::srcStageMask), "VUID-vkCmdBeginRenderPass2-srcStageMask-06453"},
667 {Key(Struct::VkSubpassDependency2, Field::dstStageMask), "VUID-vkCmdBeginRenderPass2-dstStageMask-06454"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700668 {Key(Func::vkCmdSetEvent, Field::srcStageMask), "VUID-vkCmdSetEvent2-srcStageMask-03827"},
669 {Key(Func::vkCmdSetEvent, Field::dstStageMask), "VUID-vkCmdSetEvent2-dstStageMask-03828"},
670 {Key(Func::vkCmdPipelineBarrier2, Field::srcStageMask), "VUID-vkCmdPipelineBarrier2-srcStageMask-03849"},
671 {Key(Func::vkCmdPipelineBarrier2, Field::dstStageMask), "VUID-vkCmdPipelineBarrier2-dstStageMask-03850"},
672 {Key(Func::vkCmdWaitEvents2, Field::srcStageMask), "VUID-vkCmdWaitEvents2-srcStageMask-03842"},
673 {Key(Func::vkCmdWaitEvents2, Field::dstStageMask), "VUID-vkCmdWaitEvents2-dstStageMask-03843"},
674 {Key(Func::vkCmdWriteTimestamp2, Field::stage), "VUID-vkCmdWriteTimestamp2-stage-03860"},
675 {Key(Func::vkQueueSubmit2, Field::pSignalSemaphoreInfos, true), "VUID-vkQueueSubmit2-stageMask-03869"},
676 {Key(Func::vkQueueSubmit2, Field::pWaitSemaphoreInfos, true), "VUID-vkQueueSubmit2-stageMask-03870"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700677};
678
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700679const std::string &GetStageQueueCapVUID(const Location &loc, VkPipelineStageFlags2KHR bit) {
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700680 // no per-bit lookups needed
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700681 const auto &result = FindVUID(loc, kQueueCapErrors);
682 if (result.empty()) {
683 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandled-queue-capabilities");
684 return unhandled;
Jeremy Gebbenf3cfb912021-02-26 08:55:13 -0700685 }
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700686 return result;
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700687}
688
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700689static const std::map<QueueError, std::vector<Entry>> kBarrierQueueErrors{
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700690 {QueueError::kSrcOrDstMustBeIgnore,
691 {
692 // this isn't an error for synchronization2, so we don't need the 2KHR versions
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700693 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-synchronization2-03853"},
694 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-synchronization2-03857"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700695 }},
696
697 {QueueError::kSpecialOrIgnoreOnly,
698 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700699 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-buffer-04088"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700700 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-buffer-04088"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700701 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-04071"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700702 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-04071"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700703 }},
704 {QueueError::kSrcAndDstValidOrSpecial,
705 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700706 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-buffer-04089"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700707 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-buffer-04089"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700708 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-04072"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700709 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-04072"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700710 }},
711
712 {QueueError::kSrcAndDestMustBeIgnore,
713 {
714 // this isn't an error for synchronization2, so we don't need the 2KHR versions
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700715 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-synchronization2-03852"},
716 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-synchronization2-03856"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700717 }},
718 {QueueError::kSrcAndDstBothValid,
719 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700720 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-buffer-04086"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700721 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-buffer-04086"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700722 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-04069"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700723 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-04069"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700724 }},
725 {QueueError::kSubmitQueueMustMatchSrcOrDst,
726 {
sfricke-samsung52dbd082021-09-23 11:17:58 -0700727 {Key(Struct::VkImageMemoryBarrier), kVUID_Core_ImageMemoryBarrier_SharingModeExclusiveSameFamily},
Tony-LunarG279601c2021-11-16 10:50:51 -0700728 {Key(Struct::VkImageMemoryBarrier2), kVUID_Core_ImageMemoryBarrier2_SharingModeExclusiveSameFamily},
sfricke-samsung52dbd082021-09-23 11:17:58 -0700729 {Key(Struct::VkBufferMemoryBarrier), kVUID_Core_BufferMemoryBarrier_SharingModeExclusiveSameFamily},
Tony-LunarG279601c2021-11-16 10:50:51 -0700730 {Key(Struct::VkBufferMemoryBarrier2), kVUID_Core_BufferMemoryBarrier2_SharingModeExclusiveSameFamily},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700731 }},
732};
733
734const std::map<QueueError, std::string> kQueueErrorSummary{
735 {QueueError::kSrcOrDstMustBeIgnore, "Source or destination queue family must be ignored."},
736 {QueueError::kSpecialOrIgnoreOnly, "Source or destination queue family must be special or ignored."},
sjfrickee5ac2812022-08-31 14:45:42 +0900737 {QueueError::kSrcAndDstValidOrSpecial, "Source and destination queue family must be valid, ignored, or special."},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700738 {QueueError::kSrcAndDestMustBeIgnore, "Source and destination queue family must both be ignored."},
739 {QueueError::kSrcAndDstBothValid, "Source and destination queue family must both be valid."},
740 {QueueError::kSubmitQueueMustMatchSrcOrDst,
741 "Source or destination queue family must match submit queue family, if not ignored."},
742};
743
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700744const std::string &GetBarrierQueueVUID(const Location &loc, QueueError error) {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700745 const auto &result = FindVUID(error, loc, kBarrierQueueErrors);
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700746 assert(!result.empty());
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700747 if (result.empty()) {
748 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandled-queue-error");
749 return unhandled;
750 }
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700751 return result;
752}
753
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700754static const std::map<VkImageLayout, std::array<Entry, 2>> kImageLayoutErrors{
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700755 {VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700756 {{
757 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01208"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700758 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01208"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700759 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700760 {VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700761 {{
762 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01209"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700763 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01209"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700764 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700765 {VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700766 {{
767 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01210"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700768 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01210"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700769 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700770 {VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700771 {{
772 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01211"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700773 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01211"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700774 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700775 {VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700776 {{
777 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01212"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700778 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01212"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700779 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700780 {VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700781 {{
782 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01213"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700783 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01213"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700784 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700785 {VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700786 {{
787 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-02088"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700788 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-02088"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700789 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700790 {VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700791 {{
792 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01658"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700793 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01658"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700794 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700795 {VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700796 {{
797 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01659"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700798 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01659"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700799 }}},
Tony-LunarG10f54412022-08-12 11:43:40 -0600800 {VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT,
801 {{
802 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07006"},
803 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07006"},
804 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700805};
806
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700807const std::string &GetBadImageLayoutVUID(const Location &loc, VkImageLayout layout) {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700808 const auto &result = FindVUID(layout, loc, kImageLayoutErrors);
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700809 assert(!result.empty());
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700810 if (result.empty()) {
811 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandled-bad-image-layout");
812 return unhandled;
813 }
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700814 return result;
815}
816
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700817static const std::map<BufferError, std::array<Entry, 2>> kBufferErrors{
818 {BufferError::kNoMemory,
819 {{
Tony-LunarG279601c2021-11-16 10:50:51 -0700820 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-buffer-01931"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700821 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-buffer-01931"},
822 }}},
823 {BufferError::kOffsetTooBig,
824 {{
825 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-offset-01187"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700826 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-offset-01187"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700827 }}},
828 {BufferError::kSizeOutOfRange,
829 {{
830 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-size-01189"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700831 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-size-01189"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700832 }}},
833 {BufferError::kSizeZero,
834 {{
835 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-size-01188"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700836 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-size-01188"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700837 }}},
ziga-lunarg8e2506c2022-04-18 20:06:00 +0200838 {BufferError::kQueueFamilyExternal,
839 {{
840 {Key(Struct::VkBufferMemoryBarrier), "VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087"},
841 {Key(Struct::VkBufferMemoryBarrier2), "VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-04087"},
842 }}},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700843};
844
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700845const std::string &GetBufferBarrierVUID(const Location &loc, BufferError error) {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700846 const auto &result = FindVUID(error, loc, kBufferErrors);
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700847 assert(!result.empty());
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700848 if (result.empty()) {
849 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandled-buffer-barrier-error");
850 return unhandled;
851 }
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700852 return result;
853}
854
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700855static const std::map<ImageError, std::vector<Entry>> kImageErrors{
856 {ImageError::kNoMemory,
857 {
858 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-01932"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700859 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-01932"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700860 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700861 {ImageError::kConflictingLayout,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700862 {
863 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-oldLayout-01197"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700864 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-oldLayout-01197"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700865 }},
866 {ImageError::kBadLayout,
867 {
868 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-newLayout-01198"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700869 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-newLayout-01198"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700870 }},
Tony-LunarG6845c182022-09-16 16:01:24 -0600871 {ImageError::kBadAttFeedbackLoopLayout,
872 {
873 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-attachmentFeedbackLoopLayout-07313"},
874 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-attachmentFeedbackLoopLayout-07313"},
875 }},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700876 {ImageError::kNotColorAspect,
877 {
878 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-01671"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700879 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-01671"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700880 }},
881 {ImageError::kNotColorAspectYcbcr,
882 {
883 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-02902"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700884 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-02902"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700885 }},
886 {ImageError::kBadMultiplanarAspect,
887 {
888 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-01672"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700889 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-01672"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700890 }},
891 {ImageError::kBadPlaneCount,
892 {
893 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-01673"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700894 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-01673"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700895 }},
896 {ImageError::kNotDepthOrStencilAspect,
897 {
898 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-03319"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700899 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-03319"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700900 }},
901 {ImageError::kNotDepthAndStencilAspect,
902 {
903 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-01207"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700904 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-01207"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700905 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700906 {ImageError::kNotSeparateDepthAndStencilAspect,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700907 {
908 {Key(Struct::VkImageMemoryBarrier), "VUID-VkImageMemoryBarrier-image-03320"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700909 {Key(Struct::VkImageMemoryBarrier2), "VUID-VkImageMemoryBarrier2-image-03320"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700910 }},
911 {ImageError::kRenderPassMismatch,
912 {
913 {Key(Func::vkCmdPipelineBarrier), "VUID-vkCmdPipelineBarrier-image-04073"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700914 {Key(Func::vkCmdPipelineBarrier2), "VUID-vkCmdPipelineBarrier2-image-04073"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700915 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700916 {ImageError::kRenderPassLayoutChange,
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700917 {
918 {Key(Func::vkCmdPipelineBarrier), "VUID-vkCmdPipelineBarrier-oldLayout-01181"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700919 {Key(Func::vkCmdPipelineBarrier2), "VUID-vkCmdPipelineBarrier2-oldLayout-01181"},
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700920 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700921};
922
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700923const std::string &GetImageBarrierVUID(const Location &loc, ImageError error) {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700924 const auto &result = FindVUID(error, loc, kImageErrors);
925 assert(!result.empty());
926 if (result.empty()) {
927 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandled-image-barrier-error");
928 return unhandled;
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700929 }
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700930 return result;
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700931}
932
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -0700933const SubresourceRangeErrorCodes &GetSubResourceVUIDs(const Location &loc) {
Jeremy Gebbenbb845612021-02-18 18:16:05 -0700934 static const SubresourceRangeErrorCodes v1 {
935 "VUID-VkImageMemoryBarrier-subresourceRange-01486",
936 "VUID-VkImageMemoryBarrier-subresourceRange-01724",
937 "VUID-VkImageMemoryBarrier-subresourceRange-01488",
938 "VUID-VkImageMemoryBarrier-subresourceRange-01725",
939 };
940 static const SubresourceRangeErrorCodes v2 {
Tony-LunarG279601c2021-11-16 10:50:51 -0700941 "VUID-VkImageMemoryBarrier2-subresourceRange-01486",
942 "VUID-VkImageMemoryBarrier2-subresourceRange-01724",
943 "VUID-VkImageMemoryBarrier2-subresourceRange-01488"
944 "VUID-VkImageMemoryBarrier2-subresourceRange-01725",
Jeremy Gebbenbb845612021-02-18 18:16:05 -0700945 };
Tony-LunarG279601c2021-11-16 10:50:51 -0700946 return (loc.structure == Struct::VkImageMemoryBarrier2) ? v2 : v1;
Jeremy Gebbenbb845612021-02-18 18:16:05 -0700947}
948
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700949static const std::map<SubmitError, std::vector<Entry>> kSubmitErrors{
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700950 {SubmitError::kTimelineSemSmallValue,
951 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700952 {Key(Struct::VkSemaphoreSignalInfo), "VUID-VkSemaphoreSignalInfo-value-03258"},
953 {Key(Struct::VkBindSparseInfo), "VUID-VkBindSparseInfo-pSignalSemaphores-03249"},
954 {Key(Struct::VkSubmitInfo), "VUID-VkSubmitInfo-pSignalSemaphores-03242"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700955 {Key(Struct::VkSubmitInfo2), "VUID-VkSubmitInfo2-semaphore-03881"},
956 {Key(Struct::VkSubmitInfo2), "VUID-VkSubmitInfo2-semaphore-03882"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700957 }},
958 {SubmitError::kSemAlreadySignalled,
959 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700960 {Key(Func::vkQueueSubmit), "VUID-vkQueueSubmit-pSignalSemaphores-00067"},
961 {Key(Func::vkQueueBindSparse), "VUID-vkQueueBindSparse-pSignalSemaphores-01115"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700962 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit2-semaphore-03868"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700963 }},
Jeremy Gebben8411dde2021-02-19 16:49:37 -0700964 {SubmitError::kBinaryCannotBeSignalled,
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700965 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700966 {Key(Func::vkQueueSubmit), "VUID-vkQueueSubmit-pWaitSemaphores-00069"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700967 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit2-semaphore-03872"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700968 }},
Jeremy Gebben8411dde2021-02-19 16:49:37 -0700969 {SubmitError::kTimelineCannotBeSignalled,
970 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700971 {Key(Func::vkQueueSubmit), "VUID-vkQueueSubmit-pWaitSemaphores-03238"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700972 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit2-semaphore-03873"},
Jeremy Gebben8411dde2021-02-19 16:49:37 -0700973 }},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700974 {SubmitError::kTimelineSemMaxDiff,
975 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700976 {Key(Struct::VkBindSparseInfo, Field::pWaitSemaphores), "VUID-VkBindSparseInfo-pWaitSemaphores-03250"},
977 {Key(Struct::VkBindSparseInfo, Field::pSignalSemaphores), "VUID-VkBindSparseInfo-pSignalSemaphores-03251"},
978 {Key(Struct::VkSubmitInfo, Field::pWaitSemaphores), "VUID-VkSubmitInfo-pWaitSemaphores-03243"},
979 {Key(Struct::VkSubmitInfo, Field::pSignalSemaphores), "VUID-VkSubmitInfo-pSignalSemaphores-03244"},
980 {Key(Struct::VkSemaphoreSignalInfo), "VUID-VkSemaphoreSignalInfo-value-03260"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700981 {Key(Struct::VkSubmitInfo2, Field::pWaitSemaphoreInfos, true), "VUID-VkSubmitInfo2-semaphore-03883"},
982 {Key(Struct::VkSubmitInfo2, Field::pSignalSemaphoreInfos, true), "VUID-VkSubmitInfo2-semaphore-03884"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700983 }},
984 {SubmitError::kProtectedFeatureDisabled,
985 {
Mike Schuchardta9101d32021-11-12 12:24:08 -0800986 {Key(Struct::VkProtectedSubmitInfo), "VUID-vkQueueSubmit-queue-06448"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700987 {Key(Struct::VkSubmitInfo2), "VUID-vkQueueSubmit2-queue-06447"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700988 }},
989 {SubmitError::kBadUnprotectedSubmit,
990 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700991 {Key(Struct::VkSubmitInfo), "VUID-VkSubmitInfo-pNext-04148"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700992 {Key(Struct::VkSubmitInfo2), "VUID-VkSubmitInfo2-flags-03886"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700993 }},
994 {SubmitError::kBadProtectedSubmit,
995 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -0700996 {Key(Struct::VkSubmitInfo), "VUID-VkSubmitInfo-pNext-04120"},
Tony-LunarG279601c2021-11-16 10:50:51 -0700997 {Key(Struct::VkSubmitInfo2), "VUID-VkSubmitInfo2-flags-03887"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -0700998 }},
999 {SubmitError::kCmdNotSimultaneous,
1000 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -07001001 {Key(Func::vkQueueSubmit), "VUID-vkQueueSubmit-pCommandBuffers-00071"},
Tony-LunarG279601c2021-11-16 10:50:51 -07001002 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit2-commandBuffer-03875"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001003 }},
1004 {SubmitError::kReusedOneTimeCmd,
1005 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -07001006 {Key(Func::vkQueueSubmit), "VUID-vkQueueSubmit-pCommandBuffers-00072"},
Tony-LunarG279601c2021-11-16 10:50:51 -07001007 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit2-commandBuffer-03876"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001008 }},
1009 {SubmitError::kSecondaryCmdNotSimultaneous,
1010 {
Tony-LunarG279601c2021-11-16 10:50:51 -07001011 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit-pCommandBuffers-00073"},
1012 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit2-commandBuffer-03877"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001013 }},
1014 {SubmitError::kCmdWrongQueueFamily,
1015 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -07001016 {Key(Func::vkQueueSubmit), "VUID-vkQueueSubmit-pCommandBuffers-00074"},
Tony-LunarG279601c2021-11-16 10:50:51 -07001017 {Key(Func::vkQueueSubmit2), "VUID-vkQueueSubmit2-commandBuffer-03878"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001018 }},
1019 {SubmitError::kSecondaryCmdInSubmit,
1020 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -07001021 {Key(Func::vkQueueSubmit), "VUID-VkSubmitInfo-pCommandBuffers-00075"},
Tony-LunarG279601c2021-11-16 10:50:51 -07001022 {Key(Func::vkQueueSubmit2), "VUID-VkCommandBufferSubmitInfo-commandBuffer-03890"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001023 }},
1024 {SubmitError::kHostStageMask,
1025 {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -07001026 {Key(Struct::VkSubmitInfo), "VUID-VkSubmitInfo-pWaitDstStageMask-00078"},
1027 {Key(Func::vkCmdSetEvent), "VUID-vkCmdSetEvent-stageMask-01149"},
1028 {Key(Func::vkCmdResetEvent), "VUID-vkCmdResetEvent-stageMask-01153"},
Tony-LunarG279601c2021-11-16 10:50:51 -07001029 {Key(Func::vkCmdResetEvent2), "VUID-vkCmdResetEvent2-stageMask-03830"},
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001030 }},
1031};
1032
Jeremy Gebbenbe60dd22021-03-02 16:36:47 -07001033const std::string &GetQueueSubmitVUID(const Location &loc, SubmitError error) {
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -07001034 const auto &result = FindVUID(error, loc, kSubmitErrors);
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001035 assert(!result.empty());
Jeremy Gebbend5bf0be2021-03-02 14:37:48 -07001036 if (result.empty()) {
1037 static const std::string unhandled("UNASSIGNED-CoreChecks-unhandled-submit-error");
1038 return unhandled;
1039 }
Jeremy Gebbene60d4172021-02-02 15:42:15 -07001040 return result;
1041}
1042
1043}; // namespace sync_vuid_maps