blob: a0a065fae27653b9f9f4273ff985a086c815d59f [file] [log] [blame]
Lionel Landwerlin2d9f5632022-01-08 01:12:47 +02001/* Copyright (c) 2015-2022 The Khronos Group Inc.
2 * Copyright (c) 2015-2022 Valve Corporation
3 * Copyright (c) 2015-2022 LunarG, Inc.
4 * Copyright (C) 2015-2022 Google Inc.
Shannon McPhersoncfb16b52021-01-04 14:24:40 -07005 * Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved.
Jasper St. Pierre512613a2019-04-08 16:25:23 -07006 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 * Author: Cody Northrop <cnorthrop@google.com>
20 * Author: Michael Lentine <mlentine@google.com>
21 * Author: Tobin Ehlis <tobine@google.com>
22 * Author: Chia-I Wu <olv@google.com>
23 * Author: Chris Forbes <chrisf@ijw.co.nz>
24 * Author: Mark Lobodzinski <mark@lunarg.com>
25 * Author: Ian Elliott <ianelliott@google.com>
26 * Author: Dave Houlton <daveh@lunarg.com>
27 * Author: Dustin Graves <dustin@lunarg.com>
28 * Author: Jeremy Hayes <jeremy@lunarg.com>
29 * Author: Jon Ashburn <jon@lunarg.com>
30 * Author: Karl Schultz <karl@lunarg.com>
31 * Author: Mark Young <marky@lunarg.com>
32 * Author: Mike Schuchardt <mikes@lunarg.com>
33 * Author: Mike Weiblen <mikew@lunarg.com>
34 * Author: Tony Barbour <tony@LunarG.com>
35 * Author: John Zulauf <jzulauf@lunarg.com>
36 * Author: Shannon McPherson <shannon@lunarg.com>
Jeremy Kniagere6827432020-04-01 09:05:56 -060037 * Author: Jeremy Kniager <jeremyk@lunarg.com>
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070038 * Author: Nathaniel Cesario <nathaniel@lunarg.com>
Tobias Hector6663c9b2020-11-05 10:18:02 +000039 * Author: Tobias Hector <tobias.hector@amd.com>
Jasper St. Pierre512613a2019-04-08 16:25:23 -070040 */
41
Jasper St. Pierre512613a2019-04-08 16:25:23 -070042#include "chassis.h"
43#include "core_validation.h"
44
Spencer Fricke507600b2020-03-22 13:23:06 -070045// clang-format off
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070046struct DispatchVuidsCmdDraw : DrawDispatchVuid {
47 DispatchVuidsCmdDraw() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070048 pipeline_bound = "VUID-vkCmdDraw-None-02700";
49 dynamic_state = "VUID-vkCmdDraw-commandBuffer-02701";
50 vertex_binding = "VUID-vkCmdDraw-None-04007";
51 vertex_binding_null = "VUID-vkCmdDraw-None-04008";
52 compatible_pipeline = "VUID-vkCmdDraw-None-02697";
53 render_pass_compatible = "VUID-vkCmdDraw-renderPass-02684";
54 subpass_index = "VUID-vkCmdDraw-subpass-02685";
55 sample_location = "VUID-vkCmdDraw-sampleLocationsEnable-02689";
56 linear_sampler = "VUID-vkCmdDraw-magFilter-04553";
57 cubic_sampler = "VUID-vkCmdDraw-None-02692";
58 viewport_count = "VUID-vkCmdDraw-viewportCount-03417";
59 scissor_count = "VUID-vkCmdDraw-scissorCount-03418";
60 viewport_scissor_count = "VUID-vkCmdDraw-viewportCount-03419";
61 primitive_topology = "VUID-vkCmdDraw-primitiveTopology-03420";
62 corner_sampled_address_mode = "VUID-vkCmdDraw-flags-02696";
63 subpass_input = "VUID-vkCmdDraw-None-02686";
64 imageview_atomic = "VUID-vkCmdDraw-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -070065 push_constants_set = "VUID-vkCmdDraw-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070066 image_subresources = "VUID-vkCmdDraw-None-04584";
67 descriptor_valid = "VUID-vkCmdDraw-None-02699";
68 sampler_imageview_type = "VUID-vkCmdDraw-None-02702";
69 sampler_implicitLod_dref_proj = "VUID-vkCmdDraw-None-02703";
70 sampler_bias_offset = "VUID-vkCmdDraw-None-02704";
71 vertex_binding_attribute = "VUID-vkCmdDraw-None-02721";
72 dynamic_state_setting_commands = "VUID-vkCmdDraw-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -070073 rasterization_samples = "VUID-vkCmdDraw-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070074 unprotected_command_buffer = "VUID-vkCmdDraw-commandBuffer-02707";
75 protected_command_buffer = "VUID-vkCmdDraw-commandBuffer-02712";
76 max_multiview_instance_index = "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -070077 img_filter_cubic = "VUID-vkCmdDraw-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070078 filter_cubic = "VUID-vkCmdDraw-filterCubic-02694";
79 filter_cubic_min_max = "VUID-vkCmdDraw-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +000080 viewport_count_primitive_shading_rate = "VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552";
Vikram Kushwahaa57b0c32021-04-19 12:21:46 -070081 patch_control_points = "VUID-vkCmdDraw-None-04875";
82 rasterizer_discard_enable = "VUID-vkCmdDraw-None-04876";
83 depth_bias_enable = "VUID-vkCmdDraw-None-04877";
84 logic_op = "VUID-vkCmdDraw-logicOp-04878";
85 primitive_restart_enable = "VUID-vkCmdDraw-None-04879";
Piers Daniell924cd832021-05-18 13:48:47 -060086 vertex_input_binding_stride = "VUID-vkCmdDraw-pStrides-04884";
87 vertex_input = kVUID_Core_CmdDraw_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +020088 blend_enable = "VUID-vkCmdDraw-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -050089 dynamic_rendering_view_mask = "VUID-vkCmdDraw-viewMask-06178";
90 dynamic_rendering_color_count = "VUID-vkCmdDraw-colorAttachmentCount-06179";
91 dynamic_rendering_color_formats = "VUID-vkCmdDraw-colorAttachmentCount-06180";
92 dynamic_rendering_depth_format = "VUID-vkCmdDraw-pDepthAttachment-06181";
93 dynamic_rendering_stencil_format = "VUID-vkCmdDraw-pStencilAttachment-06182";
94 dynamic_rendering_fsr = "VUID-vkCmdDraw-imageView-06183";
95 dynamic_rendering_fdm = "VUID-vkCmdDraw-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -050096 dynamic_rendering_color_sample = "VUID-vkCmdDraw-colorAttachmentCount-06185";
97 dynamic_rendering_depth_sample = "VUID-vkCmdDraw-pDepthAttachment-06186";
98 dynamic_rendering_stencil_sample = "VUID-vkCmdDraw-pStencilAttachment-06187";
99 dynamic_rendering_multi_sample = "VUID-vkCmdDraw-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500100 dynamic_rendering_06189 = "VUID-vkCmdDraw-pDepthAttachment-06189";
101 dynamic_rendering_06190 = "VUID-vkCmdDraw-pStencilAttachment-06190";
102 dynamic_rendering_06198 = "VUID-vkCmdDraw-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200103 storage_image_read_without_format = "VUID-vkCmdDraw-OpTypeImage-06424";
104 storage_image_write_without_format = "VUID-vkCmdDraw-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200105 depth_compare_sample = "VUID-vkCmdDraw-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700106 }
107};
108
Tony-LunarG4490de42021-06-21 15:49:19 -0600109struct DispatchVuidsCmdDrawMultiEXT : DrawDispatchVuid {
110 DispatchVuidsCmdDrawMultiEXT() : DrawDispatchVuid() {
111 pipeline_bound = "VUID-vkCmdDrawMultiEXT-None-02700";
112 dynamic_state = "VUID-vkCmdDrawMultiEXT-commandBuffer-02701";
113 vertex_binding = "VUID-vkCmdDrawMultiEXT-None-04007";
114 vertex_binding_null = "VUID-vkCmdDrawMultiEXT-None-04008";
115 compatible_pipeline = "VUID-vkCmdDrawMultiEXT-None-02697";
116 render_pass_compatible = "VUID-vkCmdDrawMultiEXT-renderPass-02684";
117 subpass_index = "VUID-vkCmdDrawMultiEXT-subpass-02685";
118 sample_location = "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-02689";
119 linear_sampler = "VUID-vkCmdDrawMultiEXT-magFilter-04553";
120 cubic_sampler = "VUID-vkCmdDrawMultiEXT-None-02692";
121 viewport_count = "VUID-vkCmdDrawMultiEXT-viewportCount-03417";
122 scissor_count = "VUID-vkCmdDrawMultiEXT-scissorCount-03418";
123 viewport_scissor_count = "VUID-vkCmdDrawMultiEXT-viewportCount-03419";
124 primitive_topology = "VUID-vkCmdDrawMultiEXT-primitiveTopology-03420";
125 corner_sampled_address_mode = "VUID-vkCmdDrawMultiEXT-flags-02696";
126 subpass_input = "VUID-vkCmdDrawMultiEXT-None-02686";
127 imageview_atomic = "VUID-vkCmdDrawMultiEXT-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700128 push_constants_set = "VUID-vkCmdDrawMultiEXT-maintenance4-06425";
Tony-LunarG4490de42021-06-21 15:49:19 -0600129 image_subresources = "VUID-vkCmdDrawMultiEXT-None-04584";
130 descriptor_valid = "VUID-vkCmdDrawMultiEXT-None-02699";
131 sampler_imageview_type = "VUID-vkCmdDrawMultiEXT-None-02702";
132 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMultiEXT-None-02703";
133 sampler_bias_offset = "VUID-vkCmdDrawMultiEXT-None-02704";
134 vertex_binding_attribute = "VUID-vkCmdDrawMultiEXT-None-02721";
135 dynamic_state_setting_commands = "VUID-vkCmdDrawMultiEXT-None-02859";
136 rasterization_samples = "VUID-vkCmdDrawMultiEXT-rasterizationSamples-04740";
137 unprotected_command_buffer = "VUID-vkCmdDrawMultiEXT-commandBuffer-02707";
138 protected_command_buffer = "VUID-vkCmdDrawMultiEXT-commandBuffer-02712";
139 max_multiview_instance_index = "VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688";
140 img_filter_cubic = "VUID-vkCmdDrawMultiEXT-None-02693";
141 filter_cubic = "VUID-vkCmdDrawMultiEXT-filterCubic-02694";
142 filter_cubic_min_max = "VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695";
143 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-04552";
144 patch_control_points = "VUID-vkCmdDrawMultiEXT-None-04875";
145 rasterizer_discard_enable = "VUID-vkCmdDrawMultiEXT-None-04876";
146 depth_bias_enable = "VUID-vkCmdDrawMultiEXT-None-04877";
147 logic_op = "VUID-vkCmdDrawMultiEXT-logicOp-04878";
148 primitive_restart_enable = "VUID-vkCmdDrawMultiEXT-None-04879";
149 vertex_input_binding_stride = "VUID-vkCmdDrawMultiEXT-pStrides-04884";
150 vertex_input = kVUID_Core_CmdDrawMultiEXT_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200151 blend_enable = "VUID-vkCmdDrawMultiEXT-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500152 dynamic_rendering_view_mask = "VUID-vkCmdDrawMultiEXT-viewMask-06178";
153 dynamic_rendering_color_count = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179";
154 dynamic_rendering_color_formats = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06180";
155 dynamic_rendering_depth_format = "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06181";
156 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06182";
157 dynamic_rendering_fsr = "VUID-vkCmdDrawMultiEXT-imageView-06183";
158 dynamic_rendering_fdm = "VUID-vkCmdDrawMultiEXT-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500159 dynamic_rendering_color_sample = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185";
160 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186";
161 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187";
162 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500163 dynamic_rendering_06189 = "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06189";
164 dynamic_rendering_06190 = "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06190";
165 dynamic_rendering_06198 = "VUID-vkCmdDrawMultiEXT-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200166 storage_image_read_without_format = "VUID-vkCmdDrawMultiEXT-OpTypeImage-06424";
167 storage_image_write_without_format = "VUID-vkCmdDrawMultiEXT-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200168 depth_compare_sample = "VUID-vkCmdDrawMultiEXT-None-06479";
Tony-LunarG4490de42021-06-21 15:49:19 -0600169 }
170};
171
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700172struct DispatchVuidsCmdDrawIndexed : DrawDispatchVuid {
173 DispatchVuidsCmdDrawIndexed() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700174 pipeline_bound = "VUID-vkCmdDrawIndexed-None-02700";
175 dynamic_state = "VUID-vkCmdDrawIndexed-commandBuffer-02701";
176 vertex_binding = "VUID-vkCmdDrawIndexed-None-04007";
177 vertex_binding_null = "VUID-vkCmdDrawIndexed-None-04008";
178 compatible_pipeline = "VUID-vkCmdDrawIndexed-None-02697";
179 render_pass_compatible = "VUID-vkCmdDrawIndexed-renderPass-02684";
180 subpass_index = "VUID-vkCmdDrawIndexed-subpass-02685";
181 sample_location = "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689";
182 linear_sampler = "VUID-vkCmdDrawIndexed-magFilter-04553";
183 cubic_sampler = "VUID-vkCmdDrawIndexed-None-02692";
184 viewport_count = "VUID-vkCmdDrawIndexed-viewportCount-03417";
185 scissor_count = "VUID-vkCmdDrawIndexed-scissorCount-03418";
186 viewport_scissor_count = "VUID-vkCmdDrawIndexed-viewportCount-03419";
187 primitive_topology = "VUID-vkCmdDrawIndexed-primitiveTopology-03420";
188 corner_sampled_address_mode = "VUID-vkCmdDrawIndexed-flags-02696";
189 subpass_input = "VUID-vkCmdDrawIndexed-None-02686";
190 imageview_atomic = "VUID-vkCmdDrawIndexed-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700191 push_constants_set = "VUID-vkCmdDrawIndexed-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700192 image_subresources = "VUID-vkCmdDrawIndexed-None-04584";
193 descriptor_valid = "VUID-vkCmdDrawIndexed-None-02699";
194 sampler_imageview_type = "VUID-vkCmdDrawIndexed-None-02702";
195 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndexed-None-02703";
196 sampler_bias_offset = "VUID-vkCmdDrawIndexed-None-02704";
197 vertex_binding_attribute = "VUID-vkCmdDrawIndexed-None-02721";
198 dynamic_state_setting_commands = "VUID-vkCmdDrawIndexed-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700199 rasterization_samples = "VUID-vkCmdDrawIndexed-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700200 unprotected_command_buffer = "VUID-vkCmdDrawIndexed-commandBuffer-02707";
201 protected_command_buffer = "VUID-vkCmdDrawIndexed-commandBuffer-02712";
202 max_multiview_instance_index = "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700203 img_filter_cubic = "VUID-vkCmdDrawIndexed-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700204 filter_cubic = "VUID-vkCmdDrawIndexed-filterCubic-02694";
205 filter_cubic_min_max = "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000206 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600207 patch_control_points = "VUID-vkCmdDrawIndexed-None-04875";
208 rasterizer_discard_enable = "VUID-vkCmdDrawIndexed-None-04876";
209 depth_bias_enable = "VUID-vkCmdDrawIndexed-None-04877";
210 logic_op = "VUID-vkCmdDrawIndexed-logicOp-04878";
211 primitive_restart_enable = "VUID-vkCmdDrawIndexed-None-04879";
212 vertex_input_binding_stride = "VUID-vkCmdDrawIndexed-pStrides-04884";
213 vertex_input = kVUID_Core_CmdDrawIndexed_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200214 blend_enable = "VUID-vkCmdDrawIndexed-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500215 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndexed-viewMask-06178";
216 dynamic_rendering_color_count = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06179";
217 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06180";
218 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndexed-pDepthAttachment-06181";
219 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndexed-pStencilAttachment-06182";
220 dynamic_rendering_fsr = "VUID-vkCmdDrawIndexed-imageView-06183";
221 dynamic_rendering_fdm = "VUID-vkCmdDrawIndexed-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500222 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06185";
223 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndexed-pDepthAttachment-06186";
224 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndexed-pStencilAttachment-06187";
225 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500226 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexed-pDepthAttachment-06189";
227 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexed-pStencilAttachment-06190";
228 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexed-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200229 storage_image_read_without_format = "VUID-vkCmdDrawIndexed-OpTypeImage-06424";
230 storage_image_write_without_format = "VUID-vkCmdDrawIndexed-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200231 depth_compare_sample = "VUID-vkCmdDrawIndexed-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700232 }
233};
234
Tony-LunarG4490de42021-06-21 15:49:19 -0600235struct DispatchVuidsCmdDrawMultiIndexedEXT : DrawDispatchVuid {
236 DispatchVuidsCmdDrawMultiIndexedEXT() : DrawDispatchVuid() {
Lionel Landwerlin45e981c2021-12-07 15:29:40 +0200237 pipeline_bound = "VUID-vkCmdDrawMultiIndexedEXT-None-02700";
238 dynamic_state = "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02701";
239 vertex_binding = "VUID-vkCmdDrawMultiIndexedEXT-None-04007";
240 vertex_binding_null = "VUID-vkCmdDrawMultiIndexedEXT-None-04008";
241 compatible_pipeline = "VUID-vkCmdDrawMultiIndexedEXT-None-02697";
242 render_pass_compatible = "VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684";
243 subpass_index = "VUID-vkCmdDrawMultiIndexedEXT-subpass-02685";
244 sample_location = "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689";
245 linear_sampler = "VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553";
246 cubic_sampler = "VUID-vkCmdDrawMultiIndexedEXT-None-02692";
247 viewport_count = "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417";
248 scissor_count = "VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418";
249 viewport_scissor_count = "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419";
250 primitive_topology = "VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-03420";
251 corner_sampled_address_mode = "VUID-vkCmdDrawMultiIndexedEXT-flags-02696";
252 subpass_input = "VUID-vkCmdDrawMultiIndexedEXT-None-02686";
253 imageview_atomic = "VUID-vkCmdDrawMultiIndexedEXT-None-02691";
254 push_constants_set = "VUID-vkCmdDrawMultiIndexedEXT-maintenance4-06425";
255 image_subresources = "VUID-vkCmdDrawMultiIndexedEXT-None-04584";
256 descriptor_valid = "VUID-vkCmdDrawMultiIndexedEXT-None-02699";
257 sampler_imageview_type = "VUID-vkCmdDrawMultiIndexedEXT-None-02702";
258 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMultiIndexedEXT-None-02703";
259 sampler_bias_offset = "VUID-vkCmdDrawMultiIndexedEXT-None-02704";
260 vertex_binding_attribute = "VUID-vkCmdDrawMultiIndexedEXT-None-02721";
261 dynamic_state_setting_commands = "VUID-vkCmdDrawMultiIndexedEXT-None-02859";
262 rasterization_samples = "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-04740";
263 unprotected_command_buffer = "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707";
264 protected_command_buffer = "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712";
265 max_multiview_instance_index = "VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688";
266 img_filter_cubic = "VUID-vkCmdDrawMultiIndexedEXT-None-02693";
267 filter_cubic = "VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694";
268 filter_cubic_min_max = "VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695";
Tony-LunarG4490de42021-06-21 15:49:19 -0600269 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-04552";
Lionel Landwerlin45e981c2021-12-07 15:29:40 +0200270 patch_control_points = "VUID-vkCmdDrawMultiIndexedEXT-None-04875";
271 rasterizer_discard_enable = "VUID-vkCmdDrawMultiIndexedEXT-None-04876";
272 depth_bias_enable = "VUID-vkCmdDrawMultiIndexedEXT-None-04877";
273 logic_op = "VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878";
274 primitive_restart_enable = "VUID-vkCmdDrawMultiIndexedEXT-None-04879";
275 vertex_input_binding_stride = "VUID-vkCmdDrawMultiIndexedEXT-pStrides-04884";
276 vertex_input = kVUID_Core_CmdDrawMultiIndexedEXT_VertexInput;
277 blend_enable = "VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727";
278 dynamic_rendering_view_mask = "VUID-vkCmdDrawMultiIndexedEXT-viewMask-06178";
279 dynamic_rendering_color_count = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179";
280 dynamic_rendering_color_formats = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06180";
281 dynamic_rendering_depth_format = "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06181";
282 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06182";
283 dynamic_rendering_fsr = "VUID-vkCmdDrawMultiIndexedEXT-imageView-06183";
284 dynamic_rendering_fdm = "VUID-vkCmdDrawMultiIndexedEXT-imageView-06184";
285 dynamic_rendering_color_sample = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185";
286 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186";
287 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187";
288 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06188";
289 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06189";
290 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190";
291 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexedIndirect-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200292 storage_image_read_without_format = "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-06424";
293 storage_image_write_without_format = "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200294 depth_compare_sample = "VUID-vkCmdDrawMultiIndexedEXT-None-06479";
Tony-LunarG4490de42021-06-21 15:49:19 -0600295 }
296};
297
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700298struct DispatchVuidsCmdDrawIndirect : DrawDispatchVuid {
299 DispatchVuidsCmdDrawIndirect() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700300 pipeline_bound = "VUID-vkCmdDrawIndirect-None-02700";
301 dynamic_state = "VUID-vkCmdDrawIndirect-commandBuffer-02701";
302 vertex_binding = "VUID-vkCmdDrawIndirect-None-04007";
303 vertex_binding_null = "VUID-vkCmdDrawIndirect-None-04008";
304 compatible_pipeline = "VUID-vkCmdDrawIndirect-None-02697";
305 render_pass_compatible = "VUID-vkCmdDrawIndirect-renderPass-02684";
306 subpass_index = "VUID-vkCmdDrawIndirect-subpass-02685";
307 sample_location = "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689";
308 linear_sampler = "VUID-vkCmdDrawIndirect-magFilter-04553";
309 cubic_sampler = "VUID-vkCmdDrawIndirect-None-02692";
310 indirect_protected_cb = "VUID-vkCmdDrawIndirect-commandBuffer-02711";
311 indirect_contiguous_memory = "VUID-vkCmdDrawIndirect-buffer-02708";
312 indirect_buffer_bit = "VUID-vkCmdDrawIndirect-buffer-02709";
313 viewport_count = "VUID-vkCmdDrawIndirect-viewportCount-03417";
314 scissor_count = "VUID-vkCmdDrawIndirect-scissorCount-03418";
315 viewport_scissor_count = "VUID-vkCmdDrawIndirect-viewportCount-03419";
316 primitive_topology = "VUID-vkCmdDrawIndirect-primitiveTopology-03420";
317 corner_sampled_address_mode = "VUID-vkCmdDrawIndirect-flags-02696";
318 subpass_input = "VUID-vkCmdDrawIndirect-None-02686";
319 imageview_atomic = "VUID-vkCmdDrawIndirect-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700320 push_constants_set = "VUID-vkCmdDrawIndirect-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700321 image_subresources = "VUID-vkCmdDrawIndirect-None-04584";
322 descriptor_valid = "VUID-vkCmdDrawIndirect-None-02699";
323 sampler_imageview_type = "VUID-vkCmdDrawIndirect-None-02702";
324 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndirect-None-02703";
325 sampler_bias_offset = "VUID-vkCmdDrawIndirect-None-02704";
326 vertex_binding_attribute = "VUID-vkCmdDrawIndirect-None-02721";
327 dynamic_state_setting_commands = "VUID-vkCmdDrawIndirect-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700328 rasterization_samples = "VUID-vkCmdDrawIndirect-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700329 unprotected_command_buffer = "VUID-vkCmdDrawIndirect-commandBuffer-02707";
330 max_multiview_instance_index = "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700331 img_filter_cubic = "VUID-vkCmdDrawIndirect-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700332 filter_cubic = "VUID-vkCmdDrawIndirect-filterCubic-02694";
333 filter_cubic_min_max = "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000334 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600335 patch_control_points = "VUID-vkCmdDrawIndirect-None-04875";
336 rasterizer_discard_enable = "VUID-vkCmdDrawIndirect-None-04876";
337 depth_bias_enable = "VUID-vkCmdDrawIndirect-None-04877";
338 logic_op = "VUID-vkCmdDrawIndirect-logicOp-04878";
339 primitive_restart_enable = "VUID-vkCmdDrawIndirect-None-04879";
340 vertex_input_binding_stride = "VUID-vkCmdDrawIndirect-pStrides-04884";
341 vertex_input = kVUID_Core_CmdDrawIndirect_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200342 blend_enable = "VUID-vkCmdDrawIndirect-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500343 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndirect-viewMask-06178";
344 dynamic_rendering_color_count = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06179";
345 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06180";
346 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndirect-pDepthAttachment-06181";
347 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndirect-pStencilAttachment-06182";
348 dynamic_rendering_fsr = "VUID-vkCmdDrawIndirect-imageView-06183";
349 dynamic_rendering_fdm = "VUID-vkCmdDrawIndirect-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500350 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06185";
351 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndirect-pDepthAttachment-06186";
352 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndirect-pStencilAttachment-06187";
353 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500354 dynamic_rendering_06189 = "VUID-vkCmdDrawIndirect-pDepthAttachment-06189";
355 dynamic_rendering_06190 = "VUID-vkCmdDrawIndirect-pStencilAttachment-06190";
356 dynamic_rendering_06198 = "VUID-vkCmdDrawIndirect-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200357 storage_image_read_without_format = "VUID-vkCmdDrawIndirect-OpTypeImage-06424";
358 storage_image_write_without_format = "VUID-vkCmdDrawIndirect-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200359 depth_compare_sample = "VUID-vkCmdDrawIndirect-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700360 }
361};
362
363struct DispatchVuidsCmdDrawIndexedIndirect : DrawDispatchVuid {
364 DispatchVuidsCmdDrawIndexedIndirect() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700365 pipeline_bound = "VUID-vkCmdDrawIndexedIndirect-None-02700";
366 dynamic_state = "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701";
367 vertex_binding = "VUID-vkCmdDrawIndexedIndirect-None-04007";
368 vertex_binding_null = "VUID-vkCmdDrawIndexedIndirect-None-04008";
369 compatible_pipeline = "VUID-vkCmdDrawIndexedIndirect-None-02697";
370 render_pass_compatible = "VUID-vkCmdDrawIndexedIndirect-renderPass-02684";
371 subpass_index = "VUID-vkCmdDrawIndexedIndirect-subpass-02685";
372 sample_location = "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689";
373 linear_sampler = "VUID-vkCmdDrawIndexedIndirect-magFilter-04553";
374 cubic_sampler = "VUID-vkCmdDrawIndexedIndirect-None-02692";
375 indirect_protected_cb = "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711";
376 indirect_contiguous_memory = "VUID-vkCmdDrawIndexedIndirect-buffer-02708";
377 indirect_buffer_bit = "VUID-vkCmdDrawIndexedIndirect-buffer-02709";
378 viewport_count = "VUID-vkCmdDrawIndexedIndirect-viewportCount-03417";
379 scissor_count = "VUID-vkCmdDrawIndexedIndirect-scissorCount-03418";
380 viewport_scissor_count = "VUID-vkCmdDrawIndexedIndirect-viewportCount-03419";
381 primitive_topology = "VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420";
382 corner_sampled_address_mode = "VUID-vkCmdDrawIndexedIndirect-flags-02696";
383 subpass_input = "VUID-vkCmdDrawIndexedIndirect-None-02686";
384 imageview_atomic = "VUID-vkCmdDrawIndexedIndirect-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700385 push_constants_set = "VUID-vkCmdDrawIndexedIndirect-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700386 image_subresources = "VUID-vkCmdDrawIndexedIndirect-None-04584";
387 descriptor_valid = "VUID-vkCmdDrawIndexedIndirect-None-02699";
388 sampler_imageview_type = "VUID-vkCmdDrawIndexedIndirect-None-02702";
389 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndexedIndirect-None-02703";
390 sampler_bias_offset = "VUID-vkCmdDrawIndexedIndirect-None-02704";
391 vertex_binding_attribute = "VUID-vkCmdDrawIndexedIndirect-None-02721";
392 dynamic_state_setting_commands = "VUID-vkCmdDrawIndexedIndirect-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700393 rasterization_samples = "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700394 unprotected_command_buffer = "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707";
395 max_multiview_instance_index = "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700396 img_filter_cubic = "VUID-vkCmdDrawIndexedIndirect-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700397 filter_cubic = "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694";
398 filter_cubic_min_max = "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000399 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600400 patch_control_points = "VUID-vkCmdDrawIndexedIndirect-None-04875";
401 rasterizer_discard_enable = "VUID-vkCmdDrawIndexedIndirect-None-04876";
402 depth_bias_enable = "VUID-vkCmdDrawIndexedIndirect-None-04877";
403 logic_op = "VUID-vkCmdDrawIndexedIndirect-logicOp-04878";
404 primitive_restart_enable = "VUID-vkCmdDrawIndexedIndirect-None-04879";
405 vertex_input_binding_stride = "VUID-vkCmdDrawIndexedIndirect-pStrides-04884";
406 vertex_input = kVUID_Core_CmdDrawIndexedIndirect_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200407 blend_enable = "VUID-vkCmdDrawIndexedIndirect-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500408 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndexedIndirect-viewMask-06178";
409 dynamic_rendering_color_count = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179";
410 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06180";
411 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181";
412 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06182";
413 dynamic_rendering_fsr = "VUID-vkCmdDrawIndexedIndirect-imageView-06183";
414 dynamic_rendering_fdm = "VUID-vkCmdDrawIndexedIndirect-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500415 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185";
416 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186";
417 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187";
418 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500419 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06189";
420 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190";
421 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexedIndirect-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200422 storage_image_read_without_format = "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06424";
423 storage_image_write_without_format = "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200424 depth_compare_sample = "VUID-vkCmdDrawIndexedIndirect-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700425 }
426};
427
428struct DispatchVuidsCmdDispatch : DrawDispatchVuid {
429 DispatchVuidsCmdDispatch() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700430 pipeline_bound = "VUID-vkCmdDispatch-None-02700";
Mark Lobodzinski02d37552020-12-28 13:29:46 -0700431 dynamic_state = "VUID-vkCmdDispatch-commandBuffer-02701";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700432 compatible_pipeline = "VUID-vkCmdDispatch-None-02697";
433 linear_sampler = "VUID-vkCmdDispatch-magFilter-04553";
434 cubic_sampler = "VUID-vkCmdDispatch-None-02692";
435 corner_sampled_address_mode = "VUID-vkCmdDispatch-flags-02696";
436 imageview_atomic = "VUID-vkCmdDispatch-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700437 push_constants_set = "VUID-vkCmdDispatch-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700438 descriptor_valid = "VUID-vkCmdDispatch-None-02699";
439 sampler_imageview_type = "VUID-vkCmdDispatch-None-02702";
440 sampler_implicitLod_dref_proj = "VUID-vkCmdDispatch-None-02703";
441 sampler_bias_offset = "VUID-vkCmdDispatch-None-02704";
442 dynamic_state_setting_commands = "VUID-vkCmdDispatch-None-02859";
443 unprotected_command_buffer = "VUID-vkCmdDispatch-commandBuffer-02707";
444 protected_command_buffer = "VUID-vkCmdDispatch-commandBuffer-02712";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700445 img_filter_cubic = "VUID-vkCmdDispatch-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700446 filter_cubic = "VUID-vkCmdDispatch-filterCubic-02694";
447 filter_cubic_min_max = "VUID-vkCmdDispatch-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200448 storage_image_read_without_format = "VUID-vkCmdDispatch-OpTypeImage-06424";
449 storage_image_write_without_format = "VUID-vkCmdDispatch-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200450 depth_compare_sample = "VUID-vkCmdDispatch-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700451 }
452};
453
454struct DispatchVuidsCmdDispatchIndirect : DrawDispatchVuid {
455 DispatchVuidsCmdDispatchIndirect() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700456 pipeline_bound = "VUID-vkCmdDispatchIndirect-None-02700";
Mark Lobodzinski02d37552020-12-28 13:29:46 -0700457 dynamic_state = "VUID-vkCmdDispatchIndirect-commandBuffer-02701";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700458 compatible_pipeline = "VUID-vkCmdDispatchIndirect-None-02697";
459 linear_sampler = "VUID-vkCmdDispatchIndirect-magFilter-04553";
460 cubic_sampler = "VUID-vkCmdDispatchIndirect-None-02692";
461 indirect_protected_cb = "VUID-vkCmdDispatchIndirect-commandBuffer-02711";
462 indirect_contiguous_memory = "VUID-vkCmdDispatchIndirect-buffer-02708";
463 indirect_buffer_bit = "VUID-vkCmdDispatchIndirect-buffer-02709";
464 corner_sampled_address_mode = "VUID-vkCmdDispatchIndirect-flags-02696";
465 imageview_atomic = "VUID-vkCmdDispatchIndirect-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700466 push_constants_set = "VUID-vkCmdDispatchIndirect-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700467 descriptor_valid = "VUID-vkCmdDispatchIndirect-None-02699";
468 sampler_imageview_type = "VUID-vkCmdDispatchIndirect-None-02702";
469 sampler_implicitLod_dref_proj = "VUID-vkCmdDispatchIndirect-None-02703";
470 sampler_bias_offset = "VUID-vkCmdDispatchIndirect-None-02704";
471 dynamic_state_setting_commands = "VUID-vkCmdDispatchIndirect-None-02859";
472 unprotected_command_buffer = "VUID-vkCmdDispatchIndirect-commandBuffer-02707";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700473 img_filter_cubic = "VUID-vkCmdDispatchIndirect-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700474 filter_cubic = "VUID-vkCmdDispatchIndirect-filterCubic-02694";
475 filter_cubic_min_max = "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200476 storage_image_read_without_format = "VUID-vkCmdDispatchIndirect-OpTypeImage-06424";
477 storage_image_write_without_format = "VUID-vkCmdDispatchIndirect-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200478 depth_compare_sample = "VUID-vkCmdDispatchIndirect-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700479 }
480};
481
482struct DispatchVuidsCmdDrawIndirectCount : DrawDispatchVuid {
483 DispatchVuidsCmdDrawIndirectCount() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700484 pipeline_bound = "VUID-vkCmdDrawIndirectCount-None-02700";
485 dynamic_state = "VUID-vkCmdDrawIndirectCount-commandBuffer-02701";
486 vertex_binding = "VUID-vkCmdDrawIndirectCount-None-04007";
487 vertex_binding_null = "VUID-vkCmdDrawIndirectCount-None-04008";
488 compatible_pipeline = "VUID-vkCmdDrawIndirectCount-None-02697";
489 render_pass_compatible = "VUID-vkCmdDrawIndirectCount-renderPass-02684";
490 subpass_index = "VUID-vkCmdDrawIndirectCount-subpass-02685";
491 sample_location = "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689";
492 linear_sampler = "VUID-vkCmdDrawIndirectCount-magFilter-04553";
493 cubic_sampler = "VUID-vkCmdDrawIndirectCount-None-02692";
494 indirect_protected_cb = "VUID-vkCmdDrawIndirectCount-commandBuffer-02711";
495 indirect_contiguous_memory = "VUID-vkCmdDrawIndirectCount-buffer-02708";
496 indirect_buffer_bit = "VUID-vkCmdDrawIndirectCount-buffer-02709";
497 viewport_count = "VUID-vkCmdDrawIndirectCount-viewportCount-03417";
498 scissor_count = "VUID-vkCmdDrawIndirectCount-scissorCount-03418";
499 viewport_scissor_count = "VUID-vkCmdDrawIndirectCount-viewportCount-03419";
500 primitive_topology = "VUID-vkCmdDrawIndirectCount-primitiveTopology-03420";
501 corner_sampled_address_mode = "VUID-vkCmdDrawIndirectCount-flags-02696";
502 subpass_input = "VUID-vkCmdDrawIndirectCount-None-02686";
503 imageview_atomic = "VUID-vkCmdDrawIndirectCount-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700504 push_constants_set = "VUID-vkCmdDrawIndirectCount-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700505 image_subresources = "VUID-vkCmdDrawIndirectCount-None-04584";
506 descriptor_valid = "VUID-vkCmdDrawIndirectCount-None-02699";
507 sampler_imageview_type = "VUID-vkCmdDrawIndirectCount-None-02702";
508 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndirectCount-None-02703";
509 sampler_bias_offset = "VUID-vkCmdDrawIndirectCount-None-02704";
510 vertex_binding_attribute = "VUID-vkCmdDrawIndirectCount-None-02721";
511 dynamic_state_setting_commands = "VUID-vkCmdDrawIndirectCount-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700512 rasterization_samples = "VUID-vkCmdDrawIndirectCount-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700513 unprotected_command_buffer = "VUID-vkCmdDrawIndirectCount-commandBuffer-02707";
514 max_multiview_instance_index = "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700515 img_filter_cubic = "VUID-vkCmdDrawIndirectCount-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700516 filter_cubic = "VUID-vkCmdDrawIndirectCount-filterCubic-02694";
517 filter_cubic_min_max = "VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000518 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600519 patch_control_points = "VUID-vkCmdDrawIndirectCount-None-04875";
520 rasterizer_discard_enable = "VUID-vkCmdDrawIndirectCount-None-04876";
521 depth_bias_enable = "VUID-vkCmdDrawIndirectCount-None-04877";
522 logic_op = "VUID-vkCmdDrawIndirectCount-logicOp-04878";
523 primitive_restart_enable = "VUID-vkCmdDrawIndirectCount-None-04879";
524 vertex_input_binding_stride = "VUID-vkCmdDrawIndirectCount-pStrides-04884";
525 vertex_input = kVUID_Core_CmdDrawIndirectCount_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200526 blend_enable = "VUID-vkCmdDrawIndirectCount-blendEnable-04727";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200527 storage_image_read_without_format = "VUID-vkCmdDrawIndirectCount-OpTypeImage-06424";
528 storage_image_write_without_format = "VUID-vkCmdDrawIndirectCount-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200529 depth_compare_sample = "VUID-vkCmdDrawIndirectCount-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700530 }
531};
532
533struct DispatchVuidsCmdDrawIndexedIndirectCount : DrawDispatchVuid {
534 DispatchVuidsCmdDrawIndexedIndirectCount() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700535 pipeline_bound = "VUID-vkCmdDrawIndexedIndirectCount-None-02700";
536 dynamic_state = "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701";
537 vertex_binding = "VUID-vkCmdDrawIndexedIndirectCount-None-04007";
538 vertex_binding_null = "VUID-vkCmdDrawIndexedIndirectCount-None-04008";
539 compatible_pipeline = "VUID-vkCmdDrawIndexedIndirectCount-None-02697";
540 render_pass_compatible = "VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684";
541 subpass_index = "VUID-vkCmdDrawIndexedIndirectCount-subpass-02685";
542 sample_location = "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689";
543 linear_sampler = "VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553";
544 cubic_sampler = "VUID-vkCmdDrawIndexedIndirectCount-None-02692";
545 indirect_protected_cb = "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711";
546 indirect_contiguous_memory = "VUID-vkCmdDrawIndexedIndirectCount-buffer-02708";
547 indirect_buffer_bit = "VUID-vkCmdDrawIndexedIndirectCount-buffer-02709";
548 viewport_count = "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417";
549 scissor_count = "VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418";
550 viewport_scissor_count = "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419";
551 primitive_topology = "VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420";
552 corner_sampled_address_mode = "VUID-vkCmdDrawIndexedIndirectCount-flags-02696";
553 subpass_input = "VUID-vkCmdDrawIndexedIndirectCount-None-02686";
554 imageview_atomic = "VUID-vkCmdDrawIndexedIndirectCount-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700555 push_constants_set = "VUID-vkCmdDrawIndexedIndirectCount-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700556 image_subresources = "VUID-vkCmdDrawIndexedIndirectCount-None-04584";
557 descriptor_valid = "VUID-vkCmdDrawIndexedIndirectCount-None-02699";
558 sampler_imageview_type = "VUID-vkCmdDrawIndexedIndirectCount-None-02702";
559 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndexedIndirectCount-None-02703";
560 sampler_bias_offset = "VUID-vkCmdDrawIndexedIndirectCount-None-02704";
561 vertex_binding_attribute = "VUID-vkCmdDrawIndexedIndirectCount-None-02721";
562 dynamic_state_setting_commands = "VUID-vkCmdDrawIndexedIndirectCount-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700563 rasterization_samples = "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700564 unprotected_command_buffer = "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707";
565 max_multiview_instance_index = "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700566 img_filter_cubic = "VUID-vkCmdDrawIndexedIndirectCount-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700567 filter_cubic = "VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694";
568 filter_cubic_min_max = "VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000569 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600570 patch_control_points = "VUID-vkCmdDrawIndexedIndirectCount-None-04875";
571 rasterizer_discard_enable = "VUID-vkCmdDrawIndexedIndirectCount-None-04876";
572 depth_bias_enable = "VUID-vkCmdDrawIndexedIndirectCount-None-04877";
573 logic_op = "VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878";
574 primitive_restart_enable = "VUID-vkCmdDrawIndexedIndirectCount-None-04879";
575 vertex_input_binding_stride = "VUID-vkCmdDrawIndexedIndirectCount-pStrides-04884";
576 vertex_input = kVUID_Core_CmdDrawIndexedIndirectCount_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200577 blend_enable = "VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727";
Aaron Haganaca50442021-12-07 22:26:29 -0500578 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndexedIndirectCount-viewMask-06178";
579 dynamic_rendering_color_count = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179";
580 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06180";
581 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06181";
582 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06182";
583 dynamic_rendering_fsr = "VUID-vkCmdDrawIndexedIndirectCount-imageView-06183";
584 dynamic_rendering_fdm = "VUID-vkCmdDrawIndexedIndirectCount-imageView-06184";
585 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185";
586 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186";
587 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187";
588 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06188";
589 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06189";
590 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06190";
591 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200592 storage_image_read_without_format = "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-06424";
593 storage_image_write_without_format = "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200594 depth_compare_sample = "VUID-vkCmdDrawIndexedIndirectCount-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700595 }
596};
597
598struct DispatchVuidsCmdTraceRaysNV: DrawDispatchVuid {
599 DispatchVuidsCmdTraceRaysNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700600 pipeline_bound = "VUID-vkCmdTraceRaysNV-None-02700";
601 dynamic_state = "VUID-vkCmdTraceRaysNV-commandBuffer-02701";
602 compatible_pipeline = "VUID-vkCmdTraceRaysNV-None-02697";
603 linear_sampler = "VUID-vkCmdTraceRaysNV-magFilter-04553";
604 cubic_sampler = "VUID-vkCmdTraceRaysNV-None-02692";
605 corner_sampled_address_mode = "VUID-vkCmdTraceRaysNV-flags-02696";
606 imageview_atomic = "VUID-vkCmdTraceRaysNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700607 push_constants_set = "VUID-vkCmdTraceRaysNV-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700608 descriptor_valid = "VUID-vkCmdTraceRaysNV-None-02699";
609 sampler_imageview_type = "VUID-vkCmdTraceRaysNV-None-02702";
610 sampler_implicitLod_dref_proj = "VUID-vkCmdTraceRaysNV-None-02703";
611 sampler_bias_offset = "VUID-vkCmdTraceRaysNV-None-02704";
612 dynamic_state_setting_commands = "VUID-vkCmdTraceRaysNV-None-02859";
613 unprotected_command_buffer = "VUID-vkCmdTraceRaysNV-commandBuffer-02707";
sfricke-samsunga3c47d12021-09-30 13:34:54 -0700614 ray_query_protected_cb = "VUID-vkCmdTraceRaysNV-commandBuffer-04624";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700615 img_filter_cubic = "VUID-vkCmdTraceRaysNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700616 filter_cubic = "VUID-vkCmdTraceRaysNV-filterCubic-02694";
617 filter_cubic_min_max = "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200618 storage_image_read_without_format = "VUID-vkCmdTraceRaysNV-OpTypeImage-06424";
619 storage_image_write_without_format = "VUID-vkCmdTraceRaysNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200620 depth_compare_sample = "VUID-vkCmdTraceRaysNV-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700621 }
622};
623
624struct DispatchVuidsCmdTraceRaysKHR: DrawDispatchVuid {
625 DispatchVuidsCmdTraceRaysKHR() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700626 pipeline_bound = "VUID-vkCmdTraceRaysKHR-None-02700";
627 dynamic_state = "VUID-vkCmdTraceRaysKHR-commandBuffer-02701";
628 compatible_pipeline = "VUID-vkCmdTraceRaysKHR-None-02697";
629 linear_sampler = "VUID-vkCmdTraceRaysKHR-magFilter-04553";
630 cubic_sampler = "VUID-vkCmdTraceRaysKHR-None-02692";
631 corner_sampled_address_mode = "VUID-vkCmdTraceRaysKHR-flags-02696";
632 imageview_atomic = "VUID-vkCmdTraceRaysKHR-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700633 push_constants_set = "VUID-vkCmdTraceRaysKHR-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700634 descriptor_valid = "VUID-vkCmdTraceRaysKHR-None-02699";
635 sampler_imageview_type = "VUID-vkCmdTraceRaysKHR-None-02702";
636 sampler_implicitLod_dref_proj = "VUID-vkCmdTraceRaysKHR-None-02703";
637 sampler_bias_offset = "VUID-vkCmdTraceRaysKHR-None-02704";
638 dynamic_state_setting_commands = "VUID-vkCmdTraceRaysKHR-None-02859";
639 unprotected_command_buffer = "VUID-vkCmdTraceRaysKHR-commandBuffer-02707";
sfricke-samsunga3c47d12021-09-30 13:34:54 -0700640 ray_query_protected_cb = "VUID-vkCmdTraceRaysKHR-commandBuffer-04625";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700641 img_filter_cubic = "VUID-vkCmdTraceRaysKHR-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700642 filter_cubic = "VUID-vkCmdTraceRaysKHR-filterCubic-02694";
643 filter_cubic_min_max = "VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200644 storage_image_read_without_format = "VUID-vkCmdTraceRaysKHR-OpTypeImage-06424";
645 storage_image_write_without_format = "VUID-vkCmdTraceRaysKHR-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200646 depth_compare_sample = "VUID-vkCmdTraceRaysKHR-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700647 }
648};
649
650struct DispatchVuidsCmdTraceRaysIndirectKHR: DrawDispatchVuid {
651 DispatchVuidsCmdTraceRaysIndirectKHR() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700652 pipeline_bound = "VUID-vkCmdTraceRaysIndirectKHR-None-02700";
653 dynamic_state = "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701";
654 compatible_pipeline = "VUID-vkCmdTraceRaysIndirectKHR-None-02697";
655 linear_sampler = "VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553";
656 cubic_sampler = "VUID-vkCmdTraceRaysIndirectKHR-None-02692";
Shannon McPherson57255a62020-12-23 16:00:54 -0700657 indirect_contiguous_memory = "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632";
658 indirect_buffer_bit = "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700659 corner_sampled_address_mode = "VUID-vkCmdTraceRaysIndirectKHR-flags-02696";
660 imageview_atomic = "VUID-vkCmdTraceRaysIndirectKHR-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700661 push_constants_set = "VUID-vkCmdTraceRaysIndirectKHR-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700662 descriptor_valid = "VUID-vkCmdTraceRaysIndirectKHR-None-02699";
663 sampler_imageview_type = "VUID-vkCmdTraceRaysIndirectKHR-None-02702";
664 sampler_implicitLod_dref_proj = "VUID-vkCmdTraceRaysIndirectKHR-None-02703";
665 sampler_bias_offset = "VUID-vkCmdTraceRaysIndirectKHR-None-02704";
666 dynamic_state_setting_commands = "VUID-vkCmdTraceRaysIndirectKHR-None-02859";
667 unprotected_command_buffer = "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707";
sfricke-samsunga3c47d12021-09-30 13:34:54 -0700668 ray_query_protected_cb = "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700669 img_filter_cubic = "VUID-vkCmdTraceRaysIndirectKHR-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700670 filter_cubic = "VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694";
671 filter_cubic_min_max = "VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200672 storage_image_read_without_format = "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-06424";
673 storage_image_write_without_format = "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200674 depth_compare_sample = "VUID-vkCmdTraceRaysIndirectKHR-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700675 }
676};
677
678struct DispatchVuidsCmdDrawMeshTasksNV: DrawDispatchVuid {
679 DispatchVuidsCmdDrawMeshTasksNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700680 pipeline_bound = "VUID-vkCmdDrawMeshTasksNV-None-02700";
681 dynamic_state = "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701";
682 compatible_pipeline = "VUID-vkCmdDrawMeshTasksNV-None-02697";
683 render_pass_compatible = "VUID-vkCmdDrawMeshTasksNV-renderPass-02684";
684 subpass_index = "VUID-vkCmdDrawMeshTasksNV-subpass-02685";
685 sample_location = "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689";
686 linear_sampler = "VUID-vkCmdDrawMeshTasksNV-magFilter-04553";
687 cubic_sampler = "VUID-vkCmdDrawMeshTasksNV-None-02692";
688 viewport_count = "VUID-vkCmdDrawMeshTasksNV-viewportCount-03417";
689 scissor_count = "VUID-vkCmdDrawMeshTasksNV-scissorCount-03418";
690 viewport_scissor_count = "VUID-vkCmdDrawMeshTasksNV-viewportCount-03419";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700691 corner_sampled_address_mode = "VUID-vkCmdDrawMeshTasksNV-flags-02696";
692 subpass_input = "VUID-vkCmdDrawMeshTasksNV-None-02686";
693 imageview_atomic = "VUID-vkCmdDrawMeshTasksNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700694 push_constants_set = "VUID-vkCmdDrawMeshTasksNV-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700695 image_subresources = "VUID-vkCmdDrawMeshTasksNV-None-04584";
696 descriptor_valid = "VUID-vkCmdDrawMeshTasksNV-None-02699";
697 sampler_imageview_type = "VUID-vkCmdDrawMeshTasksNV-None-02702";
698 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMeshTasksNV-None-02703";
699 sampler_bias_offset = "VUID-vkCmdDrawMeshTasksNV-None-02704";
700 dynamic_state_setting_commands = "VUID-vkCmdDrawMeshTasksNV-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700701 rasterization_samples = "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700702 unprotected_command_buffer = "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707";
703 max_multiview_instance_index = "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700704 img_filter_cubic = "VUID-vkCmdDrawMeshTasksNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700705 filter_cubic = "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694";
706 filter_cubic_min_max = "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000707 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600708 rasterizer_discard_enable = "VUID-vkCmdDrawMeshTasksNV-None-04876";
709 depth_bias_enable = "VUID-vkCmdDrawMeshTasksNV-None-04877";
710 logic_op = "VUID-vkCmdDrawMeshTasksNV-logicOp-04878";
Piers Daniell924cd832021-05-18 13:48:47 -0600711 vertex_input = kVUID_Core_CmdDrawMeshTasksNV_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200712 blend_enable = "VUID-vkCmdDrawMeshTasksNV-blendEnable-04727";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200713 storage_image_read_without_format = "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-06424";
714 storage_image_write_without_format = "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200715 depth_compare_sample = "VUID-vkCmdDrawMeshTasksNV-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700716 }
717};
718
719struct DispatchVuidsCmdDrawMeshTasksIndirectNV: DrawDispatchVuid {
720 DispatchVuidsCmdDrawMeshTasksIndirectNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700721 pipeline_bound = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700";
722 dynamic_state = "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701";
723 compatible_pipeline = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697";
724 render_pass_compatible = "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684";
725 subpass_index = "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685";
726 sample_location = "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689";
727 linear_sampler = "VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553";
728 cubic_sampler = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692";
729 indirect_protected_cb = "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711";
730 indirect_contiguous_memory = "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708";
731 indirect_buffer_bit = "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709";
732 viewport_count = "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417";
733 scissor_count = "VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418";
734 viewport_scissor_count = "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700735 corner_sampled_address_mode = "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696";
736 subpass_input = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686";
737 imageview_atomic = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700738 push_constants_set = "VUID-vkCmdDrawMeshTasksIndirectNV-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700739 image_subresources = "VUID-vkCmdDrawMeshTasksIndirectNV-None-04584";
740 descriptor_valid = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699";
741 sampler_imageview_type = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702";
742 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703";
743 sampler_bias_offset = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704";
744 dynamic_state_setting_commands = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700745 rasterization_samples = "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700746 unprotected_command_buffer = "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707";
747 max_multiview_instance_index = "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700748 img_filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700749 filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694";
750 filter_cubic_min_max = "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000751 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600752 rasterizer_discard_enable = "VUID-vkCmdDrawMeshTasksIndirectNV-None-04876";
753 depth_bias_enable = "VUID-vkCmdDrawMeshTasksIndirectNV-None-04877";
754 logic_op = "VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878";
Piers Daniell924cd832021-05-18 13:48:47 -0600755 vertex_input = kVUID_Core_CmdDrawMeshTasksIndirectNV_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200756 blend_enable = "VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200757 storage_image_read_without_format = "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-06424";
758 storage_image_write_without_format = "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200759 depth_compare_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700760 }
761};
762
763struct DispatchVuidsCmdDrawMeshTasksIndirectCountNV : DrawDispatchVuid {
764 DispatchVuidsCmdDrawMeshTasksIndirectCountNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700765 pipeline_bound = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700";
766 dynamic_state = "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701";
767 compatible_pipeline = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697";
768 render_pass_compatible = "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684";
769 subpass_index = "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685";
770 sample_location = "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689";
771 linear_sampler = "VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553";
772 cubic_sampler = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692";
773 indirect_protected_cb = "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711";
774 indirect_contiguous_memory = "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708";
775 indirect_buffer_bit = "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709";
776 viewport_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417";
777 scissor_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418";
778 viewport_scissor_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700779 corner_sampled_address_mode = "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696";
780 subpass_input = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686";
781 imageview_atomic = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700782 push_constants_set = "VUID-vkCmdDrawMeshTasksIndirectCountNV-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700783 image_subresources = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04584";
784 descriptor_valid = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699";
785 sampler_imageview_type = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702";
786 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703";
787 sampler_bias_offset = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704";
788 dynamic_state_setting_commands = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700789 rasterization_samples = "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700790 unprotected_command_buffer = "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707";
791 max_multiview_instance_index = "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700792 img_filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700793 filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694";
794 filter_cubic_min_max = "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000795 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600796 rasterizer_discard_enable = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876";
797 depth_bias_enable = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877";
798 logic_op = "VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878";
Piers Daniell924cd832021-05-18 13:48:47 -0600799 vertex_input = kVUID_Core_CmdDrawMeshTasksIndirectCountNV_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200800 blend_enable = "VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200801 storage_image_read_without_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-06424";
802 storage_image_write_without_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200803 depth_compare_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700804 }
805};
806
807struct DispatchVuidsCmdDrawIndirectByteCountEXT: DrawDispatchVuid {
808 DispatchVuidsCmdDrawIndirectByteCountEXT() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700809 pipeline_bound = "VUID-vkCmdDrawIndirectByteCountEXT-None-02700";
810 dynamic_state = "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701";
811 vertex_binding = "VUID-vkCmdDrawIndirectByteCountEXT-None-04007";
812 vertex_binding_null = "VUID-vkCmdDrawIndirectByteCountEXT-None-04008";
813 compatible_pipeline = "VUID-vkCmdDrawIndirectByteCountEXT-None-02697";
814 render_pass_compatible = "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684";
815 subpass_index = "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685";
816 sample_location = "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689";
817 linear_sampler = "VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553";
818 cubic_sampler = "VUID-vkCmdDrawIndirectByteCountEXT-None-02692";
819 indirect_protected_cb = "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646";
sfricke-samsungb091d4e2021-04-18 23:15:59 -0700820 indirect_contiguous_memory = "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567",
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700821 indirect_buffer_bit = "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290";
822 viewport_count = "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417";
823 scissor_count = "VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418";
824 viewport_scissor_count = "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419";
825 primitive_topology = "VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420";
826 corner_sampled_address_mode = "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696";
827 subpass_input = "VUID-vkCmdDrawIndirectByteCountEXT-None-02686";
828 imageview_atomic = "VUID-vkCmdDrawIndirectByteCountEXT-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700829 push_constants_set = "VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700830 image_subresources = "VUID-vkCmdDrawIndirectByteCountEXT-None-04584";
831 descriptor_valid = "VUID-vkCmdDrawIndirectByteCountEXT-None-02699";
832 sampler_imageview_type = "VUID-vkCmdDrawIndirectByteCountEXT-None-02702";
833 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndirectByteCountEXT-None-02703";
834 sampler_bias_offset = "VUID-vkCmdDrawIndirectByteCountEXT-None-02704";
835 vertex_binding_attribute = "VUID-vkCmdDrawIndirectByteCountEXT-None-02721";
836 dynamic_state_setting_commands = "VUID-vkCmdDrawIndirectByteCountEXT-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700837 rasterization_samples = "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700838 unprotected_command_buffer = "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707";
839 max_multiview_instance_index = "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700840 img_filter_cubic = "VUID-vkCmdDrawIndirectByteCountEXT-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700841 filter_cubic = "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694";
842 filter_cubic_min_max = "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000843 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600844 patch_control_points = "VUID-vkCmdDrawIndirectByteCountEXT-None-04875";
845 rasterizer_discard_enable = "VUID-vkCmdDrawIndirectByteCountEXT-None-04876";
846 depth_bias_enable = "VUID-vkCmdDrawIndirectByteCountEXT-None-04877";
847 logic_op = "VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878";
848 primitive_restart_enable = "VUID-vkCmdDrawIndirectByteCountEXT-None-04879";
849 vertex_input_binding_stride = "VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04884";
850 vertex_input = kVUID_Core_CmdDrawIndirectByteCountEXT_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200851 blend_enable = "VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200852 storage_image_read_without_format = "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-06424";
853 storage_image_write_without_format = "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200854 depth_compare_sample = "VUID-vkCmdDrawIndirectByteCountEXT-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700855 }
856};
857
858struct DispatchVuidsCmdDispatchBase: DrawDispatchVuid {
859 DispatchVuidsCmdDispatchBase() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700860 pipeline_bound = "VUID-vkCmdDispatchBase-None-02700";
Mark Lobodzinski02d37552020-12-28 13:29:46 -0700861 dynamic_state = "VUID-vkCmdDispatchBase-commandBuffer-02701";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700862 compatible_pipeline = "VUID-vkCmdDispatchBase-None-02697";
863 linear_sampler = "VUID-vkCmdDispatchBase-magFilter-04553";
864 cubic_sampler = "VUID-vkCmdDispatchBase-None-02692";
865 corner_sampled_address_mode = "VUID-vkCmdDispatchBase-flags-02696";
866 imageview_atomic = "VUID-vkCmdDispatchBase-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700867 push_constants_set = "VUID-vkCmdDispatchBase-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700868 descriptor_valid = "VUID-vkCmdDispatchBase-None-02699";
869 sampler_imageview_type = "VUID-vkCmdDispatchBase-None-02702";
870 sampler_implicitLod_dref_proj = "VUID-vkCmdDispatchBase-None-02703";
871 sampler_bias_offset = "VUID-vkCmdDispatchBase-None-02704";
872 dynamic_state_setting_commands = "VUID-vkCmdDispatchBase-None-02859";
873 unprotected_command_buffer = "VUID-vkCmdDispatchBase-commandBuffer-02707";
sfricke-samsunge79d0892021-06-17 08:56:22 -0700874 protected_command_buffer = "VUID-vkCmdDispatchBase-commandBuffer-02712";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700875 img_filter_cubic = "VUID-vkCmdDispatchBase-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700876 filter_cubic = "VUID-vkCmdDispatchBase-filterCubic-02694";
877 filter_cubic_min_max = "VUID-vkCmdDispatchBase-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200878 storage_image_read_without_format = "VUID-vkCmdDispatchBase-OpTypeImage-06424";
879 storage_image_write_without_format = "VUID-vkCmdDispatchBase-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200880 depth_compare_sample = "VUID-vkCmdDispatchBase-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700881 }
882};
883
884// This LUT is created to allow a static listing of each VUID that is covered by drawdispatch commands
Nathaniel Cesarioce9b4812020-12-17 08:55:28 -0700885static const std::map<CMD_TYPE, DrawDispatchVuid> kDrawdispatchVuid = {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700886 {CMD_DRAW, DispatchVuidsCmdDraw()},
Tony-LunarG4490de42021-06-21 15:49:19 -0600887 {CMD_DRAWMULTIEXT, DispatchVuidsCmdDrawMultiEXT()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700888 {CMD_DRAWINDEXED, DispatchVuidsCmdDrawIndexed()},
Tony-LunarG4490de42021-06-21 15:49:19 -0600889 {CMD_DRAWMULTIINDEXEDEXT, DispatchVuidsCmdDrawMultiIndexedEXT()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700890 {CMD_DRAWINDIRECT, DispatchVuidsCmdDrawIndirect()},
891 {CMD_DRAWINDEXEDINDIRECT, DispatchVuidsCmdDrawIndexedIndirect()},
892 {CMD_DISPATCH, DispatchVuidsCmdDispatch()},
893 {CMD_DISPATCHINDIRECT, DispatchVuidsCmdDispatchIndirect()},
894 {CMD_DRAWINDIRECTCOUNT, DispatchVuidsCmdDrawIndirectCount()},
sfricke-samsung85584a72021-09-30 21:43:38 -0700895 {CMD_DRAWINDIRECTCOUNTKHR, DispatchVuidsCmdDrawIndirectCount()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700896 {CMD_DRAWINDEXEDINDIRECTCOUNT, DispatchVuidsCmdDrawIndexedIndirectCount()},
sfricke-samsung85584a72021-09-30 21:43:38 -0700897 {CMD_DRAWINDEXEDINDIRECTCOUNTKHR, DispatchVuidsCmdDrawIndexedIndirectCount()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700898 {CMD_TRACERAYSNV, DispatchVuidsCmdTraceRaysNV()},
899 {CMD_TRACERAYSKHR, DispatchVuidsCmdTraceRaysKHR()},
900 {CMD_TRACERAYSINDIRECTKHR, DispatchVuidsCmdTraceRaysIndirectKHR()},
901 {CMD_DRAWMESHTASKSNV, DispatchVuidsCmdDrawMeshTasksNV()},
902 {CMD_DRAWMESHTASKSINDIRECTNV, DispatchVuidsCmdDrawMeshTasksIndirectNV()},
903 {CMD_DRAWMESHTASKSINDIRECTCOUNTNV, DispatchVuidsCmdDrawMeshTasksIndirectCountNV()},
904 {CMD_DRAWINDIRECTBYTECOUNTEXT, DispatchVuidsCmdDrawIndirectByteCountEXT()},
905 {CMD_DISPATCHBASE, DispatchVuidsCmdDispatchBase()},
sfricke-samsung85584a72021-09-30 21:43:38 -0700906 {CMD_DISPATCHBASEKHR, DispatchVuidsCmdDispatchBase()},
Spencer Fricke507600b2020-03-22 13:23:06 -0700907 // Used if invalid cmd_type is used
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700908 {CMD_NONE, DrawDispatchVuid()}
Spencer Fricke507600b2020-03-22 13:23:06 -0700909};
910// clang-format on
911
912// Getter function to provide kVUIDUndefined in case an invalid cmd_type is passed in
913const DrawDispatchVuid &CoreChecks::GetDrawDispatchVuid(CMD_TYPE cmd_type) const {
Nathaniel Cesarioce9b4812020-12-17 08:55:28 -0700914 if (kDrawdispatchVuid.find(cmd_type) != kDrawdispatchVuid.cend()) {
915 return kDrawdispatchVuid.at(cmd_type);
Spencer Fricke507600b2020-03-22 13:23:06 -0700916 } else {
Nathaniel Cesarioce9b4812020-12-17 08:55:28 -0700917 return kDrawdispatchVuid.at(CMD_NONE);
Spencer Fricke507600b2020-03-22 13:23:06 -0700918 }
919}
920
Jasper St. Pierre512613a2019-04-08 16:25:23 -0700921// Generic function to handle validation for all CmdDraw* type functions
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700922bool CoreChecks::ValidateCmdDrawType(const CMD_BUFFER_STATE &cb_state, bool indexed, VkPipelineBindPoint bind_point,
sfricke-samsung85584a72021-09-30 21:43:38 -0700923 CMD_TYPE cmd_type) const {
Jasper St. Pierre512613a2019-04-08 16:25:23 -0700924 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700925 skip |= ValidateCmd(&cb_state, cmd_type);
926 skip |= ValidateCmdBufDrawState(&cb_state, cmd_type, indexed, bind_point);
927 skip |= ValidateCmdRayQueryState(&cb_state, cmd_type, bind_point);
Jasper St. Pierre512613a2019-04-08 16:25:23 -0700928 return skip;
929}
930
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700931bool CoreChecks::ValidateCmdDrawInstance(const CMD_BUFFER_STATE &cb_node, uint32_t instanceCount, uint32_t firstInstance,
sfricke-samsung85584a72021-09-30 21:43:38 -0700932 CMD_TYPE cmd_type) const {
locke-lunarg3fa463a2020-10-23 16:39:04 -0600933 bool skip = false;
934 const DrawDispatchVuid vuid = GetDrawDispatchVuid(cmd_type);
sfricke-samsung85584a72021-09-30 21:43:38 -0700935 const char *caller = CommandTypeString(cmd_type);
locke-lunarg3fa463a2020-10-23 16:39:04 -0600936
937 // Verify maxMultiviewInstanceIndex
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700938 if (cb_node.activeRenderPass && cb_node.activeRenderPass->renderPass() && enabled_features.multiview_features.multiview &&
locke-lunarg3fa463a2020-10-23 16:39:04 -0600939 ((instanceCount + firstInstance) > phys_dev_ext_props.multiview_props.maxMultiviewInstanceIndex)) {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700940 LogObjectList objlist(cb_node.Handle());
941 objlist.add(cb_node.activeRenderPass->Handle());
locke-lunarg3fa463a2020-10-23 16:39:04 -0600942 skip |= LogError(objlist, vuid.max_multiview_instance_index,
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700943 "%s: renderpass %s multiview is enabled, and maxMultiviewInstanceIndex: %" PRIu32
944 ", but instanceCount: %" PRIu32 "and firstInstance: %" PRIu32 ".",
945 caller, report_data->FormatHandle(cb_node.activeRenderPass->Handle()).c_str(),
locke-lunarg3fa463a2020-10-23 16:39:04 -0600946 phys_dev_ext_props.multiview_props.maxMultiviewInstanceIndex, instanceCount, firstInstance);
947 }
948 return skip;
949}
950
Jasper St. Pierre512613a2019-04-08 16:25:23 -0700951bool CoreChecks::PreCallValidateCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount,
Jeff Bolz5c801d12019-10-09 10:38:45 -0500952 uint32_t firstVertex, uint32_t firstInstance) const {
locke-lunarg3fa463a2020-10-23 16:39:04 -0600953 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700954 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
955 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAW);
956 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAW);
locke-lunarg3fa463a2020-10-23 16:39:04 -0600957 return skip;
Jasper St. Pierre512613a2019-04-08 16:25:23 -0700958}
959
Tony-LunarG4490de42021-06-21 15:49:19 -0600960bool CoreChecks::PreCallValidateCmdDrawMultiEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
961 const VkMultiDrawInfoEXT *pVertexInfo, uint32_t instanceCount,
962 uint32_t firstInstance, uint32_t stride) const {
963 bool skip = false;
964 if (!enabled_features.multi_draw_features.multiDraw) {
965 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiEXT-None-04933",
966 "vkCmdDrawMultiEXT(): The multiDraw feature must be enabled to "
967 "call this command.");
968 }
969 if (drawCount > phys_dev_ext_props.multi_draw_props.maxMultiDrawCount) {
970 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiEXT-drawCount-04934",
971 "vkCmdDrawMultiEXT(): parameter, uint32_t drawCount (%" PRIu32
972 ") must be less than VkPhysicalDeviceMultiDrawPropertiesEXT::maxMultiDrawCount (%" PRIu32 ").",
973 drawCount, phys_dev_ext_props.multi_draw_props.maxMultiDrawCount);
974 }
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700975 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
976 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWMULTIEXT);
977 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMULTIEXT);
Tony-LunarG4490de42021-06-21 15:49:19 -0600978 return skip;
979}
980
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700981bool CoreChecks::ValidateCmdDrawIndexedBufferSize(const CMD_BUFFER_STATE &cb_state, uint32_t indexCount, uint32_t firstIndex,
982 const char *caller, const char *first_index_vuid) const {
Tony-LunarG4490de42021-06-21 15:49:19 -0600983 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700984 if (cb_state.status & CBSTATUS_INDEX_BUFFER_BOUND) {
Tony-LunarG4490de42021-06-21 15:49:19 -0600985 unsigned int index_size = 0;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -0700986 const auto &index_buffer_binding = cb_state.index_buffer_binding;
Tony-LunarG4490de42021-06-21 15:49:19 -0600987 if (index_buffer_binding.index_type == VK_INDEX_TYPE_UINT16) {
988 index_size = 2;
989 }
990 else if (index_buffer_binding.index_type == VK_INDEX_TYPE_UINT32) {
991 index_size = 4;
992 }
993 else if (index_buffer_binding.index_type == VK_INDEX_TYPE_UINT8_EXT) {
994 index_size = 1;
995 }
996 VkDeviceSize end_offset = (index_size * (static_cast<VkDeviceSize>(firstIndex) + indexCount)) + index_buffer_binding.offset;
997 if (end_offset > index_buffer_binding.size) {
998 skip |= LogError(index_buffer_binding.buffer_state->buffer(), first_index_vuid,
999 "%s: index size (%u) * (firstIndex (%u) + indexCount (%u)) "
1000 "+ binding offset (%" PRIuLEAST64 ") = an ending offset of %" PRIuLEAST64
1001 " bytes, which is greater than the index buffer size (%" PRIuLEAST64 ").",
1002 caller, index_size, firstIndex, indexCount, index_buffer_binding.offset, end_offset,
1003 index_buffer_binding.size);
1004 }
1005 }
1006 return skip;
1007}
1008
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001009bool CoreChecks::PreCallValidateCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount,
Jeff Bolz5c801d12019-10-09 10:38:45 -05001010 uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) const {
locke-lunarg3fa463a2020-10-23 16:39:04 -06001011 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001012 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1013 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWINDEXED);
1014 skip |= ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDEXED);
1015 skip |= ValidateCmdDrawIndexedBufferSize(*cb_state, indexCount, firstIndex, "vkCmdDrawIndexed()",
Tony-LunarG4490de42021-06-21 15:49:19 -06001016 "VUID-vkCmdDrawIndexed-firstIndex-04932");
1017 return skip;
1018}
1019
1020bool CoreChecks::PreCallValidateCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
1021 const VkMultiDrawIndexedInfoEXT *pIndexInfo, uint32_t instanceCount,
1022 uint32_t firstInstance, uint32_t stride,
1023 const int32_t *pVertexOffset) const {
1024 bool skip = false;
1025 if (!enabled_features.multi_draw_features.multiDraw) {
1026 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiIndexedEXT-None-04937",
1027 "vkCmdDrawMultiIndexedEXT(): The multiDraw feature must be enabled to "
1028 "call this command.");
1029 }
1030 if (drawCount > phys_dev_ext_props.multi_draw_props.maxMultiDrawCount) {
1031 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939",
1032 "vkCmdDrawMultiIndexedEXT(): parameter, uint32_t drawCount (0x%" PRIu32
1033 ") must be less than VkPhysicalDeviceMultiDrawPropertiesEXT::maxMultiDrawCount (0x%" PRIu32 ").",
1034 drawCount, phys_dev_ext_props.multi_draw_props.maxMultiDrawCount);
1035 }
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001036 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1037 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWMULTIINDEXEDEXT);
1038 skip |= ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMULTIINDEXEDEXT);
Ricardo Garcia27a26f52021-07-13 15:52:14 +02001039 const auto info_bytes = reinterpret_cast<const char *>(pIndexInfo);
Tony-LunarG4490de42021-06-21 15:49:19 -06001040 for (uint32_t i = 0; i < drawCount; i++) {
Ricardo Garcia27a26f52021-07-13 15:52:14 +02001041 const auto info_ptr = reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>(info_bytes + i * stride);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001042 skip |= ValidateCmdDrawIndexedBufferSize(*cb_state, info_ptr->indexCount, info_ptr->firstIndex,
Tony-LunarG4490de42021-06-21 15:49:19 -06001043 "vkCmdDrawMultiIndexedEXT()", "VUID-vkCmdDrawMultiIndexedEXT-firstIndex-04938");
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001044 }
1045 return skip;
1046}
1047
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001048bool CoreChecks::PreCallValidateCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1049 uint32_t drawCount, uint32_t stride) const {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001050 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1051 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDIRECT);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001052 const auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001053 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWINDIRECT);
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001054 if (drawCount > 1) {
Lockee68ac652019-05-06 10:17:33 -06001055 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndirect-drawCount-00476", stride,
1056 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand));
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001057 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndirect-drawCount-00488", stride,
1058 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand), drawCount, offset,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001059 buffer_state.get());
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001060 } else if ((drawCount == 1) && (offset + sizeof(VkDrawIndirectCommand)) > buffer_state->createInfo.size) {
1061 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirect-drawCount-00487",
Jeremy Gebbenda6b48f2021-05-13 10:46:18 -06001062 "CmdDrawIndirect: drawCount equals 1 and (offset + sizeof(VkDrawIndirectCommand)) (%" PRIu64 ") is not less than "
1063 "or equal to the size of buffer (%" PRIu64 ").",
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001064 (offset + sizeof(VkDrawIndirectCommand)), buffer_state->createInfo.size);
Lockee68ac652019-05-06 10:17:33 -06001065 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001066 // TODO: If the drawIndirectFirstInstance feature is not enabled, all the firstInstance members of the
1067 // VkDrawIndirectCommand structures accessed by this command must be 0, which will require access to the contents of 'buffer'.
1068 return skip;
1069}
1070
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001071bool CoreChecks::PreCallValidateCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001072 uint32_t drawCount, uint32_t stride) const {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001073 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1074 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDEXEDINDIRECT);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001075 const auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001076 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWINDEXEDINDIRECT);
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001077 if (drawCount > 1) {
Lockee68ac652019-05-06 10:17:33 -06001078 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndexedIndirect-drawCount-00528", stride,
1079 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand));
1080 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndexedIndirect-drawCount-00540", stride,
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001081 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand), drawCount,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001082 offset, buffer_state.get());
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001083 } else if ((drawCount == 1) && (offset + sizeof(VkDrawIndexedIndirectCommand)) > buffer_state->createInfo.size) {
1084 skip |= LogError(
1085 commandBuffer, "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
Jeremy Gebbenda6b48f2021-05-13 10:46:18 -06001086 "CmdDrawIndexedIndirect: drawCount equals 1 and (offset + sizeof(VkDrawIndexedIndirectCommand)) (%" PRIu64 ") is not less than "
1087 "or equal to the size of buffer (%" PRIu64 ").",
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001088 (offset + sizeof(VkDrawIndexedIndirectCommand)), buffer_state->createInfo.size);
Lockee68ac652019-05-06 10:17:33 -06001089 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001090 // TODO: If the drawIndirectFirstInstance feature is not enabled, all the firstInstance members of the
1091 // VkDrawIndexedIndirectCommand structures accessed by this command must be 0, which will require access to the contents of
1092 // 'buffer'.
1093 return skip;
1094}
1095
Jeff Bolz5c801d12019-10-09 10:38:45 -05001096bool CoreChecks::PreCallValidateCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) const {
Lockef39c0772019-04-03 14:40:02 -06001097 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001098 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1099 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCH);
Lockef39c0772019-04-03 14:40:02 -06001100 return skip;
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001101}
1102
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001103bool CoreChecks::ValidateBaseGroups(const CMD_BUFFER_STATE &cb_state, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
Tony-LunarGf825e6d2020-12-16 13:05:17 -07001104 const char *apiName) const {
1105 bool skip = false;
1106 if (baseGroupX || baseGroupY || baseGroupZ) {
Tony-LunarGf825e6d2020-12-16 13:05:17 -07001107 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_COMPUTE);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001108 const auto *pipeline_state = cb_state.lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben11af9792021-08-20 10:20:09 -06001109 if (pipeline_state && !(pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_DISPATCH_BASE)) {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001110 skip |= LogError(cb_state.Handle(), "VUID-vkCmdDispatchBase-baseGroupX-00427",
Tony-LunarGf825e6d2020-12-16 13:05:17 -07001111 "%s(): If any of baseGroupX, baseGroupY, or baseGroupZ are not zero, then the bound compute pipeline "
1112 "must have been created with the VK_PIPELINE_CREATE_DISPATCH_BASE flag",
1113 apiName);
1114 }
1115 }
1116 return skip;
1117}
1118
locke-lunarg25b6c352020-08-06 17:44:18 -06001119bool CoreChecks::PreCallValidateCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY,
1120 uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY,
1121 uint32_t groupCountZ) const {
1122 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001123 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1124 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCHBASE);
1125 skip |= ValidateBaseGroups(*cb_state, baseGroupX, baseGroupY, baseGroupZ, "vkCmdDispatchBase()");
locke-lunarg25b6c352020-08-06 17:44:18 -06001126 return skip;
1127}
1128
1129bool CoreChecks::PreCallValidateCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY,
1130 uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY,
1131 uint32_t groupCountZ) const {
1132 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001133 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1134 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCHBASEKHR);
1135 skip |= ValidateBaseGroups(*cb_state, baseGroupX, baseGroupY, baseGroupZ, "vkCmdDispatchBaseKHR()");
locke-lunarg25b6c352020-08-06 17:44:18 -06001136 return skip;
1137}
1138
Jeff Bolz5c801d12019-10-09 10:38:45 -05001139bool CoreChecks::PreCallValidateCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001140 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1141 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCHINDIRECT);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001142 const auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001143 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DISPATCHINDIRECT);
Tony-LunarGda555b52021-01-06 13:43:49 -07001144 if ((offset + sizeof(VkDispatchIndirectCommand)) > buffer_state->createInfo.size) {
1145 skip |= LogError(commandBuffer, "VUID-vkCmdDispatchIndirect-offset-00407",
1146 "vkCmdDispatchIndirect(): The sum of offset and the size of VkDispatchIndirectCommand is greater than the "
1147 "size of the buffer");
1148 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001149 return skip;
1150}
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001151bool CoreChecks::ValidateCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1152 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
sfricke-samsung85584a72021-09-30 21:43:38 -07001153 uint32_t stride, CMD_TYPE cmd_type) const {
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001154 bool skip = false;
sfricke-samsung85584a72021-09-30 21:43:38 -07001155 const char *apiName = CommandTypeString(cmd_type);
Nathaniel Cesario7f231f12021-03-25 12:10:58 -06001156 if ((device_extensions.vk_khr_draw_indirect_count != kEnabledByCreateinfo) &&
1157 ((api_version >= VK_API_VERSION_1_2) && (enabled_features.core12.drawIndirectCount == VK_FALSE))) {
Shannon McPherson2c793ba2020-08-28 12:13:24 -06001158 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirectCount-None-04445",
sfricke-samsung27c70722020-05-02 08:42:39 -07001159 "%s(): Starting in Vulkan 1.2 the VkPhysicalDeviceVulkan12Features::drawIndirectCount must be enabled to "
1160 "call this command.",
1161 apiName);
1162 }
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001163 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndirectCount-stride-03110", stride,
1164 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand));
Lockee68ac652019-05-06 10:17:33 -06001165 if (maxDrawCount > 1) {
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001166 const auto buffer_state = Get<BUFFER_STATE>(buffer);
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001167 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndirectCount-maxDrawCount-03111", stride,
1168 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand), maxDrawCount, offset,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001169 buffer_state.get());
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001170 }
1171
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001172 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1173 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, cmd_type);
1174 const auto buffer_state = Get<BUFFER_STATE>(buffer);
1175 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, cmd_type);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001176 const auto count_buffer_state = Get<BUFFER_STATE>(countBuffer);
Jeremy Gebben9f537102021-10-05 16:37:12 -06001177 skip |= ValidateMemoryIsBoundToBuffer(count_buffer_state.get(), apiName, "VUID-vkCmdDrawIndirectCount-countBuffer-02714");
Tony-LunarG83544c72020-01-17 12:30:19 -07001178 skip |=
Jeremy Gebben9f537102021-10-05 16:37:12 -06001179 ValidateBufferUsageFlags(count_buffer_state.get(), VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, true,
Tony-LunarG83544c72020-01-17 12:30:19 -07001180 "VUID-vkCmdDrawIndirectCount-countBuffer-02715", apiName, "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT");
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001181 return skip;
1182}
1183
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001184bool CoreChecks::PreCallValidateCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1185 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
1186 uint32_t stride) const {
Tony-LunarG83544c72020-01-17 12:30:19 -07001187 return ValidateCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001188 CMD_DRAWINDIRECTCOUNTKHR);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001189}
1190
1191bool CoreChecks::PreCallValidateCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1192 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
1193 uint32_t stride) const {
Tony-LunarG83544c72020-01-17 12:30:19 -07001194 return ValidateCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001195 CMD_DRAWINDIRECTCOUNT);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001196}
1197
1198bool CoreChecks::ValidateCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1199 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
sfricke-samsung85584a72021-09-30 21:43:38 -07001200 uint32_t stride, CMD_TYPE cmd_type) const {
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001201 bool skip = false;
sfricke-samsung85584a72021-09-30 21:43:38 -07001202 const char *apiName = CommandTypeString(cmd_type);
Nathaniel Cesario7f231f12021-03-25 12:10:58 -06001203 if ((device_extensions.vk_khr_draw_indirect_count != kEnabledByCreateinfo) &&
1204 ((api_version >= VK_API_VERSION_1_2) && (enabled_features.core12.drawIndirectCount == VK_FALSE))) {
Shannon McPherson2c793ba2020-08-28 12:13:24 -06001205 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndexedIndirectCount-None-04445",
sfricke-samsung27c70722020-05-02 08:42:39 -07001206 "%s(): Starting in Vulkan 1.2 the VkPhysicalDeviceVulkan12Features::drawIndirectCount must be enabled to "
1207 "call this command.",
1208 apiName);
1209 }
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001210 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndexedIndirectCount-stride-03142", stride,
1211 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand));
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001212 const auto buffer_state = Get<BUFFER_STATE>(buffer);
Lockee68ac652019-05-06 10:17:33 -06001213 if (maxDrawCount > 1) {
Mike Schuchardt65847d92019-12-20 13:50:47 -08001214 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143", stride,
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001215 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand), maxDrawCount,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001216 offset, buffer_state.get());
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001217 }
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001218 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1219 skip |= ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, cmd_type);
1220 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, cmd_type);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001221 const auto count_buffer_state = Get<BUFFER_STATE>(countBuffer);
Jeremy Gebben9f537102021-10-05 16:37:12 -06001222 skip |=
1223 ValidateMemoryIsBoundToBuffer(count_buffer_state.get(), apiName, "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714");
1224 skip |= ValidateBufferUsageFlags(count_buffer_state.get(), VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, true,
sfricke-samsungf692b972020-05-02 08:00:45 -07001225 "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715", apiName,
Mike Schuchardt65847d92019-12-20 13:50:47 -08001226 "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT");
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001227 return skip;
1228}
1229
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001230bool CoreChecks::PreCallValidateCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1231 VkBuffer countBuffer, VkDeviceSize countBufferOffset,
1232 uint32_t maxDrawCount, uint32_t stride) const {
sfricke-samsungf692b972020-05-02 08:00:45 -07001233 return ValidateCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001234 CMD_DRAWINDEXEDINDIRECTCOUNTKHR);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001235}
1236
1237bool CoreChecks::PreCallValidateCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1238 VkBuffer countBuffer, VkDeviceSize countBufferOffset,
1239 uint32_t maxDrawCount, uint32_t stride) const {
sfricke-samsungf692b972020-05-02 08:00:45 -07001240 return ValidateCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001241 CMD_DRAWINDEXEDINDIRECTCOUNT);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001242}
1243
locke-lunarg9a16ebb2020-07-30 16:56:33 -06001244bool CoreChecks::PreCallValidateCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount,
1245 uint32_t firstInstance, VkBuffer counterBuffer,
1246 VkDeviceSize counterBufferOffset, uint32_t counterOffset,
1247 uint32_t vertexStride) const {
sfricke-samsungd5e9adb2020-10-26 03:59:29 -07001248 bool skip = false;
Tony-LunarG2c94ba82020-11-05 14:21:40 -07001249 if (!enabled_features.transform_feedback_features.transformFeedback) {
1250 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
1251 "%s: transformFeedback feature is not enabled.", "vkCmdDrawIndirectByteCountEXT()");
1252 }
sfricke-samsung45996a42021-09-16 13:45:27 -07001253 if (IsExtEnabled(device_extensions.vk_ext_transform_feedback) &&
1254 !phys_dev_ext_props.transform_feedback_props.transformFeedbackDraw) {
sfricke-samsungba459bd2020-12-06 23:20:04 -08001255 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
Tony-LunarG2c94ba82020-11-05 14:21:40 -07001256 "%s: VkPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackDraw is not supported",
1257 "vkCmdDrawIndirectByteCountEXT()");
1258 }
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001259 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1260 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWINDIRECTBYTECOUNTEXT);
1261 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDIRECTBYTECOUNTEXT);
1262 const auto counter_buffer_state = Get<BUFFER_STATE>(counterBuffer);
1263 skip |= ValidateIndirectCmd(*cb_state, *counter_buffer_state, CMD_DRAWINDIRECTBYTECOUNTEXT);
sfricke-samsungd5e9adb2020-10-26 03:59:29 -07001264 return skip;
locke-lunarg9a16ebb2020-07-30 16:56:33 -06001265}
1266
Jeff Bolzf6e872c2019-10-22 12:17:28 -05001267bool CoreChecks::PreCallValidateCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
1268 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
1269 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
1270 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
1271 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
1272 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
1273 uint32_t width, uint32_t height, uint32_t depth) const {
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001274 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001275 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_RAY_TRACING_NV, CMD_TRACERAYSNV);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001276 auto callable_shader_buffer_state = Get<BUFFER_STATE>(callableShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001277 if (callable_shader_buffer_state && callableShaderBindingOffset >= callable_shader_buffer_state->createInfo.size) {
1278 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
1279 "vkCmdTraceRaysNV: callableShaderBindingOffset %" PRIu64
1280 " must be less than the size of callableShaderBindingTableBuffer %" PRIu64 " .",
1281 callableShaderBindingOffset, callable_shader_buffer_state->createInfo.size);
1282 }
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001283 auto hit_shader_buffer_state = Get<BUFFER_STATE>(hitShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001284 if (hit_shader_buffer_state && hitShaderBindingOffset >= hit_shader_buffer_state->createInfo.size) {
1285 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
1286 "vkCmdTraceRaysNV: hitShaderBindingOffset %" PRIu64
1287 " must be less than the size of hitShaderBindingTableBuffer %" PRIu64 " .",
1288 hitShaderBindingOffset, hit_shader_buffer_state->createInfo.size);
1289 }
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001290 auto miss_shader_buffer_state = Get<BUFFER_STATE>(missShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001291 if (miss_shader_buffer_state && missShaderBindingOffset >= miss_shader_buffer_state->createInfo.size) {
1292 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
1293 "vkCmdTraceRaysNV: missShaderBindingOffset %" PRIu64
baldurk751594b2020-09-09 09:41:02 +01001294 " must be less than the size of missShaderBindingTableBuffer %" PRIu64 " .",
sourav parmard1521802020-06-07 21:49:02 -07001295 missShaderBindingOffset, miss_shader_buffer_state->createInfo.size);
1296 }
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001297 auto raygen_shader_buffer_state = Get<BUFFER_STATE>(raygenShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001298 if (raygenShaderBindingOffset >= raygen_shader_buffer_state->createInfo.size) {
1299 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
1300 "vkCmdTraceRaysNV: raygenShaderBindingOffset %" PRIu64
baldurk751594b2020-09-09 09:41:02 +01001301 " must be less than the size of raygenShaderBindingTableBuffer %" PRIu64 " .",
sourav parmard1521802020-06-07 21:49:02 -07001302 raygenShaderBindingOffset, raygen_shader_buffer_state->createInfo.size);
1303 }
sourav parmarcd5fb182020-07-17 12:58:44 -07001304
sourav parmar30e19392020-12-02 16:57:21 -08001305 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_RAY_TRACING_NV);
1306 const PIPELINE_STATE *pipeline_state = cb_state->lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben14b0d1a2021-05-15 20:15:41 -06001307 if (!pipeline_state || (pipeline_state && !pipeline_state->pipeline())) {
sourav parmar30e19392020-12-02 16:57:21 -08001308 skip |= LogError(device, "VUID-vkCmdTraceRaysNV-None-02700",
1309 "vkCmdTraceRaysKHR: A valid pipeline must be bound to the pipeline bind point used by this command.");
sourav parmarcd5fb182020-07-17 12:58:44 -07001310 }
Jeff Bolzf6e872c2019-10-22 12:17:28 -05001311 return skip;
1312}
1313
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001314bool CoreChecks::PreCallValidateCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -07001315 const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable,
1316 const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable,
1317 const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable,
1318 const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable, uint32_t width,
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001319 uint32_t height, uint32_t depth) const {
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001320 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001321 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, CMD_TRACERAYSKHR);
Shannon McPherson9caca052020-11-25 11:34:38 -07001322 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);
1323 const PIPELINE_STATE *pipeline_state = cb_state->lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben14b0d1a2021-05-15 20:15:41 -06001324 if (!pipeline_state || (pipeline_state && !pipeline_state->pipeline())) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001325 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-None-02700",
1326 "vkCmdTraceRaysKHR: A valid pipeline must be bound to the pipeline bind point used by this command.");
1327 } else { // bound to valid RT pipeline
Jeremy Gebben11af9792021-08-20 10:20:09 -06001328 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001329 if (!pHitShaderBindingTable->deviceAddress) {
1330 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03697",
1331 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with flags "
1332 "that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, the "
1333 "deviceAddress member of pHitShaderBindingTable must not be zero.");
1334 }
1335 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1336 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03514",
1337 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with "
1338 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, "
1339 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1340 "execute an intersection shader must not be set to zero.");
1341 }
1342 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001343 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001344 if (!pHitShaderBindingTable->deviceAddress) {
1345 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03696",
1346 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with flags "
1347 "that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, the "
1348 "deviceAddress member of pHitShaderBindingTable must not be zero.");
1349 }
1350 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1351 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03513",
1352 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with "
1353 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "
1354 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1355 "execute a closest hit shader must not be set to zero.");
1356 }
1357 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001358 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001359 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1360 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03512",
1361 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with "
1362 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, "
1363 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1364 "execute an any hit shader must not be set to zero.");
1365 }
1366 }
1367 }
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001368 return skip;
1369}
1370
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001371bool CoreChecks::PreCallValidateCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -07001372 const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable,
1373 const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable,
1374 const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable,
1375 const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable,
1376 VkDeviceAddress indirectDeviceAddress) const {
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001377 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001378 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, CMD_TRACERAYSINDIRECTKHR);
Shannon McPherson9caca052020-11-25 11:34:38 -07001379 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001380 const auto *pipeline_state = cb_state->lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben14b0d1a2021-05-15 20:15:41 -06001381 if (!pipeline_state || (pipeline_state && !pipeline_state->pipeline())) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001382 skip |=
1383 LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-None-02700",
1384 "vkCmdTraceRaysIndirectKHR: A valid pipeline must be bound to the pipeline bind point used by this command.");
1385 } else { // valid bind point
Jeremy Gebben11af9792021-08-20 10:20:09 -06001386 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001387 if (!pHitShaderBindingTable || pHitShaderBindingTable->deviceAddress == 0) {
1388 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03697",
1389 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1390 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, the "
1391 "deviceAddress member of pHitShaderBindingTable must not be zero.");
1392 }
1393 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1394 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
1395 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1396 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, "
1397 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1398 "execute an intersection shader must not be set to zero.");
1399 }
1400 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001401 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001402 if (!pHitShaderBindingTable || pHitShaderBindingTable->deviceAddress == 0) {
1403 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03696",
1404 "vkCmdTraceRaysIndirectKHR:If the currently bound ray tracing pipeline was created with "
1405 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "
1406 "the deviceAddress member of pHitShaderBindingTable must not be zero.");
1407 }
1408 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1409 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
1410 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1411 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "
1412 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1413 "execute a closest hit shader must not be set to zero.");
1414 }
1415 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001416 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001417 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1418 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
1419 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1420 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, "
1421 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1422 "execute an any hit shader must not be set to zero.");
1423 }
1424 }
1425 }
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001426 return skip;
1427}
1428
Jeff Bolz5c801d12019-10-09 10:38:45 -05001429bool CoreChecks::PreCallValidateCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) const {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001430 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1431 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMESHTASKSNV);
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001432 return skip;
1433}
1434
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001435bool CoreChecks::PreCallValidateCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
Jeff Bolz5c801d12019-10-09 10:38:45 -05001436 uint32_t drawCount, uint32_t stride) const {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001437 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1438 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMESHTASKSINDIRECTNV);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001439 const auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001440 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWMESHTASKSINDIRECTNV);
Lockee68ac652019-05-06 10:17:33 -06001441 if (drawCount > 1) {
Lockee68ac652019-05-06 10:17:33 -06001442 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157", stride,
1443 "VkDrawMeshTasksIndirectCommandNV", sizeof(VkDrawMeshTasksIndirectCommandNV),
Jeremy Gebben9f537102021-10-05 16:37:12 -06001444 drawCount, offset, buffer_state.get());
Lockee68ac652019-05-06 10:17:33 -06001445 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001446 return skip;
1447}
1448
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001449bool CoreChecks::PreCallValidateCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1450 VkBuffer countBuffer, VkDeviceSize countBufferOffset,
Jeff Bolz5c801d12019-10-09 10:38:45 -05001451 uint32_t maxDrawCount, uint32_t stride) const {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001452 const auto cb_state = Get<CMD_BUFFER_STATE>(commandBuffer);
1453 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMESHTASKSINDIRECTCOUNTNV);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001454 const auto buffer_state = Get<BUFFER_STATE>(buffer);
1455 const auto count_buffer_state = Get<BUFFER_STATE>(countBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001456 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWMESHTASKSINDIRECTCOUNTNV);
Jeremy Gebben9f537102021-10-05 16:37:12 -06001457 skip |= ValidateMemoryIsBoundToBuffer(count_buffer_state.get(), "vkCmdDrawMeshTasksIndirectCountNV()",
Shannon McPhersonde3eeba2019-04-30 16:53:59 -06001458 "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714");
Jeremy Gebben9f537102021-10-05 16:37:12 -06001459 skip |= ValidateBufferUsageFlags(count_buffer_state.get(), VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, true,
sfricke-samsungf692b972020-05-02 08:00:45 -07001460 "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
1461 "vkCmdDrawMeshTasksIndirectCountNV()", "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT");
Lockee68ac652019-05-06 10:17:33 -06001462 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182", stride,
1463 "VkDrawMeshTasksIndirectCommandNV", sizeof(VkDrawMeshTasksIndirectCommandNV));
1464 if (maxDrawCount > 1) {
1465 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183", stride,
1466 "VkDrawMeshTasksIndirectCommandNV", sizeof(VkDrawMeshTasksIndirectCommandNV),
Jeremy Gebben9f537102021-10-05 16:37:12 -06001467 maxDrawCount, offset, buffer_state.get());
Lockee68ac652019-05-06 10:17:33 -06001468 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001469 return skip;
1470}