1// Copyright 2019-2024 The Khronos Group Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5// Common Valid Usage 6// Common to all dispatch and drawing commands 7 * [[VUID-{refpage}-magFilter-04553]] 8 If a slink:VkSampler created with pname:magFilter or pname:minFilter 9 equal to ename:VK_FILTER_LINEAR and pname:compareEnable equal to 10 ename:VK_FALSE is used to sample a slink:VkImageView as a result of this 11 command, then the image view's 12 <<resources-image-view-format-features,format features>> must: contain 13 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT 14 * [[VUID-{refpage}-mipmapMode-04770]] 15 If a slink:VkSampler created with pname:mipmapMode equal to 16 ename:VK_SAMPLER_MIPMAP_MODE_LINEAR and pname:compareEnable equal to 17 ename:VK_FALSE is used to sample a slink:VkImageView as a result of this 18 command, then the image view's 19 <<resources-image-view-format-features,format features>> must: contain 20 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT 21ifndef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 22 * [[VUID-{refpage}-aspectMask-06478]] 23 If a slink:VkImageView is sampled with 24 <<textures-depth-compare-operation,depth comparison>>, the image view 25 must: have been created with an pname:aspectMask that contains 26 ename:VK_IMAGE_ASPECT_DEPTH_BIT 27endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 28ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 29 * [[VUID-{refpage}-None-06479]] 30 If a slink:VkImageView is sampled with 31 <<textures-depth-compare-operation,depth comparison>>, the image view's 32 <<resources-image-view-format-features,format features>> must: contain 33 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT 34endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 35 * [[VUID-{refpage}-None-02691]] 36 If a slink:VkImageView is accessed using atomic operations as a result 37 of this command, then the image view's 38 <<resources-image-view-format-features,format features>> must: contain 39 ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT 40 * [[VUID-{refpage}-None-07888]] 41 If a ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor is 42 accessed using atomic operations as a result of this command, then the 43 storage texel buffer's <<resources-buffer-view-format-features,format 44 features>> must: contain 45 ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT 46ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 47 * [[VUID-{refpage}-None-02692]] 48 If a slink:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a 49 result of this command, then the image view's 50 <<resources-image-view-format-features,format features>> must: contain 51 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT 52 * [[VUID-{refpage}-None-02693]] 53 If 54ifdef::VK_EXT_filter_cubic[] 55 the apiext:VK_EXT_filter_cubic extension is not enabled and 56endif::VK_EXT_filter_cubic[] 57 any slink:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a 58 result of this command, it must: not have a elink:VkImageViewType of 59 ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or 60 ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY 61ifdef::VK_EXT_filter_cubic[] 62 * [[VUID-{refpage}-filterCubic-02694]] 63 Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a 64 result of this command must: have a elink:VkImageViewType and format 65 that supports cubic filtering, as specified by 66 slink:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic 67 returned by flink:vkGetPhysicalDeviceImageFormatProperties2 68 * [[VUID-{refpage}-filterCubicMinmax-02695]] 69 Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with 70 a reduction mode of either ename:VK_SAMPLER_REDUCTION_MODE_MIN or 71 ename:VK_SAMPLER_REDUCTION_MODE_MAX as a result of this command must: 72 have a elink:VkImageViewType and format that supports cubic filtering 73 together with minmax filtering, as specified by 74 slink:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax 75 returned by flink:vkGetPhysicalDeviceImageFormatProperties2 76endif::VK_EXT_filter_cubic[] 77endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 78ifdef::VK_QCOM_filter_cubic_clamp[] 79 * [[VUID-{refpage}-cubicRangeClamp-09212]] 80 If the <<features-filter-cubic-range-clamp, pname:cubicRangeClamp>> 81 feature is not enabled, then any slink:VkImageView being sampled with 82 ename:VK_FILTER_CUBIC_EXT as a result of this command must: not have a 83 slink:VkSamplerReductionModeCreateInfo::pname:reductionMode equal to 84 ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 85 * [[VUID-{refpage}-reductionMode-09213]] 86 Any slink:VkImageView being sampled with a 87 slink:VkSamplerReductionModeCreateInfo::pname:reductionMode equal to 88 ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a 89 result of this command must: sample with ename:VK_FILTER_CUBIC_EXT 90endif::VK_QCOM_filter_cubic_clamp[] 91ifdef::VK_QCOM_filter_cubic_weights[] 92 * [[VUID-{refpage}-selectableCubicWeights-09214]] 93 If the <<features-filter-cubic-weight-selection, 94 pname:selectableCubicWeights>> feature is not enabled, then any 95 slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a 96 result of this command must: have 97 slink:VkSamplerCubicWeightsCreateInfoQCOM::pname:cubicWeights equal to 98 ename:VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM 99endif::VK_QCOM_filter_cubic_weights[] 100ifdef::VK_NV_corner_sampled_image[] 101 * [[VUID-{refpage}-flags-02696]] 102 Any slink:VkImage created with a slink:VkImageCreateInfo::pname:flags 103 containing ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a 104 result of this command must: only be sampled using a 105 elink:VkSamplerAddressMode of 106 ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE 107endif::VK_NV_corner_sampled_image[] 108ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 109 * [[VUID-{refpage}-OpTypeImage-07027]] 110 For any slink:VkImageView being written as a storage image where the 111 image format field of the code:OpTypeImage is code:Unknown, the view's 112 <<resources-image-view-format-features,format features>> must: contain 113 ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT 114 * [[VUID-{refpage}-OpTypeImage-07028]] 115 For any slink:VkImageView being read as a storage image where the image 116 format field of the code:OpTypeImage is code:Unknown, the view's 117 <<resources-image-view-format-features,format features>> must: contain 118 ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT 119 * [[VUID-{refpage}-OpTypeImage-07029]] 120 For any slink:VkBufferView being written as a storage texel buffer where 121 the image format field of the code:OpTypeImage is code:Unknown, the 122 view's <<VkFormatProperties3,buffer features>> must: contain 123 ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT 124 * [[VUID-{refpage}-OpTypeImage-07030]] 125 Any slink:VkBufferView being read as a storage texel buffer where the 126 image format field of the code:OpTypeImage is code:Unknown then the 127 view's <<VkFormatProperties3,buffer features>> must: contain 128 ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT 129endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 130 * [[VUID-{refpage}-None-08600]] 131 For each set _n_ that is statically used by <<shaders-binding,a bound 132 shader>>, a descriptor set must: have been bound to _n_ at the same 133 pipeline bind point, with a slink:VkPipelineLayout that is compatible 134 for set _n_, with the slink:VkPipelineLayout used to create the current 135 slink:VkPipeline 136ifdef::VK_EXT_shader_object[] 137 or the slink:VkDescriptorSetLayout array used to create the current 138 slink:VkShaderEXT 139endif::VK_EXT_shader_object[] 140 , as described in <<descriptorsets-compatibility>> 141 * [[VUID-{refpage}-None-08601]] 142 For each push constant that is statically used by <<shaders-binding,a 143 bound shader>>, a push constant value must: have been set for the same 144 pipeline bind point, with a slink:VkPipelineLayout that is compatible 145 for push constants, with the slink:VkPipelineLayout used to create the 146 current slink:VkPipeline 147ifdef::VK_EXT_shader_object[] 148 or the slink:VkDescriptorSetLayout array used to create the current 149 slink:VkShaderEXT 150endif::VK_EXT_shader_object[] 151 , as described in <<descriptorsets-compatibility>> 152ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[] 153 * [[VUID-{refpage}-maintenance4-08602]] 154 If the <<features-maintenance4, pname:maintenance4>> feature is not 155 enabled, then for each push constant that is statically used by 156 <<shaders-binding,a bound shader>>, a push constant value must: have 157 been set for the same pipeline bind point, with a slink:VkPipelineLayout 158 that is compatible for push constants, with the slink:VkPipelineLayout 159 used to create the current slink:VkPipeline 160ifdef::VK_EXT_shader_object[] 161 or the slink:VkDescriptorSetLayout and slink:VkPushConstantRange arrays 162 used to create the current slink:VkShaderEXT 163endif::VK_EXT_shader_object[] 164 , as described in <<descriptorsets-compatibility>> 165endif::VK_VERSION_1_3,VK_KHR_maintenance4[] 166 * [[VUID-{refpage}-None-08114]] 167 Descriptors in each bound descriptor set, specified via 168 flink:vkCmdBindDescriptorSets, must: be valid as described by 169 <<descriptor-validity,descriptor validity>> if they are statically used 170 by 171ifndef::VK_EXT_descriptor_buffer[<<shaders-binding,a bound shader>>] 172ifdef::VK_EXT_descriptor_buffer[] 173 the slink:VkPipeline bound to the pipeline bind point used by this 174 command and the bound slink:VkPipeline was not created with 175 ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT 176endif::VK_EXT_descriptor_buffer[] 177ifdef::VK_EXT_descriptor_buffer[] 178 * [[VUID-{refpage}-None-08115]] 179 If the descriptors used by the slink:VkPipeline bound to the pipeline 180 bind point were specified via flink:vkCmdBindDescriptorSets, the bound 181 slink:VkPipeline must: have been created without 182 ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT 183 * [[VUID-{refpage}-None-08116]] 184 Descriptors in bound descriptor buffers, specified via 185 flink:vkCmdSetDescriptorBufferOffsetsEXT, must: be valid if they are 186 dynamically used by the slink:VkPipeline bound to the pipeline bind 187 point used by this command and the bound slink:VkPipeline was created 188 with ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT 189ifdef::VK_EXT_shader_object[] 190 * [[VUID-{refpage}-None-08604]] 191 Descriptors in bound descriptor buffers, specified via 192 flink:vkCmdSetDescriptorBufferOffsetsEXT, must: be valid if they are 193 dynamically used by any slink:VkShaderEXT bound to a stage corresponding 194 to the pipeline bind point used by this command 195endif::VK_EXT_shader_object[] 196 * [[VUID-{refpage}-None-08117]] 197 If the descriptors used by the slink:VkPipeline bound to the pipeline 198 bind point were specified via flink:vkCmdSetDescriptorBufferOffsetsEXT, 199 the bound slink:VkPipeline must: have been created with 200 ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT 201 * [[VUID-{refpage}-None-08119]] 202 If a descriptor is dynamically used with a slink:VkPipeline created with 203 ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor 204 memory must: be resident 205ifdef::VK_EXT_shader_object[] 206 * [[VUID-{refpage}-None-08605]] 207 If a descriptor is dynamically used with a slink:VkShaderEXT created 208 with a sname:VkDescriptorSetLayout that was created with 209 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the 210 descriptor memory must: be resident 211endif::VK_EXT_shader_object[] 212endif::VK_EXT_descriptor_buffer[] 213 * [[VUID-{refpage}-None-08606]] 214ifdef::VK_EXT_shader_object[] 215 If the <<features-shaderObject, pname:shaderObject>> feature is not 216 enabled, a 217endif::VK_EXT_shader_object[] 218ifndef::VK_EXT_shader_object[A] 219 valid pipeline must: be bound to the pipeline bind point used by this 220 command 221 * [[VUID-{refpage}-None-08608]] 222ifdef::VK_EXT_shader_object[] 223 If a pipeline is bound to the pipeline bind point used by this command, 224 there 225endif::VK_EXT_shader_object[] 226ifndef::VK_EXT_shader_object[There] 227 must: not have been any calls to dynamic state setting commands for any 228 state not specified as dynamic in the slink:VkPipeline object bound to 229 the pipeline bind point used by this command, since that pipeline was 230 bound 231 * [[VUID-{refpage}-None-08609]] 232 If the slink:VkPipeline object bound to the pipeline bind point used by 233 this command 234ifdef::VK_EXT_shader_object[] 235 or any slink:VkShaderEXT bound to a stage corresponding to the pipeline 236 bind point used by this command 237endif::VK_EXT_shader_object[] 238 accesses a slink:VkSampler object that uses unnormalized coordinates, 239 that sampler must: not be used to sample from any slink:VkImage with a 240 slink:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D, 241 ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, 242 ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or 243 ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage 244 * [[VUID-{refpage}-None-08610]] 245 If the slink:VkPipeline object bound to the pipeline bind point used by 246 this command 247ifdef::VK_EXT_shader_object[] 248 or any slink:VkShaderEXT bound to a stage corresponding to the pipeline 249 bind point used by this command 250endif::VK_EXT_shader_object[] 251 accesses a slink:VkSampler object that uses unnormalized coordinates, 252 that sampler must: not be used with any of the SPIR-V `OpImageSample*` 253 or `OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref 254 or code:Proj in their name, in any shader stage 255 * [[VUID-{refpage}-None-08611]] 256 If the slink:VkPipeline object bound to the pipeline bind point used by 257 this command 258ifdef::VK_EXT_shader_object[] 259 or any slink:VkShaderEXT bound to a stage corresponding to the pipeline 260 bind point used by this command 261endif::VK_EXT_shader_object[] 262 accesses a slink:VkSampler object that uses unnormalized coordinates, 263 that sampler must: not be used with any of the SPIR-V `OpImageSample*` 264 or `OpImageSparseSample*` instructions that includes a LOD bias or any 265 offset values, in any shader stage 266ifdef::VK_EXT_shader_object[] 267 * [[VUID-{refpage}-None-08607]] 268 If the <<features-shaderObject, pname:shaderObject>> is enabled, either 269 a valid pipeline must: be bound to the pipeline bind point used by this 270 command, or a valid combination of valid and dlink:VK_NULL_HANDLE shader 271 objects must: be bound to every supported shader stage corresponding to 272 the pipeline bind point used by this command 273endif::VK_EXT_shader_object[] 274 * [[VUID-{refpage}-uniformBuffers-06935]] 275 If any stage of the slink:VkPipeline object bound to the pipeline bind 276 point used by this command accesses a uniform buffer, 277ifdef::VK_EXT_pipeline_robustness[] 278 and that stage was created without enabling either 279 ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or 280 ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT 281 for pname:uniformBuffers, 282endif::VK_EXT_pipeline_robustness[] 283 and the <<features-robustBufferAccess, pname:robustBufferAccess>> 284 feature is not enabled, that stage must: not access values outside of 285 the range of the buffer as specified in the descriptor set bound to the 286 same pipeline bind point 287ifdef::VK_EXT_shader_object[] 288 * [[VUID-{refpage}-None-08612]] 289 If the <<features-robustBufferAccess, pname:robustBufferAccess>> feature 290 is not enabled, and any slink:VkShaderEXT bound to a stage corresponding 291 to the pipeline bind point used by this command accesses a uniform 292 buffer, it must: not access values outside of the range of the buffer as 293 specified in the descriptor set bound to the same pipeline bind point 294endif::VK_EXT_shader_object[] 295 * [[VUID-{refpage}-storageBuffers-06936]] 296 If any stage of the slink:VkPipeline object bound to the pipeline bind 297 point used by this command accesses a storage buffer, 298ifdef::VK_EXT_pipeline_robustness[] 299 and that stage was created without enabling either 300 ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or 301 ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT 302 for pname:storageBuffers, 303endif::VK_EXT_pipeline_robustness[] 304 and the <<features-robustBufferAccess, pname:robustBufferAccess>> 305 feature is not enabled, that stage must: not access values outside of 306 the range of the buffer as specified in the descriptor set bound to the 307 same pipeline bind point 308ifdef::VK_EXT_shader_object[] 309 * [[VUID-{refpage}-None-08613]] 310 If the <<features-robustBufferAccess, pname:robustBufferAccess>> feature 311 is not enabled, and any slink:VkShaderEXT bound to a stage corresponding 312 to the pipeline bind point used by this command accesses a storage 313 buffer, it must: not access values outside of the range of the buffer as 314 specified in the descriptor set bound to the same pipeline bind point 315endif::VK_EXT_shader_object[] 316ifdef::VK_VERSION_1_1[] 317 * [[VUID-{refpage}-commandBuffer-02707]] 318 If pname:commandBuffer is an unprotected command buffer and 319 <<limits-protectedNoFault, pname:protectedNoFault>> is not supported, 320 any resource accessed by <<shaders-binding,bound shaders>> must: not be 321 a protected resource 322endif::VK_VERSION_1_1[] 323ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 324 * [[VUID-{refpage}-None-06550]] 325 If <<shaders-binding,a bound shader>> accesses a slink:VkSampler or 326 slink:VkImageView object that enables 327 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>>, that object 328 must: only be used with `OpImageSample*` or `OpImageSparseSample*` 329 instructions 330 * [[VUID-{refpage}-ConstOffset-06551]] 331 If <<shaders-binding,a bound shader>> accesses a slink:VkSampler or 332 slink:VkImageView object that enables 333 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>>, that object 334 must: not use the code:ConstOffset and code:Offset operands 335endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 336 * [[VUID-{refpage}-viewType-07752]] 337 If a slink:VkImageView is accessed as a result of this command, then the 338 image view's pname:viewType must: match the code:Dim operand of the 339 code:OpTypeImage as described in <<textures-operation-validation>> 340 * [[VUID-{refpage}-format-07753]] 341 If a slink:VkImageView is accessed as a result of this command, then the 342 <<formats-numericformat, numeric type>> of the image view's pname:format 343 and the code:Sampled code:Type operand of the code:OpTypeImage must: 344 match 345 * [[VUID-{refpage}-OpImageWrite-08795]] 346 If a slink:VkImageView 347ifdef::VK_KHR_maintenance5[] 348 created with a format other than ename:VK_FORMAT_A8_UNORM_KHR 349endif::VK_KHR_maintenance5[] 350 is accessed using code:OpImageWrite as a result of this command, then 351 the code:Type of the code:Texel operand of that instruction must: have 352 at least as many components as the image view's format 353ifdef::VK_KHR_maintenance5[] 354 * [[VUID-{refpage}-OpImageWrite-08796]] 355 If a slink:VkImageView created with the format 356 ename:VK_FORMAT_A8_UNORM_KHR is accessed using code:OpImageWrite as a 357 result of this command, then the code:Type of the code:Texel operand of 358 that instruction must: have four components 359endif::VK_KHR_maintenance5[] 360 * [[VUID-{refpage}-OpImageWrite-04469]] 361 If a slink:VkBufferView is accessed using code:OpImageWrite as a result 362 of this command, then the code:Type of the code:Texel operand of that 363 instruction must: have at least as many components as the buffer view's 364 format 365ifdef::VK_EXT_shader_image_atomic_int64[] 366 * [[VUID-{refpage}-SampledType-04470]] 367 If a slink:VkImageView with a elink:VkFormat that has a 64-bit component 368 width is accessed as a result of this command, the code:SampledType of 369 the code:OpTypeImage operand of that instruction must: have a code:Width 370 of 64 371 * [[VUID-{refpage}-SampledType-04471]] 372 If a slink:VkImageView with a elink:VkFormat that has a component width 373 less than 64-bit is accessed as a result of this command, the 374 code:SampledType of the code:OpTypeImage operand of that instruction 375 must: have a code:Width of 32 376 * [[VUID-{refpage}-SampledType-04472]] 377 If a slink:VkBufferView with a elink:VkFormat that has a 64-bit 378 component width is accessed as a result of this command, the 379 code:SampledType of the code:OpTypeImage operand of that instruction 380 must: have a code:Width of 64 381 * [[VUID-{refpage}-SampledType-04473]] 382 If a slink:VkBufferView with a elink:VkFormat that has a component width 383 less than 64-bit is accessed as a result of this command, the 384 code:SampledType of the code:OpTypeImage operand of that instruction 385 must: have a code:Width of 32 386 * [[VUID-{refpage}-sparseImageInt64Atomics-04474]] 387 If the <<features-sparseImageInt64Atomics, 388 pname:sparseImageInt64Atomics>> feature is not enabled, slink:VkImage 389 objects created with the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag 390 must: not be accessed by atomic instructions through an code:OpTypeImage 391 with a code:SampledType with a code:Width of 64 by this command 392 * [[VUID-{refpage}-sparseImageInt64Atomics-04475]] 393 If the <<features-sparseImageInt64Atomics, 394 pname:sparseImageInt64Atomics>> feature is not enabled, slink:VkBuffer 395 objects created with the ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT 396 flag must: not be accessed by atomic instructions through an 397 code:OpTypeImage with a code:SampledType with a code:Width of 64 by this 398 command 399endif::VK_EXT_shader_image_atomic_int64[] 400ifdef::VK_QCOM_image_processing[] 401 * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06971]] 402 If code:OpImageWeightedSampleQCOM is used to sample a slink:VkImageView 403 as a result of this command, then the image view's 404 <<resources-image-view-format-features,format features>> must: contain 405 ename:VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM 406 * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06972]] 407 If code:OpImageWeightedSampleQCOM uses a slink:VkImageView as a sample 408 weight image as a result of this command, then the image view's 409 <<resources-image-view-format-features,format features>> must: contain 410 ename:VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM 411 * [[VUID-{refpage}-OpImageBoxFilterQCOM-06973]] 412 If code:OpImageBoxFilterQCOM is used to sample a slink:VkImageView as a 413 result of this command, then the image view's 414 <<resources-image-view-format-features,format features>> must: contain 415 ename:VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM 416 * [[VUID-{refpage}-OpImageBlockMatchSSDQCOM-06974]] 417 If code:OpImageBlockMatchSSDQCOM is used to read from an 418 slink:VkImageView as a result of this command, then the image view's 419 <<resources-image-view-format-features,format features>> must: contain 420 ename:VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM 421 * [[VUID-{refpage}-OpImageBlockMatchSADQCOM-06975]] 422 If code:OpImageBlockMatchSADQCOM is used to read from an 423 slink:VkImageView as a result of this command, then the image view's 424 <<resources-image-view-format-features,format features>> must: contain 425 ename:VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM 426 * [[VUID-{refpage}-OpImageBlockMatchSADQCOM-06976]] 427 If code:OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to 428 read from a reference image as result of this command, then the 429 specified reference coordinates must: not fail 430 <<textures-integer-coordinate-validation,integer texel coordinate 431 validation>> 432 * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06977]] 433 If code:OpImageWeightedSampleQCOM, code:OpImageBoxFilterQCOM, 434ifdef::VK_QCOM_image_processing2[] 435 code:OpImageBlockMatchWindowSSDQCOM, 436 code:OpImageBlockMatchWindowSADQCOM, 437 code:OpImageBlockMatchGatherSSDQCOM, 438 code:OpImageBlockMatchGatherSADQCOM, 439endif::VK_QCOM_image_processing2[] 440 code:OpImageBlockMatchSSDQCOM, or code:OpImageBlockMatchSADQCOM uses a 441 slink:VkSampler as a result of this command, then the sampler must: have 442 been created with ename:VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 443 * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06978]] 444 If any command other than code:OpImageWeightedSampleQCOM, 445 code:OpImageBoxFilterQCOM, 446ifdef::VK_QCOM_image_processing2[] 447 code:OpImageBlockMatchWindowSSDQCOM, 448 code:OpImageBlockMatchWindowSADQCOM, 449 code:OpImageBlockMatchGatherSSDQCOM, 450 code:OpImageBlockMatchGatherSADQCOM, 451endif::VK_QCOM_image_processing2[] 452 code:OpImageBlockMatchSSDQCOM, or code:OpImageBlockMatchSADQCOM uses a 453 slink:VkSampler as a result of this command, then the sampler must: not 454 have been created with ename:VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 455endif::VK_QCOM_image_processing[] 456ifdef::VK_QCOM_image_processing2[] 457 * [[VUID-{refpage}-OpImageBlockMatchWindow-09215]] 458 If a code:OpImageBlockMatchWindow*QCOM or 459 code:OpImageBlockMatchGather*QCOM instruction is used to read from an 460 slink:VkImageView as a result of this command, then the image view's 461 <<resources-image-view-format-features,format features>> must: contain 462 ename:VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM 463 * [[VUID-{refpage}-OpImageBlockMatchWindow-09216]] 464 If a code:OpImageBlockMatchWindow*QCOM or 465 code:OpImageBlockMatchGather*QCOM instruction is used to read from an 466 slink:VkImageView as a result of this command, then the image view's 467 format must: be a single-component format. 468 * [[VUID-{refpage}-OpImageBlockMatchWindow-09217]] 469 If a code:OpImageBlockMatchWindow*QCOM or 470 code:OpImageBlockMatchGather*QCOM read from a reference image as result 471 of this command, then the specified reference coordinates must: not fail 472 <<textures-integer-coordinate-validation,integer texel coordinate 473 validation>> 474endif::VK_QCOM_image_processing2[] 475 * [[VUID-{refpage}-None-07288]] 476 Any shader invocation executed by this command must: 477 <<shaders-termination,terminate>> 478// Common Valid Usage 479