blob: de6d07e53cd5a5870311fd448d5ff969b931602d [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.
stusmithedc4e392021-12-24 15:22:16 +00005 * Modifications Copyright (C) 2020-2022 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";
ziga-lunarg498b7e72022-03-12 00:33:37 +010066 image_subresources_render_pass_write = "VUID-vkCmdDraw-None-06537";
67 image_subresources_subpass_read = "VUID-vkCmdDraw-None-06538";
68 image_subresources_subpass_write = "VUID-vkCmdDraw-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070069 descriptor_valid = "VUID-vkCmdDraw-None-02699";
70 sampler_imageview_type = "VUID-vkCmdDraw-None-02702";
71 sampler_implicitLod_dref_proj = "VUID-vkCmdDraw-None-02703";
72 sampler_bias_offset = "VUID-vkCmdDraw-None-02704";
73 vertex_binding_attribute = "VUID-vkCmdDraw-None-02721";
74 dynamic_state_setting_commands = "VUID-vkCmdDraw-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -070075 rasterization_samples = "VUID-vkCmdDraw-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070076 unprotected_command_buffer = "VUID-vkCmdDraw-commandBuffer-02707";
77 protected_command_buffer = "VUID-vkCmdDraw-commandBuffer-02712";
78 max_multiview_instance_index = "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -070079 img_filter_cubic = "VUID-vkCmdDraw-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -070080 filter_cubic = "VUID-vkCmdDraw-filterCubic-02694";
81 filter_cubic_min_max = "VUID-vkCmdDraw-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +000082 viewport_count_primitive_shading_rate = "VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552";
Vikram Kushwahaa57b0c32021-04-19 12:21:46 -070083 patch_control_points = "VUID-vkCmdDraw-None-04875";
84 rasterizer_discard_enable = "VUID-vkCmdDraw-None-04876";
85 depth_bias_enable = "VUID-vkCmdDraw-None-04877";
86 logic_op = "VUID-vkCmdDraw-logicOp-04878";
87 primitive_restart_enable = "VUID-vkCmdDraw-None-04879";
Piers Daniell924cd832021-05-18 13:48:47 -060088 vertex_input_binding_stride = "VUID-vkCmdDraw-pStrides-04884";
89 vertex_input = kVUID_Core_CmdDraw_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +020090 blend_enable = "VUID-vkCmdDraw-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -050091 dynamic_rendering_view_mask = "VUID-vkCmdDraw-viewMask-06178";
92 dynamic_rendering_color_count = "VUID-vkCmdDraw-colorAttachmentCount-06179";
93 dynamic_rendering_color_formats = "VUID-vkCmdDraw-colorAttachmentCount-06180";
94 dynamic_rendering_depth_format = "VUID-vkCmdDraw-pDepthAttachment-06181";
95 dynamic_rendering_stencil_format = "VUID-vkCmdDraw-pStencilAttachment-06182";
96 dynamic_rendering_fsr = "VUID-vkCmdDraw-imageView-06183";
97 dynamic_rendering_fdm = "VUID-vkCmdDraw-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -050098 dynamic_rendering_color_sample = "VUID-vkCmdDraw-colorAttachmentCount-06185";
99 dynamic_rendering_depth_sample = "VUID-vkCmdDraw-pDepthAttachment-06186";
100 dynamic_rendering_stencil_sample = "VUID-vkCmdDraw-pStencilAttachment-06187";
101 dynamic_rendering_multi_sample = "VUID-vkCmdDraw-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500102 dynamic_rendering_06189 = "VUID-vkCmdDraw-pDepthAttachment-06189";
103 dynamic_rendering_06190 = "VUID-vkCmdDraw-pStencilAttachment-06190";
104 dynamic_rendering_06198 = "VUID-vkCmdDraw-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200105 storage_image_read_without_format = "VUID-vkCmdDraw-OpTypeImage-06424";
106 storage_image_write_without_format = "VUID-vkCmdDraw-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200107 depth_compare_sample = "VUID-vkCmdDraw-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100108 dynamic_sample_locations = "VUID-vkCmdDraw-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700109 }
110};
111
Tony-LunarG4490de42021-06-21 15:49:19 -0600112struct DispatchVuidsCmdDrawMultiEXT : DrawDispatchVuid {
113 DispatchVuidsCmdDrawMultiEXT() : DrawDispatchVuid() {
114 pipeline_bound = "VUID-vkCmdDrawMultiEXT-None-02700";
115 dynamic_state = "VUID-vkCmdDrawMultiEXT-commandBuffer-02701";
116 vertex_binding = "VUID-vkCmdDrawMultiEXT-None-04007";
117 vertex_binding_null = "VUID-vkCmdDrawMultiEXT-None-04008";
118 compatible_pipeline = "VUID-vkCmdDrawMultiEXT-None-02697";
119 render_pass_compatible = "VUID-vkCmdDrawMultiEXT-renderPass-02684";
120 subpass_index = "VUID-vkCmdDrawMultiEXT-subpass-02685";
121 sample_location = "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-02689";
122 linear_sampler = "VUID-vkCmdDrawMultiEXT-magFilter-04553";
123 cubic_sampler = "VUID-vkCmdDrawMultiEXT-None-02692";
124 viewport_count = "VUID-vkCmdDrawMultiEXT-viewportCount-03417";
125 scissor_count = "VUID-vkCmdDrawMultiEXT-scissorCount-03418";
126 viewport_scissor_count = "VUID-vkCmdDrawMultiEXT-viewportCount-03419";
127 primitive_topology = "VUID-vkCmdDrawMultiEXT-primitiveTopology-03420";
128 corner_sampled_address_mode = "VUID-vkCmdDrawMultiEXT-flags-02696";
129 subpass_input = "VUID-vkCmdDrawMultiEXT-None-02686";
130 imageview_atomic = "VUID-vkCmdDrawMultiEXT-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700131 push_constants_set = "VUID-vkCmdDrawMultiEXT-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100132 image_subresources_render_pass_write = "VUID-vkCmdDrawMultiEXT-None-06537";
133 image_subresources_subpass_read = "VUID-vkCmdDrawMultiEXT-None-06538";
134 image_subresources_subpass_write = "VUID-vkCmdDrawMultiEXT-None-06539";
Tony-LunarG4490de42021-06-21 15:49:19 -0600135 descriptor_valid = "VUID-vkCmdDrawMultiEXT-None-02699";
136 sampler_imageview_type = "VUID-vkCmdDrawMultiEXT-None-02702";
137 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMultiEXT-None-02703";
138 sampler_bias_offset = "VUID-vkCmdDrawMultiEXT-None-02704";
139 vertex_binding_attribute = "VUID-vkCmdDrawMultiEXT-None-02721";
140 dynamic_state_setting_commands = "VUID-vkCmdDrawMultiEXT-None-02859";
141 rasterization_samples = "VUID-vkCmdDrawMultiEXT-rasterizationSamples-04740";
142 unprotected_command_buffer = "VUID-vkCmdDrawMultiEXT-commandBuffer-02707";
143 protected_command_buffer = "VUID-vkCmdDrawMultiEXT-commandBuffer-02712";
144 max_multiview_instance_index = "VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688";
145 img_filter_cubic = "VUID-vkCmdDrawMultiEXT-None-02693";
146 filter_cubic = "VUID-vkCmdDrawMultiEXT-filterCubic-02694";
147 filter_cubic_min_max = "VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695";
148 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-04552";
149 patch_control_points = "VUID-vkCmdDrawMultiEXT-None-04875";
150 rasterizer_discard_enable = "VUID-vkCmdDrawMultiEXT-None-04876";
151 depth_bias_enable = "VUID-vkCmdDrawMultiEXT-None-04877";
152 logic_op = "VUID-vkCmdDrawMultiEXT-logicOp-04878";
153 primitive_restart_enable = "VUID-vkCmdDrawMultiEXT-None-04879";
154 vertex_input_binding_stride = "VUID-vkCmdDrawMultiEXT-pStrides-04884";
155 vertex_input = kVUID_Core_CmdDrawMultiEXT_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200156 blend_enable = "VUID-vkCmdDrawMultiEXT-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500157 dynamic_rendering_view_mask = "VUID-vkCmdDrawMultiEXT-viewMask-06178";
158 dynamic_rendering_color_count = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179";
159 dynamic_rendering_color_formats = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06180";
160 dynamic_rendering_depth_format = "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06181";
161 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06182";
162 dynamic_rendering_fsr = "VUID-vkCmdDrawMultiEXT-imageView-06183";
163 dynamic_rendering_fdm = "VUID-vkCmdDrawMultiEXT-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500164 dynamic_rendering_color_sample = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185";
165 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186";
166 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187";
167 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500168 dynamic_rendering_06189 = "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06189";
169 dynamic_rendering_06190 = "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06190";
170 dynamic_rendering_06198 = "VUID-vkCmdDrawMultiEXT-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200171 storage_image_read_without_format = "VUID-vkCmdDrawMultiEXT-OpTypeImage-06424";
172 storage_image_write_without_format = "VUID-vkCmdDrawMultiEXT-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200173 depth_compare_sample = "VUID-vkCmdDrawMultiEXT-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100174 dynamic_sample_locations = "VUID-vkCmdDrawMultiEXT-None-06666";
Tony-LunarG4490de42021-06-21 15:49:19 -0600175 }
176};
177
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700178struct DispatchVuidsCmdDrawIndexed : DrawDispatchVuid {
179 DispatchVuidsCmdDrawIndexed() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700180 pipeline_bound = "VUID-vkCmdDrawIndexed-None-02700";
181 dynamic_state = "VUID-vkCmdDrawIndexed-commandBuffer-02701";
182 vertex_binding = "VUID-vkCmdDrawIndexed-None-04007";
183 vertex_binding_null = "VUID-vkCmdDrawIndexed-None-04008";
184 compatible_pipeline = "VUID-vkCmdDrawIndexed-None-02697";
185 render_pass_compatible = "VUID-vkCmdDrawIndexed-renderPass-02684";
186 subpass_index = "VUID-vkCmdDrawIndexed-subpass-02685";
187 sample_location = "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689";
188 linear_sampler = "VUID-vkCmdDrawIndexed-magFilter-04553";
189 cubic_sampler = "VUID-vkCmdDrawIndexed-None-02692";
190 viewport_count = "VUID-vkCmdDrawIndexed-viewportCount-03417";
191 scissor_count = "VUID-vkCmdDrawIndexed-scissorCount-03418";
192 viewport_scissor_count = "VUID-vkCmdDrawIndexed-viewportCount-03419";
193 primitive_topology = "VUID-vkCmdDrawIndexed-primitiveTopology-03420";
194 corner_sampled_address_mode = "VUID-vkCmdDrawIndexed-flags-02696";
195 subpass_input = "VUID-vkCmdDrawIndexed-None-02686";
196 imageview_atomic = "VUID-vkCmdDrawIndexed-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700197 push_constants_set = "VUID-vkCmdDrawIndexed-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100198 image_subresources_render_pass_write = "VUID-vkCmdDrawIndexed-None-06537";
199 image_subresources_subpass_read = "VUID-vkCmdDrawIndexed-None-06538";
200 image_subresources_subpass_write = "VUID-vkCmdDrawIndexed-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700201 descriptor_valid = "VUID-vkCmdDrawIndexed-None-02699";
202 sampler_imageview_type = "VUID-vkCmdDrawIndexed-None-02702";
203 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndexed-None-02703";
204 sampler_bias_offset = "VUID-vkCmdDrawIndexed-None-02704";
205 vertex_binding_attribute = "VUID-vkCmdDrawIndexed-None-02721";
206 dynamic_state_setting_commands = "VUID-vkCmdDrawIndexed-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700207 rasterization_samples = "VUID-vkCmdDrawIndexed-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700208 unprotected_command_buffer = "VUID-vkCmdDrawIndexed-commandBuffer-02707";
209 protected_command_buffer = "VUID-vkCmdDrawIndexed-commandBuffer-02712";
210 max_multiview_instance_index = "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700211 img_filter_cubic = "VUID-vkCmdDrawIndexed-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700212 filter_cubic = "VUID-vkCmdDrawIndexed-filterCubic-02694";
213 filter_cubic_min_max = "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000214 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600215 patch_control_points = "VUID-vkCmdDrawIndexed-None-04875";
216 rasterizer_discard_enable = "VUID-vkCmdDrawIndexed-None-04876";
217 depth_bias_enable = "VUID-vkCmdDrawIndexed-None-04877";
218 logic_op = "VUID-vkCmdDrawIndexed-logicOp-04878";
219 primitive_restart_enable = "VUID-vkCmdDrawIndexed-None-04879";
220 vertex_input_binding_stride = "VUID-vkCmdDrawIndexed-pStrides-04884";
221 vertex_input = kVUID_Core_CmdDrawIndexed_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200222 blend_enable = "VUID-vkCmdDrawIndexed-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500223 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndexed-viewMask-06178";
224 dynamic_rendering_color_count = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06179";
225 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06180";
226 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndexed-pDepthAttachment-06181";
227 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndexed-pStencilAttachment-06182";
228 dynamic_rendering_fsr = "VUID-vkCmdDrawIndexed-imageView-06183";
229 dynamic_rendering_fdm = "VUID-vkCmdDrawIndexed-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500230 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06185";
231 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndexed-pDepthAttachment-06186";
232 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndexed-pStencilAttachment-06187";
233 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndexed-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500234 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexed-pDepthAttachment-06189";
235 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexed-pStencilAttachment-06190";
236 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexed-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200237 storage_image_read_without_format = "VUID-vkCmdDrawIndexed-OpTypeImage-06424";
238 storage_image_write_without_format = "VUID-vkCmdDrawIndexed-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200239 depth_compare_sample = "VUID-vkCmdDrawIndexed-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100240 dynamic_sample_locations = "VUID-vkCmdDrawIndexed-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700241 }
242};
243
Tony-LunarG4490de42021-06-21 15:49:19 -0600244struct DispatchVuidsCmdDrawMultiIndexedEXT : DrawDispatchVuid {
245 DispatchVuidsCmdDrawMultiIndexedEXT() : DrawDispatchVuid() {
Lionel Landwerlin45e981c2021-12-07 15:29:40 +0200246 pipeline_bound = "VUID-vkCmdDrawMultiIndexedEXT-None-02700";
247 dynamic_state = "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02701";
248 vertex_binding = "VUID-vkCmdDrawMultiIndexedEXT-None-04007";
249 vertex_binding_null = "VUID-vkCmdDrawMultiIndexedEXT-None-04008";
250 compatible_pipeline = "VUID-vkCmdDrawMultiIndexedEXT-None-02697";
251 render_pass_compatible = "VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684";
252 subpass_index = "VUID-vkCmdDrawMultiIndexedEXT-subpass-02685";
253 sample_location = "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689";
254 linear_sampler = "VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553";
255 cubic_sampler = "VUID-vkCmdDrawMultiIndexedEXT-None-02692";
256 viewport_count = "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417";
257 scissor_count = "VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418";
258 viewport_scissor_count = "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419";
259 primitive_topology = "VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-03420";
260 corner_sampled_address_mode = "VUID-vkCmdDrawMultiIndexedEXT-flags-02696";
261 subpass_input = "VUID-vkCmdDrawMultiIndexedEXT-None-02686";
262 imageview_atomic = "VUID-vkCmdDrawMultiIndexedEXT-None-02691";
263 push_constants_set = "VUID-vkCmdDrawMultiIndexedEXT-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100264 image_subresources_render_pass_write = "VUID-vkCmdDrawMultiIndexedEXT-None-06537";
265 image_subresources_subpass_read = "VUID-vkCmdDrawMultiIndexedEXT-None-06538";
266 image_subresources_subpass_write = "VUID-vkCmdDrawMultiIndexedEXT-None-06539";
Lionel Landwerlin45e981c2021-12-07 15:29:40 +0200267 descriptor_valid = "VUID-vkCmdDrawMultiIndexedEXT-None-02699";
268 sampler_imageview_type = "VUID-vkCmdDrawMultiIndexedEXT-None-02702";
269 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMultiIndexedEXT-None-02703";
270 sampler_bias_offset = "VUID-vkCmdDrawMultiIndexedEXT-None-02704";
271 vertex_binding_attribute = "VUID-vkCmdDrawMultiIndexedEXT-None-02721";
272 dynamic_state_setting_commands = "VUID-vkCmdDrawMultiIndexedEXT-None-02859";
273 rasterization_samples = "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-04740";
274 unprotected_command_buffer = "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707";
275 protected_command_buffer = "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712";
276 max_multiview_instance_index = "VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688";
277 img_filter_cubic = "VUID-vkCmdDrawMultiIndexedEXT-None-02693";
278 filter_cubic = "VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694";
279 filter_cubic_min_max = "VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695";
Tony-LunarG4490de42021-06-21 15:49:19 -0600280 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-04552";
Lionel Landwerlin45e981c2021-12-07 15:29:40 +0200281 patch_control_points = "VUID-vkCmdDrawMultiIndexedEXT-None-04875";
282 rasterizer_discard_enable = "VUID-vkCmdDrawMultiIndexedEXT-None-04876";
283 depth_bias_enable = "VUID-vkCmdDrawMultiIndexedEXT-None-04877";
284 logic_op = "VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878";
285 primitive_restart_enable = "VUID-vkCmdDrawMultiIndexedEXT-None-04879";
286 vertex_input_binding_stride = "VUID-vkCmdDrawMultiIndexedEXT-pStrides-04884";
287 vertex_input = kVUID_Core_CmdDrawMultiIndexedEXT_VertexInput;
288 blend_enable = "VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727";
289 dynamic_rendering_view_mask = "VUID-vkCmdDrawMultiIndexedEXT-viewMask-06178";
290 dynamic_rendering_color_count = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179";
291 dynamic_rendering_color_formats = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06180";
292 dynamic_rendering_depth_format = "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06181";
293 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06182";
294 dynamic_rendering_fsr = "VUID-vkCmdDrawMultiIndexedEXT-imageView-06183";
295 dynamic_rendering_fdm = "VUID-vkCmdDrawMultiIndexedEXT-imageView-06184";
296 dynamic_rendering_color_sample = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185";
297 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186";
298 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187";
299 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06188";
300 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06189";
301 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190";
302 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexedIndirect-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200303 storage_image_read_without_format = "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-06424";
304 storage_image_write_without_format = "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200305 depth_compare_sample = "VUID-vkCmdDrawMultiIndexedEXT-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100306 dynamic_sample_locations = "VUID-vkCmdDrawMultiIndexedEXT-None-06666";
Tony-LunarG4490de42021-06-21 15:49:19 -0600307 }
308};
309
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700310struct DispatchVuidsCmdDrawIndirect : DrawDispatchVuid {
311 DispatchVuidsCmdDrawIndirect() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700312 pipeline_bound = "VUID-vkCmdDrawIndirect-None-02700";
313 dynamic_state = "VUID-vkCmdDrawIndirect-commandBuffer-02701";
314 vertex_binding = "VUID-vkCmdDrawIndirect-None-04007";
315 vertex_binding_null = "VUID-vkCmdDrawIndirect-None-04008";
316 compatible_pipeline = "VUID-vkCmdDrawIndirect-None-02697";
317 render_pass_compatible = "VUID-vkCmdDrawIndirect-renderPass-02684";
318 subpass_index = "VUID-vkCmdDrawIndirect-subpass-02685";
319 sample_location = "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689";
320 linear_sampler = "VUID-vkCmdDrawIndirect-magFilter-04553";
321 cubic_sampler = "VUID-vkCmdDrawIndirect-None-02692";
322 indirect_protected_cb = "VUID-vkCmdDrawIndirect-commandBuffer-02711";
323 indirect_contiguous_memory = "VUID-vkCmdDrawIndirect-buffer-02708";
324 indirect_buffer_bit = "VUID-vkCmdDrawIndirect-buffer-02709";
325 viewport_count = "VUID-vkCmdDrawIndirect-viewportCount-03417";
326 scissor_count = "VUID-vkCmdDrawIndirect-scissorCount-03418";
327 viewport_scissor_count = "VUID-vkCmdDrawIndirect-viewportCount-03419";
328 primitive_topology = "VUID-vkCmdDrawIndirect-primitiveTopology-03420";
329 corner_sampled_address_mode = "VUID-vkCmdDrawIndirect-flags-02696";
330 subpass_input = "VUID-vkCmdDrawIndirect-None-02686";
331 imageview_atomic = "VUID-vkCmdDrawIndirect-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700332 push_constants_set = "VUID-vkCmdDrawIndirect-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100333 image_subresources_render_pass_write = "VUID-vkCmdDrawIndirect-None-06537";
334 image_subresources_subpass_read = "VUID-vkCmdDrawIndirect-None-06538";
335 image_subresources_subpass_write = "VUID-vkCmdDrawIndirect-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700336 descriptor_valid = "VUID-vkCmdDrawIndirect-None-02699";
337 sampler_imageview_type = "VUID-vkCmdDrawIndirect-None-02702";
338 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndirect-None-02703";
339 sampler_bias_offset = "VUID-vkCmdDrawIndirect-None-02704";
340 vertex_binding_attribute = "VUID-vkCmdDrawIndirect-None-02721";
341 dynamic_state_setting_commands = "VUID-vkCmdDrawIndirect-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700342 rasterization_samples = "VUID-vkCmdDrawIndirect-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700343 unprotected_command_buffer = "VUID-vkCmdDrawIndirect-commandBuffer-02707";
344 max_multiview_instance_index = "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700345 img_filter_cubic = "VUID-vkCmdDrawIndirect-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700346 filter_cubic = "VUID-vkCmdDrawIndirect-filterCubic-02694";
347 filter_cubic_min_max = "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000348 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600349 patch_control_points = "VUID-vkCmdDrawIndirect-None-04875";
350 rasterizer_discard_enable = "VUID-vkCmdDrawIndirect-None-04876";
351 depth_bias_enable = "VUID-vkCmdDrawIndirect-None-04877";
352 logic_op = "VUID-vkCmdDrawIndirect-logicOp-04878";
353 primitive_restart_enable = "VUID-vkCmdDrawIndirect-None-04879";
354 vertex_input_binding_stride = "VUID-vkCmdDrawIndirect-pStrides-04884";
355 vertex_input = kVUID_Core_CmdDrawIndirect_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200356 blend_enable = "VUID-vkCmdDrawIndirect-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500357 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndirect-viewMask-06178";
358 dynamic_rendering_color_count = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06179";
359 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06180";
360 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndirect-pDepthAttachment-06181";
361 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndirect-pStencilAttachment-06182";
362 dynamic_rendering_fsr = "VUID-vkCmdDrawIndirect-imageView-06183";
363 dynamic_rendering_fdm = "VUID-vkCmdDrawIndirect-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500364 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06185";
365 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndirect-pDepthAttachment-06186";
366 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndirect-pStencilAttachment-06187";
367 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndirect-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500368 dynamic_rendering_06189 = "VUID-vkCmdDrawIndirect-pDepthAttachment-06189";
369 dynamic_rendering_06190 = "VUID-vkCmdDrawIndirect-pStencilAttachment-06190";
370 dynamic_rendering_06198 = "VUID-vkCmdDrawIndirect-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200371 storage_image_read_without_format = "VUID-vkCmdDrawIndirect-OpTypeImage-06424";
372 storage_image_write_without_format = "VUID-vkCmdDrawIndirect-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200373 depth_compare_sample = "VUID-vkCmdDrawIndirect-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100374 dynamic_sample_locations = "VUID-vkCmdDrawIndirect-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700375 }
376};
377
378struct DispatchVuidsCmdDrawIndexedIndirect : DrawDispatchVuid {
379 DispatchVuidsCmdDrawIndexedIndirect() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700380 pipeline_bound = "VUID-vkCmdDrawIndexedIndirect-None-02700";
381 dynamic_state = "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701";
382 vertex_binding = "VUID-vkCmdDrawIndexedIndirect-None-04007";
383 vertex_binding_null = "VUID-vkCmdDrawIndexedIndirect-None-04008";
384 compatible_pipeline = "VUID-vkCmdDrawIndexedIndirect-None-02697";
385 render_pass_compatible = "VUID-vkCmdDrawIndexedIndirect-renderPass-02684";
386 subpass_index = "VUID-vkCmdDrawIndexedIndirect-subpass-02685";
387 sample_location = "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689";
388 linear_sampler = "VUID-vkCmdDrawIndexedIndirect-magFilter-04553";
389 cubic_sampler = "VUID-vkCmdDrawIndexedIndirect-None-02692";
390 indirect_protected_cb = "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711";
391 indirect_contiguous_memory = "VUID-vkCmdDrawIndexedIndirect-buffer-02708";
392 indirect_buffer_bit = "VUID-vkCmdDrawIndexedIndirect-buffer-02709";
393 viewport_count = "VUID-vkCmdDrawIndexedIndirect-viewportCount-03417";
394 scissor_count = "VUID-vkCmdDrawIndexedIndirect-scissorCount-03418";
395 viewport_scissor_count = "VUID-vkCmdDrawIndexedIndirect-viewportCount-03419";
396 primitive_topology = "VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420";
397 corner_sampled_address_mode = "VUID-vkCmdDrawIndexedIndirect-flags-02696";
398 subpass_input = "VUID-vkCmdDrawIndexedIndirect-None-02686";
399 imageview_atomic = "VUID-vkCmdDrawIndexedIndirect-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700400 push_constants_set = "VUID-vkCmdDrawIndexedIndirect-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100401 image_subresources_render_pass_write = "VUID-vkCmdDrawIndexedIndirect-None-06537";
402 image_subresources_subpass_read = "VUID-vkCmdDrawIndexedIndirect-None-06538";
403 image_subresources_subpass_write = "VUID-vkCmdDrawIndexedIndirect-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700404 descriptor_valid = "VUID-vkCmdDrawIndexedIndirect-None-02699";
405 sampler_imageview_type = "VUID-vkCmdDrawIndexedIndirect-None-02702";
406 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndexedIndirect-None-02703";
407 sampler_bias_offset = "VUID-vkCmdDrawIndexedIndirect-None-02704";
408 vertex_binding_attribute = "VUID-vkCmdDrawIndexedIndirect-None-02721";
409 dynamic_state_setting_commands = "VUID-vkCmdDrawIndexedIndirect-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700410 rasterization_samples = "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700411 unprotected_command_buffer = "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707";
412 max_multiview_instance_index = "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700413 img_filter_cubic = "VUID-vkCmdDrawIndexedIndirect-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700414 filter_cubic = "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694";
415 filter_cubic_min_max = "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000416 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600417 patch_control_points = "VUID-vkCmdDrawIndexedIndirect-None-04875";
418 rasterizer_discard_enable = "VUID-vkCmdDrawIndexedIndirect-None-04876";
419 depth_bias_enable = "VUID-vkCmdDrawIndexedIndirect-None-04877";
420 logic_op = "VUID-vkCmdDrawIndexedIndirect-logicOp-04878";
421 primitive_restart_enable = "VUID-vkCmdDrawIndexedIndirect-None-04879";
422 vertex_input_binding_stride = "VUID-vkCmdDrawIndexedIndirect-pStrides-04884";
423 vertex_input = kVUID_Core_CmdDrawIndexedIndirect_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200424 blend_enable = "VUID-vkCmdDrawIndexedIndirect-blendEnable-04727";
Aaron Hagan92a44f82021-11-19 09:34:56 -0500425 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndexedIndirect-viewMask-06178";
426 dynamic_rendering_color_count = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179";
427 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06180";
428 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181";
429 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06182";
430 dynamic_rendering_fsr = "VUID-vkCmdDrawIndexedIndirect-imageView-06183";
431 dynamic_rendering_fdm = "VUID-vkCmdDrawIndexedIndirect-imageView-06184";
Aaron Hagan09a0e172021-11-19 21:18:33 -0500432 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185";
433 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186";
434 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187";
435 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06188";
Aaron Haganaca50442021-12-07 22:26:29 -0500436 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06189";
437 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190";
438 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexedIndirect-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200439 storage_image_read_without_format = "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06424";
440 storage_image_write_without_format = "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200441 depth_compare_sample = "VUID-vkCmdDrawIndexedIndirect-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100442 dynamic_sample_locations = "VUID-vkCmdDrawIndexedIndirect-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700443 }
444};
445
446struct DispatchVuidsCmdDispatch : DrawDispatchVuid {
447 DispatchVuidsCmdDispatch() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700448 pipeline_bound = "VUID-vkCmdDispatch-None-02700";
Mark Lobodzinski02d37552020-12-28 13:29:46 -0700449 dynamic_state = "VUID-vkCmdDispatch-commandBuffer-02701";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700450 compatible_pipeline = "VUID-vkCmdDispatch-None-02697";
451 linear_sampler = "VUID-vkCmdDispatch-magFilter-04553";
452 cubic_sampler = "VUID-vkCmdDispatch-None-02692";
453 corner_sampled_address_mode = "VUID-vkCmdDispatch-flags-02696";
454 imageview_atomic = "VUID-vkCmdDispatch-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700455 push_constants_set = "VUID-vkCmdDispatch-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700456 descriptor_valid = "VUID-vkCmdDispatch-None-02699";
457 sampler_imageview_type = "VUID-vkCmdDispatch-None-02702";
458 sampler_implicitLod_dref_proj = "VUID-vkCmdDispatch-None-02703";
459 sampler_bias_offset = "VUID-vkCmdDispatch-None-02704";
460 dynamic_state_setting_commands = "VUID-vkCmdDispatch-None-02859";
461 unprotected_command_buffer = "VUID-vkCmdDispatch-commandBuffer-02707";
462 protected_command_buffer = "VUID-vkCmdDispatch-commandBuffer-02712";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700463 img_filter_cubic = "VUID-vkCmdDispatch-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700464 filter_cubic = "VUID-vkCmdDispatch-filterCubic-02694";
465 filter_cubic_min_max = "VUID-vkCmdDispatch-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200466 storage_image_read_without_format = "VUID-vkCmdDispatch-OpTypeImage-06424";
467 storage_image_write_without_format = "VUID-vkCmdDispatch-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200468 depth_compare_sample = "VUID-vkCmdDispatch-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700469 }
470};
471
472struct DispatchVuidsCmdDispatchIndirect : DrawDispatchVuid {
473 DispatchVuidsCmdDispatchIndirect() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700474 pipeline_bound = "VUID-vkCmdDispatchIndirect-None-02700";
Mark Lobodzinski02d37552020-12-28 13:29:46 -0700475 dynamic_state = "VUID-vkCmdDispatchIndirect-commandBuffer-02701";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700476 compatible_pipeline = "VUID-vkCmdDispatchIndirect-None-02697";
477 linear_sampler = "VUID-vkCmdDispatchIndirect-magFilter-04553";
478 cubic_sampler = "VUID-vkCmdDispatchIndirect-None-02692";
479 indirect_protected_cb = "VUID-vkCmdDispatchIndirect-commandBuffer-02711";
480 indirect_contiguous_memory = "VUID-vkCmdDispatchIndirect-buffer-02708";
481 indirect_buffer_bit = "VUID-vkCmdDispatchIndirect-buffer-02709";
482 corner_sampled_address_mode = "VUID-vkCmdDispatchIndirect-flags-02696";
483 imageview_atomic = "VUID-vkCmdDispatchIndirect-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700484 push_constants_set = "VUID-vkCmdDispatchIndirect-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700485 descriptor_valid = "VUID-vkCmdDispatchIndirect-None-02699";
486 sampler_imageview_type = "VUID-vkCmdDispatchIndirect-None-02702";
487 sampler_implicitLod_dref_proj = "VUID-vkCmdDispatchIndirect-None-02703";
488 sampler_bias_offset = "VUID-vkCmdDispatchIndirect-None-02704";
489 dynamic_state_setting_commands = "VUID-vkCmdDispatchIndirect-None-02859";
490 unprotected_command_buffer = "VUID-vkCmdDispatchIndirect-commandBuffer-02707";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700491 img_filter_cubic = "VUID-vkCmdDispatchIndirect-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700492 filter_cubic = "VUID-vkCmdDispatchIndirect-filterCubic-02694";
493 filter_cubic_min_max = "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200494 storage_image_read_without_format = "VUID-vkCmdDispatchIndirect-OpTypeImage-06424";
495 storage_image_write_without_format = "VUID-vkCmdDispatchIndirect-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200496 depth_compare_sample = "VUID-vkCmdDispatchIndirect-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700497 }
498};
499
500struct DispatchVuidsCmdDrawIndirectCount : DrawDispatchVuid {
501 DispatchVuidsCmdDrawIndirectCount() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700502 pipeline_bound = "VUID-vkCmdDrawIndirectCount-None-02700";
503 dynamic_state = "VUID-vkCmdDrawIndirectCount-commandBuffer-02701";
504 vertex_binding = "VUID-vkCmdDrawIndirectCount-None-04007";
505 vertex_binding_null = "VUID-vkCmdDrawIndirectCount-None-04008";
506 compatible_pipeline = "VUID-vkCmdDrawIndirectCount-None-02697";
507 render_pass_compatible = "VUID-vkCmdDrawIndirectCount-renderPass-02684";
508 subpass_index = "VUID-vkCmdDrawIndirectCount-subpass-02685";
509 sample_location = "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689";
510 linear_sampler = "VUID-vkCmdDrawIndirectCount-magFilter-04553";
511 cubic_sampler = "VUID-vkCmdDrawIndirectCount-None-02692";
512 indirect_protected_cb = "VUID-vkCmdDrawIndirectCount-commandBuffer-02711";
513 indirect_contiguous_memory = "VUID-vkCmdDrawIndirectCount-buffer-02708";
514 indirect_buffer_bit = "VUID-vkCmdDrawIndirectCount-buffer-02709";
515 viewport_count = "VUID-vkCmdDrawIndirectCount-viewportCount-03417";
516 scissor_count = "VUID-vkCmdDrawIndirectCount-scissorCount-03418";
517 viewport_scissor_count = "VUID-vkCmdDrawIndirectCount-viewportCount-03419";
518 primitive_topology = "VUID-vkCmdDrawIndirectCount-primitiveTopology-03420";
519 corner_sampled_address_mode = "VUID-vkCmdDrawIndirectCount-flags-02696";
520 subpass_input = "VUID-vkCmdDrawIndirectCount-None-02686";
521 imageview_atomic = "VUID-vkCmdDrawIndirectCount-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700522 push_constants_set = "VUID-vkCmdDrawIndirectCount-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100523 image_subresources_render_pass_write = "VUID-vkCmdDrawIndirectCount-None-06537";
524 image_subresources_subpass_read = "VUID-vkCmdDrawIndirectCount-None-06538";
525 image_subresources_subpass_write = "VUID-vkCmdDrawIndirectCount-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700526 descriptor_valid = "VUID-vkCmdDrawIndirectCount-None-02699";
527 sampler_imageview_type = "VUID-vkCmdDrawIndirectCount-None-02702";
528 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndirectCount-None-02703";
529 sampler_bias_offset = "VUID-vkCmdDrawIndirectCount-None-02704";
530 vertex_binding_attribute = "VUID-vkCmdDrawIndirectCount-None-02721";
531 dynamic_state_setting_commands = "VUID-vkCmdDrawIndirectCount-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700532 rasterization_samples = "VUID-vkCmdDrawIndirectCount-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700533 unprotected_command_buffer = "VUID-vkCmdDrawIndirectCount-commandBuffer-02707";
534 max_multiview_instance_index = "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700535 img_filter_cubic = "VUID-vkCmdDrawIndirectCount-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700536 filter_cubic = "VUID-vkCmdDrawIndirectCount-filterCubic-02694";
537 filter_cubic_min_max = "VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000538 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600539 patch_control_points = "VUID-vkCmdDrawIndirectCount-None-04875";
540 rasterizer_discard_enable = "VUID-vkCmdDrawIndirectCount-None-04876";
541 depth_bias_enable = "VUID-vkCmdDrawIndirectCount-None-04877";
542 logic_op = "VUID-vkCmdDrawIndirectCount-logicOp-04878";
543 primitive_restart_enable = "VUID-vkCmdDrawIndirectCount-None-04879";
544 vertex_input_binding_stride = "VUID-vkCmdDrawIndirectCount-pStrides-04884";
545 vertex_input = kVUID_Core_CmdDrawIndirectCount_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200546 blend_enable = "VUID-vkCmdDrawIndirectCount-blendEnable-04727";
stusmithedc4e392021-12-24 15:22:16 +0000547 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndirectCount-viewMask-06178";
548 dynamic_rendering_color_count = "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06179";
549 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06180";
550 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndirectCount-pDepthAttachment-06181";
551 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndirectCount-pStencilAttachment-06182";
552 dynamic_rendering_fsr = "VUID-vkCmdDrawIndirectCount-imageView-06183";
553 dynamic_rendering_fdm = "VUID-vkCmdDrawIndirectCount-imageView-06184";
554 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06185";
555 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186";
556 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187";
557 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06188";
558 dynamic_rendering_06189 = "VUID-vkCmdDrawIndirectCount-pDepthAttachment-06189";
559 dynamic_rendering_06190 = "VUID-vkCmdDrawIndirectCount-pStencilAttachment-06190";
560 dynamic_rendering_06198 = "VUID-vkCmdDrawIndirectCount-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200561 storage_image_read_without_format = "VUID-vkCmdDrawIndirectCount-OpTypeImage-06424";
562 storage_image_write_without_format = "VUID-vkCmdDrawIndirectCount-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200563 depth_compare_sample = "VUID-vkCmdDrawIndirectCount-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100564 dynamic_sample_locations = "VUID-vkCmdDrawIndirectCount-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700565 }
566};
567
568struct DispatchVuidsCmdDrawIndexedIndirectCount : DrawDispatchVuid {
569 DispatchVuidsCmdDrawIndexedIndirectCount() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700570 pipeline_bound = "VUID-vkCmdDrawIndexedIndirectCount-None-02700";
571 dynamic_state = "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701";
572 vertex_binding = "VUID-vkCmdDrawIndexedIndirectCount-None-04007";
573 vertex_binding_null = "VUID-vkCmdDrawIndexedIndirectCount-None-04008";
574 compatible_pipeline = "VUID-vkCmdDrawIndexedIndirectCount-None-02697";
575 render_pass_compatible = "VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684";
576 subpass_index = "VUID-vkCmdDrawIndexedIndirectCount-subpass-02685";
577 sample_location = "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689";
578 linear_sampler = "VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553";
579 cubic_sampler = "VUID-vkCmdDrawIndexedIndirectCount-None-02692";
580 indirect_protected_cb = "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711";
581 indirect_contiguous_memory = "VUID-vkCmdDrawIndexedIndirectCount-buffer-02708";
582 indirect_buffer_bit = "VUID-vkCmdDrawIndexedIndirectCount-buffer-02709";
583 viewport_count = "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417";
584 scissor_count = "VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418";
585 viewport_scissor_count = "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419";
586 primitive_topology = "VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420";
587 corner_sampled_address_mode = "VUID-vkCmdDrawIndexedIndirectCount-flags-02696";
588 subpass_input = "VUID-vkCmdDrawIndexedIndirectCount-None-02686";
589 imageview_atomic = "VUID-vkCmdDrawIndexedIndirectCount-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700590 push_constants_set = "VUID-vkCmdDrawIndexedIndirectCount-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100591 image_subresources_render_pass_write = "VUID-vkCmdDrawIndexedIndirectCount-None-06537";
592 image_subresources_subpass_read = "VUID-vkCmdDrawIndexedIndirectCount-None-06538";
593 image_subresources_subpass_write = "VUID-vkCmdDrawIndexedIndirectCount-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700594 descriptor_valid = "VUID-vkCmdDrawIndexedIndirectCount-None-02699";
595 sampler_imageview_type = "VUID-vkCmdDrawIndexedIndirectCount-None-02702";
596 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndexedIndirectCount-None-02703";
597 sampler_bias_offset = "VUID-vkCmdDrawIndexedIndirectCount-None-02704";
598 vertex_binding_attribute = "VUID-vkCmdDrawIndexedIndirectCount-None-02721";
599 dynamic_state_setting_commands = "VUID-vkCmdDrawIndexedIndirectCount-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700600 rasterization_samples = "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700601 unprotected_command_buffer = "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707";
602 max_multiview_instance_index = "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700603 img_filter_cubic = "VUID-vkCmdDrawIndexedIndirectCount-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700604 filter_cubic = "VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694";
605 filter_cubic_min_max = "VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000606 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600607 patch_control_points = "VUID-vkCmdDrawIndexedIndirectCount-None-04875";
608 rasterizer_discard_enable = "VUID-vkCmdDrawIndexedIndirectCount-None-04876";
609 depth_bias_enable = "VUID-vkCmdDrawIndexedIndirectCount-None-04877";
610 logic_op = "VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878";
611 primitive_restart_enable = "VUID-vkCmdDrawIndexedIndirectCount-None-04879";
612 vertex_input_binding_stride = "VUID-vkCmdDrawIndexedIndirectCount-pStrides-04884";
613 vertex_input = kVUID_Core_CmdDrawIndexedIndirectCount_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200614 blend_enable = "VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727";
Aaron Haganaca50442021-12-07 22:26:29 -0500615 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndexedIndirectCount-viewMask-06178";
616 dynamic_rendering_color_count = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179";
617 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06180";
618 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06181";
619 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06182";
620 dynamic_rendering_fsr = "VUID-vkCmdDrawIndexedIndirectCount-imageView-06183";
621 dynamic_rendering_fdm = "VUID-vkCmdDrawIndexedIndirectCount-imageView-06184";
622 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185";
623 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186";
624 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187";
625 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06188";
626 dynamic_rendering_06189 = "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06189";
627 dynamic_rendering_06190 = "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06190";
628 dynamic_rendering_06198 = "VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200629 storage_image_read_without_format = "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-06424";
630 storage_image_write_without_format = "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200631 depth_compare_sample = "VUID-vkCmdDrawIndexedIndirectCount-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100632 dynamic_sample_locations = "VUID-vkCmdDrawIndexedIndirectCount-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700633 }
634};
635
636struct DispatchVuidsCmdTraceRaysNV: DrawDispatchVuid {
637 DispatchVuidsCmdTraceRaysNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700638 pipeline_bound = "VUID-vkCmdTraceRaysNV-None-02700";
639 dynamic_state = "VUID-vkCmdTraceRaysNV-commandBuffer-02701";
640 compatible_pipeline = "VUID-vkCmdTraceRaysNV-None-02697";
641 linear_sampler = "VUID-vkCmdTraceRaysNV-magFilter-04553";
642 cubic_sampler = "VUID-vkCmdTraceRaysNV-None-02692";
643 corner_sampled_address_mode = "VUID-vkCmdTraceRaysNV-flags-02696";
644 imageview_atomic = "VUID-vkCmdTraceRaysNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700645 push_constants_set = "VUID-vkCmdTraceRaysNV-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700646 descriptor_valid = "VUID-vkCmdTraceRaysNV-None-02699";
647 sampler_imageview_type = "VUID-vkCmdTraceRaysNV-None-02702";
648 sampler_implicitLod_dref_proj = "VUID-vkCmdTraceRaysNV-None-02703";
649 sampler_bias_offset = "VUID-vkCmdTraceRaysNV-None-02704";
650 dynamic_state_setting_commands = "VUID-vkCmdTraceRaysNV-None-02859";
651 unprotected_command_buffer = "VUID-vkCmdTraceRaysNV-commandBuffer-02707";
sfricke-samsunga3c47d12021-09-30 13:34:54 -0700652 ray_query_protected_cb = "VUID-vkCmdTraceRaysNV-commandBuffer-04624";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700653 img_filter_cubic = "VUID-vkCmdTraceRaysNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700654 filter_cubic = "VUID-vkCmdTraceRaysNV-filterCubic-02694";
655 filter_cubic_min_max = "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200656 storage_image_read_without_format = "VUID-vkCmdTraceRaysNV-OpTypeImage-06424";
657 storage_image_write_without_format = "VUID-vkCmdTraceRaysNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200658 depth_compare_sample = "VUID-vkCmdTraceRaysNV-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700659 }
660};
661
662struct DispatchVuidsCmdTraceRaysKHR: DrawDispatchVuid {
663 DispatchVuidsCmdTraceRaysKHR() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700664 pipeline_bound = "VUID-vkCmdTraceRaysKHR-None-02700";
665 dynamic_state = "VUID-vkCmdTraceRaysKHR-commandBuffer-02701";
666 compatible_pipeline = "VUID-vkCmdTraceRaysKHR-None-02697";
667 linear_sampler = "VUID-vkCmdTraceRaysKHR-magFilter-04553";
668 cubic_sampler = "VUID-vkCmdTraceRaysKHR-None-02692";
669 corner_sampled_address_mode = "VUID-vkCmdTraceRaysKHR-flags-02696";
670 imageview_atomic = "VUID-vkCmdTraceRaysKHR-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700671 push_constants_set = "VUID-vkCmdTraceRaysKHR-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700672 descriptor_valid = "VUID-vkCmdTraceRaysKHR-None-02699";
673 sampler_imageview_type = "VUID-vkCmdTraceRaysKHR-None-02702";
674 sampler_implicitLod_dref_proj = "VUID-vkCmdTraceRaysKHR-None-02703";
675 sampler_bias_offset = "VUID-vkCmdTraceRaysKHR-None-02704";
676 dynamic_state_setting_commands = "VUID-vkCmdTraceRaysKHR-None-02859";
677 unprotected_command_buffer = "VUID-vkCmdTraceRaysKHR-commandBuffer-02707";
sfricke-samsunga3c47d12021-09-30 13:34:54 -0700678 ray_query_protected_cb = "VUID-vkCmdTraceRaysKHR-commandBuffer-04625";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700679 img_filter_cubic = "VUID-vkCmdTraceRaysKHR-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700680 filter_cubic = "VUID-vkCmdTraceRaysKHR-filterCubic-02694";
681 filter_cubic_min_max = "VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200682 storage_image_read_without_format = "VUID-vkCmdTraceRaysKHR-OpTypeImage-06424";
683 storage_image_write_without_format = "VUID-vkCmdTraceRaysKHR-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200684 depth_compare_sample = "VUID-vkCmdTraceRaysKHR-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700685 }
686};
687
688struct DispatchVuidsCmdTraceRaysIndirectKHR: DrawDispatchVuid {
689 DispatchVuidsCmdTraceRaysIndirectKHR() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700690 pipeline_bound = "VUID-vkCmdTraceRaysIndirectKHR-None-02700";
691 dynamic_state = "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701";
692 compatible_pipeline = "VUID-vkCmdTraceRaysIndirectKHR-None-02697";
693 linear_sampler = "VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553";
694 cubic_sampler = "VUID-vkCmdTraceRaysIndirectKHR-None-02692";
Shannon McPherson57255a62020-12-23 16:00:54 -0700695 indirect_contiguous_memory = "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632";
696 indirect_buffer_bit = "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700697 corner_sampled_address_mode = "VUID-vkCmdTraceRaysIndirectKHR-flags-02696";
698 imageview_atomic = "VUID-vkCmdTraceRaysIndirectKHR-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700699 push_constants_set = "VUID-vkCmdTraceRaysIndirectKHR-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700700 descriptor_valid = "VUID-vkCmdTraceRaysIndirectKHR-None-02699";
701 sampler_imageview_type = "VUID-vkCmdTraceRaysIndirectKHR-None-02702";
702 sampler_implicitLod_dref_proj = "VUID-vkCmdTraceRaysIndirectKHR-None-02703";
703 sampler_bias_offset = "VUID-vkCmdTraceRaysIndirectKHR-None-02704";
704 dynamic_state_setting_commands = "VUID-vkCmdTraceRaysIndirectKHR-None-02859";
705 unprotected_command_buffer = "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707";
sfricke-samsunga3c47d12021-09-30 13:34:54 -0700706 ray_query_protected_cb = "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700707 img_filter_cubic = "VUID-vkCmdTraceRaysIndirectKHR-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700708 filter_cubic = "VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694";
709 filter_cubic_min_max = "VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200710 storage_image_read_without_format = "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-06424";
711 storage_image_write_without_format = "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200712 depth_compare_sample = "VUID-vkCmdTraceRaysIndirectKHR-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700713 }
714};
715
716struct DispatchVuidsCmdDrawMeshTasksNV: DrawDispatchVuid {
717 DispatchVuidsCmdDrawMeshTasksNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700718 pipeline_bound = "VUID-vkCmdDrawMeshTasksNV-None-02700";
719 dynamic_state = "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701";
720 compatible_pipeline = "VUID-vkCmdDrawMeshTasksNV-None-02697";
721 render_pass_compatible = "VUID-vkCmdDrawMeshTasksNV-renderPass-02684";
722 subpass_index = "VUID-vkCmdDrawMeshTasksNV-subpass-02685";
723 sample_location = "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689";
724 linear_sampler = "VUID-vkCmdDrawMeshTasksNV-magFilter-04553";
725 cubic_sampler = "VUID-vkCmdDrawMeshTasksNV-None-02692";
726 viewport_count = "VUID-vkCmdDrawMeshTasksNV-viewportCount-03417";
727 scissor_count = "VUID-vkCmdDrawMeshTasksNV-scissorCount-03418";
728 viewport_scissor_count = "VUID-vkCmdDrawMeshTasksNV-viewportCount-03419";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700729 corner_sampled_address_mode = "VUID-vkCmdDrawMeshTasksNV-flags-02696";
730 subpass_input = "VUID-vkCmdDrawMeshTasksNV-None-02686";
731 imageview_atomic = "VUID-vkCmdDrawMeshTasksNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700732 push_constants_set = "VUID-vkCmdDrawMeshTasksNV-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100733 image_subresources_render_pass_write = "VUID-vkCmdDrawMeshTasksNV-None-06537";
734 image_subresources_subpass_read = "VUID-vkCmdDrawMeshTasksNV-None-06538";
735 image_subresources_subpass_write = "VUID-vkCmdDrawMeshTasksNV-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700736 descriptor_valid = "VUID-vkCmdDrawMeshTasksNV-None-02699";
737 sampler_imageview_type = "VUID-vkCmdDrawMeshTasksNV-None-02702";
738 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMeshTasksNV-None-02703";
739 sampler_bias_offset = "VUID-vkCmdDrawMeshTasksNV-None-02704";
740 dynamic_state_setting_commands = "VUID-vkCmdDrawMeshTasksNV-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700741 rasterization_samples = "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700742 unprotected_command_buffer = "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707";
743 max_multiview_instance_index = "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700744 img_filter_cubic = "VUID-vkCmdDrawMeshTasksNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700745 filter_cubic = "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694";
746 filter_cubic_min_max = "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000747 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600748 rasterizer_discard_enable = "VUID-vkCmdDrawMeshTasksNV-None-04876";
749 depth_bias_enable = "VUID-vkCmdDrawMeshTasksNV-None-04877";
750 logic_op = "VUID-vkCmdDrawMeshTasksNV-logicOp-04878";
Piers Daniell924cd832021-05-18 13:48:47 -0600751 vertex_input = kVUID_Core_CmdDrawMeshTasksNV_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200752 blend_enable = "VUID-vkCmdDrawMeshTasksNV-blendEnable-04727";
stusmithedc4e392021-12-24 15:22:16 +0000753 dynamic_rendering_view_mask = "VUID-vkCmdDrawMeshTasksNV-viewMask-06178";
754 dynamic_rendering_color_count = "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179";
755 dynamic_rendering_color_formats = "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06180";
756 dynamic_rendering_depth_format = "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06181";
757 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06182";
758 dynamic_rendering_fsr = "VUID-vkCmdDrawMeshTasksNV-imageView-06183";
759 dynamic_rendering_fdm = "VUID-vkCmdDrawMeshTasksNV-imageView-06184";
760 dynamic_rendering_color_sample = "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06185";
761 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06186";
762 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187";
763 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06188";
764 dynamic_rendering_06189 = "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06189";
765 dynamic_rendering_06190 = "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06190";
766 dynamic_rendering_06198 = "VUID-vkCmdDrawMeshTasksNV-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200767 storage_image_read_without_format = "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-06424";
768 storage_image_write_without_format = "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200769 depth_compare_sample = "VUID-vkCmdDrawMeshTasksNV-None-06479";
ziga-lunarg50188622022-03-26 01:18:32 +0100770 dynamic_sample_locations = "VUID-vkCmdDrawMeshTasksNV-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700771 }
772};
773
774struct DispatchVuidsCmdDrawMeshTasksIndirectNV: DrawDispatchVuid {
775 DispatchVuidsCmdDrawMeshTasksIndirectNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700776 pipeline_bound = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700";
777 dynamic_state = "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701";
778 compatible_pipeline = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697";
779 render_pass_compatible = "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684";
780 subpass_index = "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685";
781 sample_location = "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689";
782 linear_sampler = "VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553";
783 cubic_sampler = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692";
784 indirect_protected_cb = "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711";
785 indirect_contiguous_memory = "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708";
786 indirect_buffer_bit = "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709";
787 viewport_count = "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417";
788 scissor_count = "VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418";
789 viewport_scissor_count = "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700790 corner_sampled_address_mode = "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696";
791 subpass_input = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686";
792 imageview_atomic = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700793 push_constants_set = "VUID-vkCmdDrawMeshTasksIndirectNV-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100794 image_subresources_render_pass_write = "VUID-vkCmdDrawMeshTasksIndirectNV-None-06537";
795 image_subresources_subpass_read = "VUID-vkCmdDrawMeshTasksIndirectNV-None-06538";
796 image_subresources_subpass_write = "VUID-vkCmdDrawMeshTasksIndirectNV-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700797 descriptor_valid = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699";
798 sampler_imageview_type = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702";
799 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703";
800 sampler_bias_offset = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704";
801 dynamic_state_setting_commands = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700802 rasterization_samples = "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700803 unprotected_command_buffer = "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707";
804 max_multiview_instance_index = "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700805 img_filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700806 filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694";
807 filter_cubic_min_max = "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000808 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600809 rasterizer_discard_enable = "VUID-vkCmdDrawMeshTasksIndirectNV-None-04876";
810 depth_bias_enable = "VUID-vkCmdDrawMeshTasksIndirectNV-None-04877";
811 logic_op = "VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878";
Piers Daniell924cd832021-05-18 13:48:47 -0600812 vertex_input = kVUID_Core_CmdDrawMeshTasksIndirectNV_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200813 blend_enable = "VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727";
stusmithedc4e392021-12-24 15:22:16 +0000814 dynamic_rendering_view_mask = "VUID-vkCmdDrawMeshTasksIndirectNV-viewMask-06178";
815 dynamic_rendering_color_count = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179";
816 dynamic_rendering_color_formats = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06180";
817 dynamic_rendering_depth_format = "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06181";
818 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06182";
819 dynamic_rendering_fsr = "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06183";
820 dynamic_rendering_fdm = "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184";
821 dynamic_rendering_color_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185";
822 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186";
823 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187";
824 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06188";
825 dynamic_rendering_06189 = "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06189";
826 dynamic_rendering_06190 = "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06190";
827 dynamic_rendering_06198 = "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200828 storage_image_read_without_format = "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-06424";
829 storage_image_write_without_format = "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200830 depth_compare_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-None-06479";
Aaron Hagan80034ea2021-12-23 11:24:09 -0500831 dynamic_rendering_view_mask = "VUID-vkCmdDrawMeshTasksIndirectNV-viewMask-06178";
832 dynamic_rendering_color_count = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179";
833 dynamic_rendering_color_formats = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06180";
834 dynamic_rendering_depth_format = "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06181";
835 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06182";
836 dynamic_rendering_fsr = "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06183";
837 dynamic_rendering_fdm = "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184";
838 dynamic_rendering_color_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185";
839 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186";
840 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187";
Jeremy Gebben09c1a072022-02-08 09:42:47 -0700841 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06188";
Aaron Hagan80034ea2021-12-23 11:24:09 -0500842 dynamic_rendering_06189 = "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06189";
843 dynamic_rendering_06190 = "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06190";
844 dynamic_rendering_06198 = "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198";
ziga-lunarg50188622022-03-26 01:18:32 +0100845 dynamic_sample_locations = "VUID-vkCmdDrawMeshTasksIndirectNV-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700846 }
847};
848
849struct DispatchVuidsCmdDrawMeshTasksIndirectCountNV : DrawDispatchVuid {
850 DispatchVuidsCmdDrawMeshTasksIndirectCountNV() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700851 pipeline_bound = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700";
852 dynamic_state = "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701";
853 compatible_pipeline = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697";
854 render_pass_compatible = "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684";
855 subpass_index = "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685";
856 sample_location = "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689";
857 linear_sampler = "VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553";
858 cubic_sampler = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692";
859 indirect_protected_cb = "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711";
860 indirect_contiguous_memory = "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708";
861 indirect_buffer_bit = "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709";
862 viewport_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417";
863 scissor_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418";
864 viewport_scissor_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700865 corner_sampled_address_mode = "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696";
866 subpass_input = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686";
867 imageview_atomic = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700868 push_constants_set = "VUID-vkCmdDrawMeshTasksIndirectCountNV-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100869 image_subresources_render_pass_write = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06537";
870 image_subresources_subpass_read = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06538";
871 image_subresources_subpass_write = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700872 descriptor_valid = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699";
873 sampler_imageview_type = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702";
874 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703";
875 sampler_bias_offset = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704";
876 dynamic_state_setting_commands = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700877 rasterization_samples = "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700878 unprotected_command_buffer = "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707";
879 max_multiview_instance_index = "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700880 img_filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700881 filter_cubic = "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694";
882 filter_cubic_min_max = "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000883 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600884 rasterizer_discard_enable = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876";
885 depth_bias_enable = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877";
886 logic_op = "VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878";
Piers Daniell924cd832021-05-18 13:48:47 -0600887 vertex_input = kVUID_Core_CmdDrawMeshTasksIndirectCountNV_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200888 blend_enable = "VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727";
stusmithedc4e392021-12-24 15:22:16 +0000889 dynamic_rendering_view_mask = "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178";
890 dynamic_rendering_color_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179";
891 dynamic_rendering_color_formats = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06180";
892 dynamic_rendering_depth_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06181";
893 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06182";
894 dynamic_rendering_fsr = "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06183";
895 dynamic_rendering_fdm = "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184";
896 dynamic_rendering_color_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185";
897 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186";
898 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187";
899 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06188";
900 dynamic_rendering_06189 = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06189";
901 dynamic_rendering_06190 = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06190";
902 dynamic_rendering_06198 = "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200903 storage_image_read_without_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-06424";
904 storage_image_write_without_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200905 depth_compare_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06479";
Aaron Hagan80034ea2021-12-23 11:24:09 -0500906 dynamic_rendering_view_mask = "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178";
907 dynamic_rendering_color_count = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179";
908 dynamic_rendering_color_formats = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06180";
909 dynamic_rendering_depth_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06181";
910 dynamic_rendering_stencil_format = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06182";
911 dynamic_rendering_fsr = "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06183";
912 dynamic_rendering_fdm = "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184";
913 dynamic_rendering_color_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185";
914 dynamic_rendering_depth_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186";
915 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187";
Jeremy Gebben09c1a072022-02-08 09:42:47 -0700916 dynamic_rendering_multi_sample = "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06188";
Aaron Hagan80034ea2021-12-23 11:24:09 -0500917 dynamic_rendering_06189 = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06189";
918 dynamic_rendering_06190 = "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06190";
919 dynamic_rendering_06198 = "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198";
ziga-lunarg50188622022-03-26 01:18:32 +0100920 dynamic_sample_locations = "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700921 }
922};
923
924struct DispatchVuidsCmdDrawIndirectByteCountEXT: DrawDispatchVuid {
925 DispatchVuidsCmdDrawIndirectByteCountEXT() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700926 pipeline_bound = "VUID-vkCmdDrawIndirectByteCountEXT-None-02700";
927 dynamic_state = "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701";
928 vertex_binding = "VUID-vkCmdDrawIndirectByteCountEXT-None-04007";
929 vertex_binding_null = "VUID-vkCmdDrawIndirectByteCountEXT-None-04008";
930 compatible_pipeline = "VUID-vkCmdDrawIndirectByteCountEXT-None-02697";
931 render_pass_compatible = "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684";
932 subpass_index = "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685";
933 sample_location = "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689";
934 linear_sampler = "VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553";
935 cubic_sampler = "VUID-vkCmdDrawIndirectByteCountEXT-None-02692";
936 indirect_protected_cb = "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646";
sfricke-samsungb091d4e2021-04-18 23:15:59 -0700937 indirect_contiguous_memory = "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567",
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700938 indirect_buffer_bit = "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290";
939 viewport_count = "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417";
940 scissor_count = "VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418";
941 viewport_scissor_count = "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419";
942 primitive_topology = "VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420";
943 corner_sampled_address_mode = "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696";
944 subpass_input = "VUID-vkCmdDrawIndirectByteCountEXT-None-02686";
945 imageview_atomic = "VUID-vkCmdDrawIndirectByteCountEXT-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -0700946 push_constants_set = "VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-06425";
ziga-lunarg498b7e72022-03-12 00:33:37 +0100947 image_subresources_render_pass_write = "VUID-vkCmdDrawIndirectByteCountEXT-None-06537";
948 image_subresources_subpass_read = "VUID-vkCmdDrawIndirectByteCountEXT-None-06538";
949 image_subresources_subpass_write = "VUID-vkCmdDrawIndirectByteCountEXT-None-06539";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700950 descriptor_valid = "VUID-vkCmdDrawIndirectByteCountEXT-None-02699";
951 sampler_imageview_type = "VUID-vkCmdDrawIndirectByteCountEXT-None-02702";
952 sampler_implicitLod_dref_proj = "VUID-vkCmdDrawIndirectByteCountEXT-None-02703";
953 sampler_bias_offset = "VUID-vkCmdDrawIndirectByteCountEXT-None-02704";
954 vertex_binding_attribute = "VUID-vkCmdDrawIndirectByteCountEXT-None-02721";
955 dynamic_state_setting_commands = "VUID-vkCmdDrawIndirectByteCountEXT-None-02859";
sfricke-samsung962d6f02021-04-03 20:28:59 -0700956 rasterization_samples = "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-04740";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700957 unprotected_command_buffer = "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707";
958 max_multiview_instance_index = "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688";
Mark Lobodzinskif786b412020-11-30 12:16:17 -0700959 img_filter_cubic = "VUID-vkCmdDrawIndirectByteCountEXT-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -0700960 filter_cubic = "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694";
961 filter_cubic_min_max = "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695";
Tobias Hector6663c9b2020-11-05 10:18:02 +0000962 viewport_count_primitive_shading_rate = "VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552";
Piers Daniell924cd832021-05-18 13:48:47 -0600963 patch_control_points = "VUID-vkCmdDrawIndirectByteCountEXT-None-04875";
964 rasterizer_discard_enable = "VUID-vkCmdDrawIndirectByteCountEXT-None-04876";
965 depth_bias_enable = "VUID-vkCmdDrawIndirectByteCountEXT-None-04877";
966 logic_op = "VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878";
967 primitive_restart_enable = "VUID-vkCmdDrawIndirectByteCountEXT-None-04879";
968 vertex_input_binding_stride = "VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04884";
969 vertex_input = kVUID_Core_CmdDrawIndirectByteCountEXT_VertexInput;
ziga-lunarg8d62f952021-08-30 16:47:25 +0200970 blend_enable = "VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727";
stusmithedc4e392021-12-24 15:22:16 +0000971 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndirectByteCountEXT-viewMask-06178";
972 dynamic_rendering_color_count = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179";
973 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06180";
974 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06181";
975 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06182";
976 dynamic_rendering_fsr = "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06183";
977 dynamic_rendering_fdm = "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184";
978 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185";
979 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186";
980 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187";
981 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06188";
982 dynamic_rendering_06189 = "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06189";
983 dynamic_rendering_06190 = "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06190";
984 dynamic_rendering_06198 = "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +0200985 storage_image_read_without_format = "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-06424";
986 storage_image_write_without_format = "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +0200987 depth_compare_sample = "VUID-vkCmdDrawIndirectByteCountEXT-None-06479";
Aaron Hagan80034ea2021-12-23 11:24:09 -0500988 dynamic_rendering_view_mask = "VUID-vkCmdDrawIndirectByteCountEXT-viewMask-06178";
989 dynamic_rendering_color_count = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179";
990 dynamic_rendering_color_formats = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06180";
991 dynamic_rendering_depth_format = "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06181";
992 dynamic_rendering_stencil_format = "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06182";
993 dynamic_rendering_fsr = "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06183";
994 dynamic_rendering_fdm = "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184";
995 dynamic_rendering_color_sample = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185";
996 dynamic_rendering_depth_sample = "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186";
997 dynamic_rendering_stencil_sample = "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187";
Jeremy Gebben09c1a072022-02-08 09:42:47 -0700998 dynamic_rendering_multi_sample = "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06188";
Aaron Hagan80034ea2021-12-23 11:24:09 -0500999 dynamic_rendering_06189 = "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06189";
1000 dynamic_rendering_06190 = "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06190";
1001 dynamic_rendering_06198 = "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198";
ziga-lunarg50188622022-03-26 01:18:32 +01001002 dynamic_sample_locations = "VUID-vkCmdDrawIndirectByteCountEXT-None-06666";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001003 }
1004};
1005
1006struct DispatchVuidsCmdDispatchBase: DrawDispatchVuid {
1007 DispatchVuidsCmdDispatchBase() : DrawDispatchVuid() {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001008 pipeline_bound = "VUID-vkCmdDispatchBase-None-02700";
Mark Lobodzinski02d37552020-12-28 13:29:46 -07001009 dynamic_state = "VUID-vkCmdDispatchBase-commandBuffer-02701";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001010 compatible_pipeline = "VUID-vkCmdDispatchBase-None-02697";
1011 linear_sampler = "VUID-vkCmdDispatchBase-magFilter-04553";
1012 cubic_sampler = "VUID-vkCmdDispatchBase-None-02692";
1013 corner_sampled_address_mode = "VUID-vkCmdDispatchBase-flags-02696";
1014 imageview_atomic = "VUID-vkCmdDispatchBase-None-02691";
Piers Daniella7f93b62021-11-20 12:32:04 -07001015 push_constants_set = "VUID-vkCmdDispatchBase-maintenance4-06425";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001016 descriptor_valid = "VUID-vkCmdDispatchBase-None-02699";
1017 sampler_imageview_type = "VUID-vkCmdDispatchBase-None-02702";
1018 sampler_implicitLod_dref_proj = "VUID-vkCmdDispatchBase-None-02703";
1019 sampler_bias_offset = "VUID-vkCmdDispatchBase-None-02704";
1020 dynamic_state_setting_commands = "VUID-vkCmdDispatchBase-None-02859";
1021 unprotected_command_buffer = "VUID-vkCmdDispatchBase-commandBuffer-02707";
sfricke-samsunge79d0892021-06-17 08:56:22 -07001022 protected_command_buffer = "VUID-vkCmdDispatchBase-commandBuffer-02712";
Mark Lobodzinskif786b412020-11-30 12:16:17 -07001023 img_filter_cubic = "VUID-vkCmdDispatchBase-None-02693";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001024 filter_cubic = "VUID-vkCmdDispatchBase-filterCubic-02694";
1025 filter_cubic_min_max = "VUID-vkCmdDispatchBase-filterCubicMinmax-02695";
Lionel Landwerlin88423cb2021-12-07 15:31:02 +02001026 storage_image_read_without_format = "VUID-vkCmdDispatchBase-OpTypeImage-06424";
1027 storage_image_write_without_format = "VUID-vkCmdDispatchBase-OpTypeImage-06423";
Lionel Landwerlincdbe8682021-12-08 15:10:37 +02001028 depth_compare_sample = "VUID-vkCmdDispatchBase-None-06479";
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001029 }
1030};
1031
1032// 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 -07001033static const std::map<CMD_TYPE, DrawDispatchVuid> kDrawdispatchVuid = {
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001034 {CMD_DRAW, DispatchVuidsCmdDraw()},
Tony-LunarG4490de42021-06-21 15:49:19 -06001035 {CMD_DRAWMULTIEXT, DispatchVuidsCmdDrawMultiEXT()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001036 {CMD_DRAWINDEXED, DispatchVuidsCmdDrawIndexed()},
Tony-LunarG4490de42021-06-21 15:49:19 -06001037 {CMD_DRAWMULTIINDEXEDEXT, DispatchVuidsCmdDrawMultiIndexedEXT()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001038 {CMD_DRAWINDIRECT, DispatchVuidsCmdDrawIndirect()},
1039 {CMD_DRAWINDEXEDINDIRECT, DispatchVuidsCmdDrawIndexedIndirect()},
1040 {CMD_DISPATCH, DispatchVuidsCmdDispatch()},
1041 {CMD_DISPATCHINDIRECT, DispatchVuidsCmdDispatchIndirect()},
1042 {CMD_DRAWINDIRECTCOUNT, DispatchVuidsCmdDrawIndirectCount()},
sfricke-samsung85584a72021-09-30 21:43:38 -07001043 {CMD_DRAWINDIRECTCOUNTKHR, DispatchVuidsCmdDrawIndirectCount()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001044 {CMD_DRAWINDEXEDINDIRECTCOUNT, DispatchVuidsCmdDrawIndexedIndirectCount()},
sfricke-samsung85584a72021-09-30 21:43:38 -07001045 {CMD_DRAWINDEXEDINDIRECTCOUNTKHR, DispatchVuidsCmdDrawIndexedIndirectCount()},
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001046 {CMD_TRACERAYSNV, DispatchVuidsCmdTraceRaysNV()},
1047 {CMD_TRACERAYSKHR, DispatchVuidsCmdTraceRaysKHR()},
1048 {CMD_TRACERAYSINDIRECTKHR, DispatchVuidsCmdTraceRaysIndirectKHR()},
1049 {CMD_DRAWMESHTASKSNV, DispatchVuidsCmdDrawMeshTasksNV()},
1050 {CMD_DRAWMESHTASKSINDIRECTNV, DispatchVuidsCmdDrawMeshTasksIndirectNV()},
1051 {CMD_DRAWMESHTASKSINDIRECTCOUNTNV, DispatchVuidsCmdDrawMeshTasksIndirectCountNV()},
1052 {CMD_DRAWINDIRECTBYTECOUNTEXT, DispatchVuidsCmdDrawIndirectByteCountEXT()},
1053 {CMD_DISPATCHBASE, DispatchVuidsCmdDispatchBase()},
sfricke-samsung85584a72021-09-30 21:43:38 -07001054 {CMD_DISPATCHBASEKHR, DispatchVuidsCmdDispatchBase()},
Spencer Fricke507600b2020-03-22 13:23:06 -07001055 // Used if invalid cmd_type is used
Mark Lobodzinskiddf43612020-11-17 11:28:02 -07001056 {CMD_NONE, DrawDispatchVuid()}
Spencer Fricke507600b2020-03-22 13:23:06 -07001057};
1058// clang-format on
1059
1060// Getter function to provide kVUIDUndefined in case an invalid cmd_type is passed in
1061const DrawDispatchVuid &CoreChecks::GetDrawDispatchVuid(CMD_TYPE cmd_type) const {
Nathaniel Cesarioce9b4812020-12-17 08:55:28 -07001062 if (kDrawdispatchVuid.find(cmd_type) != kDrawdispatchVuid.cend()) {
1063 return kDrawdispatchVuid.at(cmd_type);
Spencer Fricke507600b2020-03-22 13:23:06 -07001064 } else {
Nathaniel Cesarioce9b4812020-12-17 08:55:28 -07001065 return kDrawdispatchVuid.at(CMD_NONE);
Spencer Fricke507600b2020-03-22 13:23:06 -07001066 }
1067}
1068
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001069// Generic function to handle validation for all CmdDraw* type functions
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001070bool CoreChecks::ValidateCmdDrawType(const CMD_BUFFER_STATE &cb_state, bool indexed, VkPipelineBindPoint bind_point,
sfricke-samsung85584a72021-09-30 21:43:38 -07001071 CMD_TYPE cmd_type) const {
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001072 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001073 skip |= ValidateCmd(&cb_state, cmd_type);
1074 skip |= ValidateCmdBufDrawState(&cb_state, cmd_type, indexed, bind_point);
1075 skip |= ValidateCmdRayQueryState(&cb_state, cmd_type, bind_point);
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001076 return skip;
1077}
1078
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001079bool CoreChecks::ValidateCmdDrawInstance(const CMD_BUFFER_STATE &cb_node, uint32_t instanceCount, uint32_t firstInstance,
sfricke-samsung85584a72021-09-30 21:43:38 -07001080 CMD_TYPE cmd_type) const {
locke-lunarg3fa463a2020-10-23 16:39:04 -06001081 bool skip = false;
1082 const DrawDispatchVuid vuid = GetDrawDispatchVuid(cmd_type);
sfricke-samsung85584a72021-09-30 21:43:38 -07001083 const char *caller = CommandTypeString(cmd_type);
locke-lunarg3fa463a2020-10-23 16:39:04 -06001084
1085 // Verify maxMultiviewInstanceIndex
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001086 if (cb_node.activeRenderPass && cb_node.activeRenderPass->renderPass() && enabled_features.multiview_features.multiview &&
locke-lunarg3fa463a2020-10-23 16:39:04 -06001087 ((instanceCount + firstInstance) > phys_dev_ext_props.multiview_props.maxMultiviewInstanceIndex)) {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001088 LogObjectList objlist(cb_node.Handle());
1089 objlist.add(cb_node.activeRenderPass->Handle());
locke-lunarg3fa463a2020-10-23 16:39:04 -06001090 skip |= LogError(objlist, vuid.max_multiview_instance_index,
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001091 "%s: renderpass %s multiview is enabled, and maxMultiviewInstanceIndex: %" PRIu32
1092 ", but instanceCount: %" PRIu32 "and firstInstance: %" PRIu32 ".",
1093 caller, report_data->FormatHandle(cb_node.activeRenderPass->Handle()).c_str(),
locke-lunarg3fa463a2020-10-23 16:39:04 -06001094 phys_dev_ext_props.multiview_props.maxMultiviewInstanceIndex, instanceCount, firstInstance);
1095 }
1096 return skip;
1097}
1098
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001099bool CoreChecks::PreCallValidateCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount,
Jeff Bolz5c801d12019-10-09 10:38:45 -05001100 uint32_t firstVertex, uint32_t firstInstance) const {
locke-lunarg3fa463a2020-10-23 16:39:04 -06001101 bool skip = false;
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001102 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001103 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAW);
1104 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAW);
locke-lunarg3fa463a2020-10-23 16:39:04 -06001105 return skip;
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001106}
1107
Tony-LunarG4490de42021-06-21 15:49:19 -06001108bool CoreChecks::PreCallValidateCmdDrawMultiEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
1109 const VkMultiDrawInfoEXT *pVertexInfo, uint32_t instanceCount,
1110 uint32_t firstInstance, uint32_t stride) const {
1111 bool skip = false;
1112 if (!enabled_features.multi_draw_features.multiDraw) {
1113 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiEXT-None-04933",
1114 "vkCmdDrawMultiEXT(): The multiDraw feature must be enabled to "
1115 "call this command.");
1116 }
1117 if (drawCount > phys_dev_ext_props.multi_draw_props.maxMultiDrawCount) {
1118 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiEXT-drawCount-04934",
1119 "vkCmdDrawMultiEXT(): parameter, uint32_t drawCount (%" PRIu32
1120 ") must be less than VkPhysicalDeviceMultiDrawPropertiesEXT::maxMultiDrawCount (%" PRIu32 ").",
1121 drawCount, phys_dev_ext_props.multi_draw_props.maxMultiDrawCount);
1122 }
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001123 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001124 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWMULTIEXT);
1125 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMULTIEXT);
Tony-LunarG4490de42021-06-21 15:49:19 -06001126 return skip;
1127}
1128
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001129bool CoreChecks::ValidateCmdDrawIndexedBufferSize(const CMD_BUFFER_STATE &cb_state, uint32_t indexCount, uint32_t firstIndex,
1130 const char *caller, const char *first_index_vuid) const {
Tony-LunarG4490de42021-06-21 15:49:19 -06001131 bool skip = false;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001132 if (cb_state.status & CBSTATUS_INDEX_BUFFER_BOUND) {
Tony-LunarG4490de42021-06-21 15:49:19 -06001133 unsigned int index_size = 0;
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001134 const auto &index_buffer_binding = cb_state.index_buffer_binding;
Tony-LunarG4490de42021-06-21 15:49:19 -06001135 if (index_buffer_binding.index_type == VK_INDEX_TYPE_UINT16) {
1136 index_size = 2;
1137 }
1138 else if (index_buffer_binding.index_type == VK_INDEX_TYPE_UINT32) {
1139 index_size = 4;
1140 }
1141 else if (index_buffer_binding.index_type == VK_INDEX_TYPE_UINT8_EXT) {
1142 index_size = 1;
1143 }
1144 VkDeviceSize end_offset = (index_size * (static_cast<VkDeviceSize>(firstIndex) + indexCount)) + index_buffer_binding.offset;
1145 if (end_offset > index_buffer_binding.size) {
1146 skip |= LogError(index_buffer_binding.buffer_state->buffer(), first_index_vuid,
1147 "%s: index size (%u) * (firstIndex (%u) + indexCount (%u)) "
1148 "+ binding offset (%" PRIuLEAST64 ") = an ending offset of %" PRIuLEAST64
1149 " bytes, which is greater than the index buffer size (%" PRIuLEAST64 ").",
1150 caller, index_size, firstIndex, indexCount, index_buffer_binding.offset, end_offset,
1151 index_buffer_binding.size);
1152 }
1153 }
1154 return skip;
1155}
1156
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001157bool CoreChecks::PreCallValidateCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount,
Jeff Bolz5c801d12019-10-09 10:38:45 -05001158 uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) const {
locke-lunarg3fa463a2020-10-23 16:39:04 -06001159 bool skip = false;
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001160 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001161 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWINDEXED);
1162 skip |= ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDEXED);
1163 skip |= ValidateCmdDrawIndexedBufferSize(*cb_state, indexCount, firstIndex, "vkCmdDrawIndexed()",
Tony-LunarG4490de42021-06-21 15:49:19 -06001164 "VUID-vkCmdDrawIndexed-firstIndex-04932");
1165 return skip;
1166}
1167
1168bool CoreChecks::PreCallValidateCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
1169 const VkMultiDrawIndexedInfoEXT *pIndexInfo, uint32_t instanceCount,
1170 uint32_t firstInstance, uint32_t stride,
1171 const int32_t *pVertexOffset) const {
1172 bool skip = false;
1173 if (!enabled_features.multi_draw_features.multiDraw) {
1174 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiIndexedEXT-None-04937",
1175 "vkCmdDrawMultiIndexedEXT(): The multiDraw feature must be enabled to "
1176 "call this command.");
1177 }
1178 if (drawCount > phys_dev_ext_props.multi_draw_props.maxMultiDrawCount) {
1179 skip |= LogError(commandBuffer, "VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939",
1180 "vkCmdDrawMultiIndexedEXT(): parameter, uint32_t drawCount (0x%" PRIu32
1181 ") must be less than VkPhysicalDeviceMultiDrawPropertiesEXT::maxMultiDrawCount (0x%" PRIu32 ").",
1182 drawCount, phys_dev_ext_props.multi_draw_props.maxMultiDrawCount);
1183 }
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001184 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001185 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWMULTIINDEXEDEXT);
1186 skip |= ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMULTIINDEXEDEXT);
Ricardo Garcia27a26f52021-07-13 15:52:14 +02001187 const auto info_bytes = reinterpret_cast<const char *>(pIndexInfo);
Tony-LunarG4490de42021-06-21 15:49:19 -06001188 for (uint32_t i = 0; i < drawCount; i++) {
Ricardo Garcia27a26f52021-07-13 15:52:14 +02001189 const auto info_ptr = reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>(info_bytes + i * stride);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001190 skip |= ValidateCmdDrawIndexedBufferSize(*cb_state, info_ptr->indexCount, info_ptr->firstIndex,
Tony-LunarG4490de42021-06-21 15:49:19 -06001191 "vkCmdDrawMultiIndexedEXT()", "VUID-vkCmdDrawMultiIndexedEXT-firstIndex-04938");
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001192 }
1193 return skip;
1194}
1195
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001196bool CoreChecks::PreCallValidateCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1197 uint32_t drawCount, uint32_t stride) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001198 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001199 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDIRECT);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001200 auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001201 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWINDIRECT);
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001202 if (drawCount > 1) {
Lockee68ac652019-05-06 10:17:33 -06001203 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndirect-drawCount-00476", stride,
1204 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand));
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001205 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndirect-drawCount-00488", stride,
1206 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand), drawCount, offset,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001207 buffer_state.get());
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001208 } else if ((drawCount == 1) && (offset + sizeof(VkDrawIndirectCommand)) > buffer_state->createInfo.size) {
1209 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirect-drawCount-00487",
Jeremy Gebbenda6b48f2021-05-13 10:46:18 -06001210 "CmdDrawIndirect: drawCount equals 1 and (offset + sizeof(VkDrawIndirectCommand)) (%" PRIu64 ") is not less than "
1211 "or equal to the size of buffer (%" PRIu64 ").",
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001212 (offset + sizeof(VkDrawIndirectCommand)), buffer_state->createInfo.size);
Lockee68ac652019-05-06 10:17:33 -06001213 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001214 // TODO: If the drawIndirectFirstInstance feature is not enabled, all the firstInstance members of the
1215 // VkDrawIndirectCommand structures accessed by this command must be 0, which will require access to the contents of 'buffer'.
1216 return skip;
1217}
1218
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001219bool CoreChecks::PreCallValidateCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001220 uint32_t drawCount, uint32_t stride) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001221 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001222 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDEXEDINDIRECT);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001223 auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001224 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWINDEXEDINDIRECT);
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001225 if (drawCount > 1) {
Lockee68ac652019-05-06 10:17:33 -06001226 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndexedIndirect-drawCount-00528", stride,
1227 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand));
1228 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndexedIndirect-drawCount-00540", stride,
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001229 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand), drawCount,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001230 offset, buffer_state.get());
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001231 } else if ((drawCount == 1) && (offset + sizeof(VkDrawIndexedIndirectCommand)) > buffer_state->createInfo.size) {
1232 skip |= LogError(
1233 commandBuffer, "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
Jeremy Gebbenda6b48f2021-05-13 10:46:18 -06001234 "CmdDrawIndexedIndirect: drawCount equals 1 and (offset + sizeof(VkDrawIndexedIndirectCommand)) (%" PRIu64 ") is not less than "
1235 "or equal to the size of buffer (%" PRIu64 ").",
Tony-LunarGc0c3df52020-11-20 13:47:10 -07001236 (offset + sizeof(VkDrawIndexedIndirectCommand)), buffer_state->createInfo.size);
Lockee68ac652019-05-06 10:17:33 -06001237 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001238 // TODO: If the drawIndirectFirstInstance feature is not enabled, all the firstInstance members of the
1239 // VkDrawIndexedIndirectCommand structures accessed by this command must be 0, which will require access to the contents of
1240 // 'buffer'.
1241 return skip;
1242}
1243
Jeff Bolz5c801d12019-10-09 10:38:45 -05001244bool CoreChecks::PreCallValidateCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) const {
Lockef39c0772019-04-03 14:40:02 -06001245 bool skip = false;
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001246 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001247 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCH);
Lockef39c0772019-04-03 14:40:02 -06001248 return skip;
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001249}
1250
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001251bool CoreChecks::ValidateBaseGroups(const CMD_BUFFER_STATE &cb_state, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
Tony-LunarGf825e6d2020-12-16 13:05:17 -07001252 const char *apiName) const {
1253 bool skip = false;
1254 if (baseGroupX || baseGroupY || baseGroupZ) {
Tony-LunarGf825e6d2020-12-16 13:05:17 -07001255 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_COMPUTE);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001256 const auto *pipeline_state = cb_state.lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben11af9792021-08-20 10:20:09 -06001257 if (pipeline_state && !(pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_DISPATCH_BASE)) {
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001258 skip |= LogError(cb_state.Handle(), "VUID-vkCmdDispatchBase-baseGroupX-00427",
Tony-LunarGf825e6d2020-12-16 13:05:17 -07001259 "%s(): If any of baseGroupX, baseGroupY, or baseGroupZ are not zero, then the bound compute pipeline "
1260 "must have been created with the VK_PIPELINE_CREATE_DISPATCH_BASE flag",
1261 apiName);
1262 }
1263 }
1264 return skip;
1265}
1266
locke-lunarg25b6c352020-08-06 17:44:18 -06001267bool CoreChecks::PreCallValidateCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY,
1268 uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY,
1269 uint32_t groupCountZ) const {
1270 bool skip = false;
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001271 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001272 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCHBASE);
1273 skip |= ValidateBaseGroups(*cb_state, baseGroupX, baseGroupY, baseGroupZ, "vkCmdDispatchBase()");
locke-lunarg25b6c352020-08-06 17:44:18 -06001274 return skip;
1275}
1276
1277bool CoreChecks::PreCallValidateCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY,
1278 uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY,
1279 uint32_t groupCountZ) const {
1280 bool skip = false;
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001281 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001282 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCHBASEKHR);
1283 skip |= ValidateBaseGroups(*cb_state, baseGroupX, baseGroupY, baseGroupZ, "vkCmdDispatchBaseKHR()");
locke-lunarg25b6c352020-08-06 17:44:18 -06001284 return skip;
1285}
1286
Jeff Bolz5c801d12019-10-09 10:38:45 -05001287bool CoreChecks::PreCallValidateCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001288 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001289 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_COMPUTE, CMD_DISPATCHINDIRECT);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001290 auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001291 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DISPATCHINDIRECT);
Tony-LunarGda555b52021-01-06 13:43:49 -07001292 if ((offset + sizeof(VkDispatchIndirectCommand)) > buffer_state->createInfo.size) {
1293 skip |= LogError(commandBuffer, "VUID-vkCmdDispatchIndirect-offset-00407",
1294 "vkCmdDispatchIndirect(): The sum of offset and the size of VkDispatchIndirectCommand is greater than the "
1295 "size of the buffer");
1296 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001297 return skip;
1298}
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001299bool CoreChecks::ValidateCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1300 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
sfricke-samsung85584a72021-09-30 21:43:38 -07001301 uint32_t stride, CMD_TYPE cmd_type) const {
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001302 bool skip = false;
sfricke-samsung85584a72021-09-30 21:43:38 -07001303 const char *apiName = CommandTypeString(cmd_type);
Nathaniel Cesario7f231f12021-03-25 12:10:58 -06001304 if ((device_extensions.vk_khr_draw_indirect_count != kEnabledByCreateinfo) &&
1305 ((api_version >= VK_API_VERSION_1_2) && (enabled_features.core12.drawIndirectCount == VK_FALSE))) {
Shannon McPherson2c793ba2020-08-28 12:13:24 -06001306 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirectCount-None-04445",
sfricke-samsung27c70722020-05-02 08:42:39 -07001307 "%s(): Starting in Vulkan 1.2 the VkPhysicalDeviceVulkan12Features::drawIndirectCount must be enabled to "
1308 "call this command.",
1309 apiName);
1310 }
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001311 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndirectCount-stride-03110", stride,
1312 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand));
Lockee68ac652019-05-06 10:17:33 -06001313 if (maxDrawCount > 1) {
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001314 auto buffer_state = Get<BUFFER_STATE>(buffer);
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001315 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndirectCount-maxDrawCount-03111", stride,
1316 "VkDrawIndirectCommand", sizeof(VkDrawIndirectCommand), maxDrawCount, offset,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001317 buffer_state.get());
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001318 }
1319
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001320 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001321 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, cmd_type);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001322 auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001323 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, cmd_type);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001324 auto count_buffer_state = Get<BUFFER_STATE>(countBuffer);
Jeremy Gebben9f537102021-10-05 16:37:12 -06001325 skip |= ValidateMemoryIsBoundToBuffer(count_buffer_state.get(), apiName, "VUID-vkCmdDrawIndirectCount-countBuffer-02714");
Tony-LunarG83544c72020-01-17 12:30:19 -07001326 skip |=
Jeremy Gebben9f537102021-10-05 16:37:12 -06001327 ValidateBufferUsageFlags(count_buffer_state.get(), VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, true,
Tony-LunarG83544c72020-01-17 12:30:19 -07001328 "VUID-vkCmdDrawIndirectCount-countBuffer-02715", apiName, "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT");
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001329 return skip;
1330}
1331
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001332bool CoreChecks::PreCallValidateCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1333 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
1334 uint32_t stride) const {
Tony-LunarG83544c72020-01-17 12:30:19 -07001335 return ValidateCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001336 CMD_DRAWINDIRECTCOUNTKHR);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001337}
1338
1339bool CoreChecks::PreCallValidateCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1340 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
1341 uint32_t stride) const {
Tony-LunarG83544c72020-01-17 12:30:19 -07001342 return ValidateCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001343 CMD_DRAWINDIRECTCOUNT);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001344}
1345
1346bool CoreChecks::ValidateCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1347 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
sfricke-samsung85584a72021-09-30 21:43:38 -07001348 uint32_t stride, CMD_TYPE cmd_type) const {
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001349 bool skip = false;
sfricke-samsung85584a72021-09-30 21:43:38 -07001350 const char *apiName = CommandTypeString(cmd_type);
Nathaniel Cesario7f231f12021-03-25 12:10:58 -06001351 if ((device_extensions.vk_khr_draw_indirect_count != kEnabledByCreateinfo) &&
1352 ((api_version >= VK_API_VERSION_1_2) && (enabled_features.core12.drawIndirectCount == VK_FALSE))) {
Shannon McPherson2c793ba2020-08-28 12:13:24 -06001353 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndexedIndirectCount-None-04445",
sfricke-samsung27c70722020-05-02 08:42:39 -07001354 "%s(): Starting in Vulkan 1.2 the VkPhysicalDeviceVulkan12Features::drawIndirectCount must be enabled to "
1355 "call this command.",
1356 apiName);
1357 }
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001358 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawIndexedIndirectCount-stride-03142", stride,
1359 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand));
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001360 auto buffer_state = Get<BUFFER_STATE>(buffer);
Lockee68ac652019-05-06 10:17:33 -06001361 if (maxDrawCount > 1) {
Mike Schuchardt65847d92019-12-20 13:50:47 -08001362 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143", stride,
AndreyVK_D3Db2753e12021-07-21 12:24:03 +03001363 "VkDrawIndexedIndirectCommand", sizeof(VkDrawIndexedIndirectCommand), maxDrawCount,
Jeremy Gebben9f537102021-10-05 16:37:12 -06001364 offset, buffer_state.get());
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001365 }
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001366 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001367 skip |= ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_GRAPHICS, cmd_type);
1368 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, cmd_type);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001369 auto count_buffer_state = Get<BUFFER_STATE>(countBuffer);
Jeremy Gebben9f537102021-10-05 16:37:12 -06001370 skip |=
1371 ValidateMemoryIsBoundToBuffer(count_buffer_state.get(), apiName, "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714");
1372 skip |= ValidateBufferUsageFlags(count_buffer_state.get(), VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, true,
sfricke-samsungf692b972020-05-02 08:00:45 -07001373 "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715", apiName,
Mike Schuchardt65847d92019-12-20 13:50:47 -08001374 "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT");
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001375 return skip;
1376}
1377
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001378bool CoreChecks::PreCallValidateCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1379 VkBuffer countBuffer, VkDeviceSize countBufferOffset,
1380 uint32_t maxDrawCount, uint32_t stride) const {
sfricke-samsungf692b972020-05-02 08:00:45 -07001381 return ValidateCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001382 CMD_DRAWINDEXEDINDIRECTCOUNTKHR);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001383}
1384
1385bool CoreChecks::PreCallValidateCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1386 VkBuffer countBuffer, VkDeviceSize countBufferOffset,
1387 uint32_t maxDrawCount, uint32_t stride) const {
sfricke-samsungf692b972020-05-02 08:00:45 -07001388 return ValidateCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride,
sfricke-samsung85584a72021-09-30 21:43:38 -07001389 CMD_DRAWINDEXEDINDIRECTCOUNT);
Tony-LunarGa74d3fe2019-11-22 15:43:20 -07001390}
1391
locke-lunarg9a16ebb2020-07-30 16:56:33 -06001392bool CoreChecks::PreCallValidateCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount,
1393 uint32_t firstInstance, VkBuffer counterBuffer,
1394 VkDeviceSize counterBufferOffset, uint32_t counterOffset,
1395 uint32_t vertexStride) const {
sfricke-samsungd5e9adb2020-10-26 03:59:29 -07001396 bool skip = false;
Tony-LunarG2c94ba82020-11-05 14:21:40 -07001397 if (!enabled_features.transform_feedback_features.transformFeedback) {
1398 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
1399 "%s: transformFeedback feature is not enabled.", "vkCmdDrawIndirectByteCountEXT()");
1400 }
sfricke-samsung45996a42021-09-16 13:45:27 -07001401 if (IsExtEnabled(device_extensions.vk_ext_transform_feedback) &&
1402 !phys_dev_ext_props.transform_feedback_props.transformFeedbackDraw) {
sfricke-samsungba459bd2020-12-06 23:20:04 -08001403 skip |= LogError(commandBuffer, "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
Tony-LunarG2c94ba82020-11-05 14:21:40 -07001404 "%s: VkPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackDraw is not supported",
1405 "vkCmdDrawIndirectByteCountEXT()");
1406 }
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001407 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001408 skip |= ValidateCmdDrawInstance(*cb_state, instanceCount, firstInstance, CMD_DRAWINDIRECTBYTECOUNTEXT);
1409 skip |= ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWINDIRECTBYTECOUNTEXT);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001410 auto counter_buffer_state = Get<BUFFER_STATE>(counterBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001411 skip |= ValidateIndirectCmd(*cb_state, *counter_buffer_state, CMD_DRAWINDIRECTBYTECOUNTEXT);
sfricke-samsungd5e9adb2020-10-26 03:59:29 -07001412 return skip;
locke-lunarg9a16ebb2020-07-30 16:56:33 -06001413}
1414
Jeff Bolzf6e872c2019-10-22 12:17:28 -05001415bool CoreChecks::PreCallValidateCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
1416 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
1417 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
1418 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
1419 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
1420 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
1421 uint32_t width, uint32_t height, uint32_t depth) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001422 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001423 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_RAY_TRACING_NV, CMD_TRACERAYSNV);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001424 auto callable_shader_buffer_state = Get<BUFFER_STATE>(callableShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001425 if (callable_shader_buffer_state && callableShaderBindingOffset >= callable_shader_buffer_state->createInfo.size) {
1426 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
1427 "vkCmdTraceRaysNV: callableShaderBindingOffset %" PRIu64
1428 " must be less than the size of callableShaderBindingTableBuffer %" PRIu64 " .",
1429 callableShaderBindingOffset, callable_shader_buffer_state->createInfo.size);
1430 }
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001431 auto hit_shader_buffer_state = Get<BUFFER_STATE>(hitShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001432 if (hit_shader_buffer_state && hitShaderBindingOffset >= hit_shader_buffer_state->createInfo.size) {
1433 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
1434 "vkCmdTraceRaysNV: hitShaderBindingOffset %" PRIu64
1435 " must be less than the size of hitShaderBindingTableBuffer %" PRIu64 " .",
1436 hitShaderBindingOffset, hit_shader_buffer_state->createInfo.size);
1437 }
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001438 auto miss_shader_buffer_state = Get<BUFFER_STATE>(missShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001439 if (miss_shader_buffer_state && missShaderBindingOffset >= miss_shader_buffer_state->createInfo.size) {
1440 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
1441 "vkCmdTraceRaysNV: missShaderBindingOffset %" PRIu64
baldurk751594b2020-09-09 09:41:02 +01001442 " must be less than the size of missShaderBindingTableBuffer %" PRIu64 " .",
sourav parmard1521802020-06-07 21:49:02 -07001443 missShaderBindingOffset, miss_shader_buffer_state->createInfo.size);
1444 }
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001445 auto raygen_shader_buffer_state = Get<BUFFER_STATE>(raygenShaderBindingTableBuffer);
sourav parmard1521802020-06-07 21:49:02 -07001446 if (raygenShaderBindingOffset >= raygen_shader_buffer_state->createInfo.size) {
1447 skip |= LogError(commandBuffer, "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
1448 "vkCmdTraceRaysNV: raygenShaderBindingOffset %" PRIu64
baldurk751594b2020-09-09 09:41:02 +01001449 " must be less than the size of raygenShaderBindingTableBuffer %" PRIu64 " .",
sourav parmard1521802020-06-07 21:49:02 -07001450 raygenShaderBindingOffset, raygen_shader_buffer_state->createInfo.size);
1451 }
sourav parmarcd5fb182020-07-17 12:58:44 -07001452
sourav parmar30e19392020-12-02 16:57:21 -08001453 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_RAY_TRACING_NV);
1454 const PIPELINE_STATE *pipeline_state = cb_state->lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben14b0d1a2021-05-15 20:15:41 -06001455 if (!pipeline_state || (pipeline_state && !pipeline_state->pipeline())) {
sourav parmar30e19392020-12-02 16:57:21 -08001456 skip |= LogError(device, "VUID-vkCmdTraceRaysNV-None-02700",
1457 "vkCmdTraceRaysKHR: A valid pipeline must be bound to the pipeline bind point used by this command.");
sourav parmarcd5fb182020-07-17 12:58:44 -07001458 }
Jeff Bolzf6e872c2019-10-22 12:17:28 -05001459 return skip;
1460}
1461
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001462bool CoreChecks::PreCallValidateCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -07001463 const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable,
1464 const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable,
1465 const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable,
1466 const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable, uint32_t width,
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001467 uint32_t height, uint32_t depth) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001468 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001469 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, CMD_TRACERAYSKHR);
Shannon McPherson9caca052020-11-25 11:34:38 -07001470 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);
1471 const PIPELINE_STATE *pipeline_state = cb_state->lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben14b0d1a2021-05-15 20:15:41 -06001472 if (!pipeline_state || (pipeline_state && !pipeline_state->pipeline())) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001473 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-None-02700",
1474 "vkCmdTraceRaysKHR: A valid pipeline must be bound to the pipeline bind point used by this command.");
1475 } else { // bound to valid RT pipeline
Jeremy Gebben11af9792021-08-20 10:20:09 -06001476 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001477 if (!pHitShaderBindingTable->deviceAddress) {
1478 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03697",
1479 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with flags "
1480 "that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, the "
1481 "deviceAddress member of pHitShaderBindingTable must not be zero.");
1482 }
1483 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1484 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03514",
1485 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with "
1486 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, "
1487 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1488 "execute an intersection shader must not be set to zero.");
1489 }
1490 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001491 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001492 if (!pHitShaderBindingTable->deviceAddress) {
1493 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03696",
1494 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with flags "
1495 "that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, the "
1496 "deviceAddress member of pHitShaderBindingTable must not be zero.");
1497 }
1498 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1499 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03513",
1500 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with "
1501 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "
1502 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1503 "execute a closest hit shader must not be set to zero.");
1504 }
1505 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001506 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001507 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1508 skip |= LogError(device, "VUID-vkCmdTraceRaysKHR-flags-03512",
1509 "vkCmdTraceRaysKHR: If the currently bound ray tracing pipeline was created with "
1510 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, "
1511 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1512 "execute an any hit shader must not be set to zero.");
1513 }
1514 }
1515 }
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001516 return skip;
1517}
1518
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001519bool CoreChecks::PreCallValidateCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -07001520 const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable,
1521 const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable,
1522 const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable,
1523 const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable,
1524 VkDeviceAddress indirectDeviceAddress) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001525 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001526 bool skip = ValidateCmdDrawType(*cb_state, true, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, CMD_TRACERAYSINDIRECTKHR);
Shannon McPherson9caca052020-11-25 11:34:38 -07001527 const auto lv_bind_point = ConvertToLvlBindPoint(VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);
Jeremy Gebbenb20a8242021-11-05 15:14:43 -06001528 const auto *pipeline_state = cb_state->lastBound[lv_bind_point].pipeline_state;
Jeremy Gebben14b0d1a2021-05-15 20:15:41 -06001529 if (!pipeline_state || (pipeline_state && !pipeline_state->pipeline())) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001530 skip |=
1531 LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-None-02700",
1532 "vkCmdTraceRaysIndirectKHR: A valid pipeline must be bound to the pipeline bind point used by this command.");
1533 } else { // valid bind point
Jeremy Gebben11af9792021-08-20 10:20:09 -06001534 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001535 if (!pHitShaderBindingTable || pHitShaderBindingTable->deviceAddress == 0) {
1536 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03697",
1537 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1538 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, the "
1539 "deviceAddress member of pHitShaderBindingTable must not be zero.");
1540 }
1541 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1542 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
1543 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1544 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, "
1545 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1546 "execute an intersection shader must not be set to zero.");
1547 }
1548 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001549 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001550 if (!pHitShaderBindingTable || pHitShaderBindingTable->deviceAddress == 0) {
1551 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03696",
1552 "vkCmdTraceRaysIndirectKHR:If the currently bound ray tracing pipeline was created with "
1553 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "
1554 "the deviceAddress member of pHitShaderBindingTable must not be zero.");
1555 }
1556 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1557 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
1558 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1559 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "
1560 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1561 "execute a closest hit shader must not be set to zero.");
1562 }
1563 }
Jeremy Gebben11af9792021-08-20 10:20:09 -06001564 if (pipeline_state->GetPipelineCreateFlags() & VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR) {
sourav parmarcd5fb182020-07-17 12:58:44 -07001565 if (!pHitShaderBindingTable || pHitShaderBindingTable->size == 0 || pHitShaderBindingTable->stride == 0) {
1566 skip |= LogError(device, "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
1567 "vkCmdTraceRaysIndirectKHR: If the currently bound ray tracing pipeline was created with "
1568 "flags that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, "
1569 "entries in pHitShaderBindingTable accessed as a result of this command in order to "
1570 "execute an any hit shader must not be set to zero.");
1571 }
1572 }
1573 }
Jeff Bolz443c2ca2020-03-19 12:11:51 -05001574 return skip;
1575}
1576
Jeff Bolz5c801d12019-10-09 10:38:45 -05001577bool CoreChecks::PreCallValidateCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001578 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001579 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMESHTASKSNV);
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001580 return skip;
1581}
1582
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001583bool CoreChecks::PreCallValidateCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
Jeff Bolz5c801d12019-10-09 10:38:45 -05001584 uint32_t drawCount, uint32_t stride) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001585 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001586 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMESHTASKSINDIRECTNV);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001587 auto buffer_state = Get<BUFFER_STATE>(buffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001588 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWMESHTASKSINDIRECTNV);
Lockee68ac652019-05-06 10:17:33 -06001589 if (drawCount > 1) {
Lockee68ac652019-05-06 10:17:33 -06001590 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157", stride,
1591 "VkDrawMeshTasksIndirectCommandNV", sizeof(VkDrawMeshTasksIndirectCommandNV),
Jeremy Gebben9f537102021-10-05 16:37:12 -06001592 drawCount, offset, buffer_state.get());
Lockee68ac652019-05-06 10:17:33 -06001593 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001594 return skip;
1595}
1596
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001597bool CoreChecks::PreCallValidateCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
1598 VkBuffer countBuffer, VkDeviceSize countBufferOffset,
Jeff Bolz5c801d12019-10-09 10:38:45 -05001599 uint32_t maxDrawCount, uint32_t stride) const {
Jeremy Gebbenb68fa022022-01-28 10:08:37 -07001600 auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001601 bool skip = ValidateCmdDrawType(*cb_state, false, VK_PIPELINE_BIND_POINT_GRAPHICS, CMD_DRAWMESHTASKSINDIRECTCOUNTNV);
Jeremy Gebbenf4449392022-01-28 10:09:10 -07001602 auto buffer_state = Get<BUFFER_STATE>(buffer);
1603 auto count_buffer_state = Get<BUFFER_STATE>(countBuffer);
Jeremy Gebbene5361dd2021-11-18 14:23:56 -07001604 skip |= ValidateIndirectCmd(*cb_state, *buffer_state, CMD_DRAWMESHTASKSINDIRECTCOUNTNV);
Jeremy Gebben9f537102021-10-05 16:37:12 -06001605 skip |= ValidateMemoryIsBoundToBuffer(count_buffer_state.get(), "vkCmdDrawMeshTasksIndirectCountNV()",
Shannon McPhersonde3eeba2019-04-30 16:53:59 -06001606 "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714");
Jeremy Gebben9f537102021-10-05 16:37:12 -06001607 skip |= ValidateBufferUsageFlags(count_buffer_state.get(), VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, true,
sfricke-samsungf692b972020-05-02 08:00:45 -07001608 "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
1609 "vkCmdDrawMeshTasksIndirectCountNV()", "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT");
Lockee68ac652019-05-06 10:17:33 -06001610 skip |= ValidateCmdDrawStrideWithStruct(commandBuffer, "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182", stride,
1611 "VkDrawMeshTasksIndirectCommandNV", sizeof(VkDrawMeshTasksIndirectCommandNV));
1612 if (maxDrawCount > 1) {
1613 skip |= ValidateCmdDrawStrideWithBuffer(commandBuffer, "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183", stride,
1614 "VkDrawMeshTasksIndirectCommandNV", sizeof(VkDrawMeshTasksIndirectCommandNV),
Jeremy Gebben9f537102021-10-05 16:37:12 -06001615 maxDrawCount, offset, buffer_state.get());
Lockee68ac652019-05-06 10:17:33 -06001616 }
Jasper St. Pierre512613a2019-04-08 16:25:23 -07001617 return skip;
1618}