// Copyright 2019-2024 The Khronos Group Inc. // // SPDX-License-Identifier: CC-BY-4.0 // Common Valid Usage // Common to all dispatch and drawing commands * [[VUID-{refpage}-magFilter-04553]] If a slink:VkSampler created with pname:magFilter or pname:minFilter equal to ename:VK_FILTER_LINEAR and pname:compareEnable equal to ename:VK_FALSE is used to sample a slink:VkImageView as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT * [[VUID-{refpage}-mipmapMode-04770]] If a slink:VkSampler created with pname:mipmapMode equal to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR and pname:compareEnable equal to ename:VK_FALSE is used to sample a slink:VkImageView as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT ifndef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] * [[VUID-{refpage}-aspectMask-06478]] If a slink:VkImageView is sampled with <>, the image view must: have been created with an pname:aspectMask that contains ename:VK_IMAGE_ASPECT_DEPTH_BIT endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] * [[VUID-{refpage}-None-06479]] If a slink:VkImageView is sampled with <>, the image view's <> must: contain ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] * [[VUID-{refpage}-None-02691]] If a slink:VkImageView is accessed using atomic operations as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT * [[VUID-{refpage}-None-07888]] If a ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer's <> must: contain ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] * [[VUID-{refpage}-None-02692]] If a slink:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT * [[VUID-{refpage}-None-02693]] If ifdef::VK_EXT_filter_cubic[] the apiext:VK_EXT_filter_cubic extension is not enabled and endif::VK_EXT_filter_cubic[] any slink:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a result of this command, it must: not have a elink:VkImageViewType of ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY ifdef::VK_EXT_filter_cubic[] * [[VUID-{refpage}-filterCubic-02694]] Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a result of this command must: have a elink:VkImageViewType and format that supports cubic filtering, as specified by slink:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic returned by flink:vkGetPhysicalDeviceImageFormatProperties2 * [[VUID-{refpage}-filterCubicMinmax-02695]] Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with a reduction mode of either ename:VK_SAMPLER_REDUCTION_MODE_MIN or ename:VK_SAMPLER_REDUCTION_MODE_MAX as a result of this command must: have a elink:VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by slink:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax returned by flink:vkGetPhysicalDeviceImageFormatProperties2 endif::VK_EXT_filter_cubic[] endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] ifdef::VK_QCOM_filter_cubic_clamp[] * [[VUID-{refpage}-cubicRangeClamp-09212]] If the <> feature is not enabled, then any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a result of this command must: not have a slink:VkSamplerReductionModeCreateInfo::pname:reductionMode equal to ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM * [[VUID-{refpage}-reductionMode-09213]] Any slink:VkImageView being sampled with a slink:VkSamplerReductionModeCreateInfo::pname:reductionMode equal to ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must: sample with ename:VK_FILTER_CUBIC_EXT endif::VK_QCOM_filter_cubic_clamp[] ifdef::VK_QCOM_filter_cubic_weights[] * [[VUID-{refpage}-selectableCubicWeights-09214]] If the <> feature is not enabled, then any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a result of this command must: have slink:VkSamplerCubicWeightsCreateInfoQCOM::pname:cubicWeights equal to ename:VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM endif::VK_QCOM_filter_cubic_weights[] ifdef::VK_NV_corner_sampled_image[] * [[VUID-{refpage}-flags-02696]] Any slink:VkImage created with a slink:VkImageCreateInfo::pname:flags containing ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a result of this command must: only be sampled using a elink:VkSamplerAddressMode of ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE endif::VK_NV_corner_sampled_image[] ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] * [[VUID-{refpage}-OpTypeImage-07027]] For any slink:VkImageView being written as a storage image where the image format field of the code:OpTypeImage is code:Unknown, the view's <> must: contain ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT * [[VUID-{refpage}-OpTypeImage-07028]] For any slink:VkImageView being read as a storage image where the image format field of the code:OpTypeImage is code:Unknown, the view's <> must: contain ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT * [[VUID-{refpage}-OpTypeImage-07029]] For any slink:VkBufferView being written as a storage texel buffer where the image format field of the code:OpTypeImage is code:Unknown, the view's <> must: contain ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT * [[VUID-{refpage}-OpTypeImage-07030]] Any slink:VkBufferView being read as a storage texel buffer where the image format field of the code:OpTypeImage is code:Unknown then the view's <> must: contain ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] * [[VUID-{refpage}-None-08600]] For each set _n_ that is statically used by <>, a descriptor set must: have been bound to _n_ at the same pipeline bind point, with a slink:VkPipelineLayout that is compatible for set _n_, with the slink:VkPipelineLayout used to create the current slink:VkPipeline ifdef::VK_EXT_shader_object[] or the slink:VkDescriptorSetLayout array used to create the current slink:VkShaderEXT endif::VK_EXT_shader_object[] , as described in <> * [[VUID-{refpage}-None-08601]] For each push constant that is statically used by <>, a push constant value must: have been set for the same pipeline bind point, with a slink:VkPipelineLayout that is compatible for push constants, with the slink:VkPipelineLayout used to create the current slink:VkPipeline ifdef::VK_EXT_shader_object[] or the slink:VkDescriptorSetLayout array used to create the current slink:VkShaderEXT endif::VK_EXT_shader_object[] , as described in <> ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[] * [[VUID-{refpage}-maintenance4-08602]] If the <> feature is not enabled, then for each push constant that is statically used by <>, a push constant value must: have been set for the same pipeline bind point, with a slink:VkPipelineLayout that is compatible for push constants, with the slink:VkPipelineLayout used to create the current slink:VkPipeline ifdef::VK_EXT_shader_object[] or the slink:VkDescriptorSetLayout and slink:VkPushConstantRange arrays used to create the current slink:VkShaderEXT endif::VK_EXT_shader_object[] , as described in <> endif::VK_VERSION_1_3,VK_KHR_maintenance4[] * [[VUID-{refpage}-None-08114]] Descriptors in each bound descriptor set, specified via flink:vkCmdBindDescriptorSets, must: be valid as described by <> if they are statically used by ifndef::VK_EXT_descriptor_buffer[<>] ifdef::VK_EXT_descriptor_buffer[] the slink:VkPipeline bound to the pipeline bind point used by this command and the bound slink:VkPipeline was not created with ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT endif::VK_EXT_descriptor_buffer[] ifdef::VK_EXT_descriptor_buffer[] * [[VUID-{refpage}-None-08115]] If the descriptors used by the slink:VkPipeline bound to the pipeline bind point were specified via flink:vkCmdBindDescriptorSets, the bound slink:VkPipeline must: have been created without ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT * [[VUID-{refpage}-None-08116]] Descriptors in bound descriptor buffers, specified via flink:vkCmdSetDescriptorBufferOffsetsEXT, must: be valid if they are dynamically used by the slink:VkPipeline bound to the pipeline bind point used by this command and the bound slink:VkPipeline was created with ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08604]] Descriptors in bound descriptor buffers, specified via flink:vkCmdSetDescriptorBufferOffsetsEXT, must: be valid if they are dynamically used by any slink:VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08117]] If the descriptors used by the slink:VkPipeline bound to the pipeline bind point were specified via flink:vkCmdSetDescriptorBufferOffsetsEXT, the bound slink:VkPipeline must: have been created with ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT * [[VUID-{refpage}-None-08119]] If a descriptor is dynamically used with a slink:VkPipeline created with ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must: be resident ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08605]] If a descriptor is dynamically used with a slink:VkShaderEXT created with a sname:VkDescriptorSetLayout that was created with ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must: be resident endif::VK_EXT_shader_object[] endif::VK_EXT_descriptor_buffer[] * [[VUID-{refpage}-None-08606]] ifdef::VK_EXT_shader_object[] If the <> feature is not enabled, a endif::VK_EXT_shader_object[] ifndef::VK_EXT_shader_object[A] valid pipeline must: be bound to the pipeline bind point used by this command * [[VUID-{refpage}-None-08608]] ifdef::VK_EXT_shader_object[] If a pipeline is bound to the pipeline bind point used by this command, there endif::VK_EXT_shader_object[] ifndef::VK_EXT_shader_object[There] must: not have been any calls to dynamic state setting commands for any state not specified as dynamic in the slink:VkPipeline object bound to the pipeline bind point used by this command, since that pipeline was bound * [[VUID-{refpage}-None-08609]] If the slink:VkPipeline object bound to the pipeline bind point used by this command ifdef::VK_EXT_shader_object[] or any slink:VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command endif::VK_EXT_shader_object[] accesses a slink:VkSampler object that uses unnormalized coordinates, that sampler must: not be used to sample from any slink:VkImage with a slink:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage * [[VUID-{refpage}-None-08610]] If the slink:VkPipeline object bound to the pipeline bind point used by this command ifdef::VK_EXT_shader_object[] or any slink:VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command endif::VK_EXT_shader_object[] accesses a slink:VkSampler object that uses unnormalized coordinates, that sampler must: not be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref or code:Proj in their name, in any shader stage * [[VUID-{refpage}-None-08611]] If the slink:VkPipeline object bound to the pipeline bind point used by this command ifdef::VK_EXT_shader_object[] or any slink:VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command endif::VK_EXT_shader_object[] accesses a slink:VkSampler object that uses unnormalized coordinates, that sampler must: not be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a LOD bias or any offset values, in any shader stage ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08607]] If the <> is enabled, either a valid pipeline must: be bound to the pipeline bind point used by this command, or a valid combination of valid and dlink:VK_NULL_HANDLE shader objects must: be bound to every supported shader stage corresponding to the pipeline bind point used by this command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-uniformBuffers-06935]] If any stage of the slink:VkPipeline object bound to the pipeline bind point used by this command accesses a uniform buffer, ifdef::VK_EXT_pipeline_robustness[] and that stage was created without enabling either ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT for pname:uniformBuffers, endif::VK_EXT_pipeline_robustness[] and the <> feature is not enabled, that stage must: not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08612]] If the <> feature is not enabled, and any slink:VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must: not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point endif::VK_EXT_shader_object[] * [[VUID-{refpage}-storageBuffers-06936]] If any stage of the slink:VkPipeline object bound to the pipeline bind point used by this command accesses a storage buffer, ifdef::VK_EXT_pipeline_robustness[] and that stage was created without enabling either ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT for pname:storageBuffers, endif::VK_EXT_pipeline_robustness[] and the <> feature is not enabled, that stage must: not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08613]] If the <> feature is not enabled, and any slink:VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must: not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point endif::VK_EXT_shader_object[] ifdef::VK_VERSION_1_1[] * [[VUID-{refpage}-commandBuffer-02707]] If pname:commandBuffer is an unprotected command buffer and <> is not supported, any resource accessed by <> must: not be a protected resource endif::VK_VERSION_1_1[] ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] * [[VUID-{refpage}-None-06550]] If <> accesses a slink:VkSampler or slink:VkImageView object that enables <>, that object must: only be used with `OpImageSample*` or `OpImageSparseSample*` instructions * [[VUID-{refpage}-ConstOffset-06551]] If <> accesses a slink:VkSampler or slink:VkImageView object that enables <>, that object must: not use the code:ConstOffset and code:Offset operands endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] * [[VUID-{refpage}-viewType-07752]] If a slink:VkImageView is accessed as a result of this command, then the image view's pname:viewType must: match the code:Dim operand of the code:OpTypeImage as described in <> * [[VUID-{refpage}-format-07753]] If a slink:VkImageView is accessed as a result of this command, then the <> of the image view's pname:format and the code:Sampled code:Type operand of the code:OpTypeImage must: match * [[VUID-{refpage}-OpImageWrite-08795]] If a slink:VkImageView ifdef::VK_KHR_maintenance5[] created with a format other than ename:VK_FORMAT_A8_UNORM_KHR endif::VK_KHR_maintenance5[] is accessed using code:OpImageWrite as a result of this command, then the code:Type of the code:Texel operand of that instruction must: have at least as many components as the image view's format ifdef::VK_KHR_maintenance5[] * [[VUID-{refpage}-OpImageWrite-08796]] If a slink:VkImageView created with the format ename:VK_FORMAT_A8_UNORM_KHR is accessed using code:OpImageWrite as a result of this command, then the code:Type of the code:Texel operand of that instruction must: have four components endif::VK_KHR_maintenance5[] * [[VUID-{refpage}-OpImageWrite-04469]] If a slink:VkBufferView is accessed using code:OpImageWrite as a result of this command, then the code:Type of the code:Texel operand of that instruction must: have at least as many components as the buffer view's format ifdef::VK_EXT_shader_image_atomic_int64[] * [[VUID-{refpage}-SampledType-04470]] If a slink:VkImageView with a elink:VkFormat that has a 64-bit component width is accessed as a result of this command, the code:SampledType of the code:OpTypeImage operand of that instruction must: have a code:Width of 64 * [[VUID-{refpage}-SampledType-04471]] If a slink:VkImageView with a elink:VkFormat that has a component width less than 64-bit is accessed as a result of this command, the code:SampledType of the code:OpTypeImage operand of that instruction must: have a code:Width of 32 * [[VUID-{refpage}-SampledType-04472]] If a slink:VkBufferView with a elink:VkFormat that has a 64-bit component width is accessed as a result of this command, the code:SampledType of the code:OpTypeImage operand of that instruction must: have a code:Width of 64 * [[VUID-{refpage}-SampledType-04473]] If a slink:VkBufferView with a elink:VkFormat that has a component width less than 64-bit is accessed as a result of this command, the code:SampledType of the code:OpTypeImage operand of that instruction must: have a code:Width of 32 * [[VUID-{refpage}-sparseImageInt64Atomics-04474]] If the <> feature is not enabled, slink:VkImage objects created with the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag must: not be accessed by atomic instructions through an code:OpTypeImage with a code:SampledType with a code:Width of 64 by this command * [[VUID-{refpage}-sparseImageInt64Atomics-04475]] If the <> feature is not enabled, slink:VkBuffer objects created with the ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT flag must: not be accessed by atomic instructions through an code:OpTypeImage with a code:SampledType with a code:Width of 64 by this command endif::VK_EXT_shader_image_atomic_int64[] ifdef::VK_QCOM_image_processing[] * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06971]] If code:OpImageWeightedSampleQCOM is used to sample a slink:VkImageView as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06972]] If code:OpImageWeightedSampleQCOM uses a slink:VkImageView as a sample weight image as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM * [[VUID-{refpage}-OpImageBoxFilterQCOM-06973]] If code:OpImageBoxFilterQCOM is used to sample a slink:VkImageView as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM * [[VUID-{refpage}-OpImageBlockMatchSSDQCOM-06974]] If code:OpImageBlockMatchSSDQCOM is used to read from an slink:VkImageView as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM * [[VUID-{refpage}-OpImageBlockMatchSADQCOM-06975]] If code:OpImageBlockMatchSADQCOM is used to read from an slink:VkImageView as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM * [[VUID-{refpage}-OpImageBlockMatchSADQCOM-06976]] If code:OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must: not fail <> * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06977]] If code:OpImageWeightedSampleQCOM, code:OpImageBoxFilterQCOM, ifdef::VK_QCOM_image_processing2[] code:OpImageBlockMatchWindowSSDQCOM, code:OpImageBlockMatchWindowSADQCOM, code:OpImageBlockMatchGatherSSDQCOM, code:OpImageBlockMatchGatherSADQCOM, endif::VK_QCOM_image_processing2[] code:OpImageBlockMatchSSDQCOM, or code:OpImageBlockMatchSADQCOM uses a slink:VkSampler as a result of this command, then the sampler must: have been created with ename:VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM * [[VUID-{refpage}-OpImageWeightedSampleQCOM-06978]] If any command other than code:OpImageWeightedSampleQCOM, code:OpImageBoxFilterQCOM, ifdef::VK_QCOM_image_processing2[] code:OpImageBlockMatchWindowSSDQCOM, code:OpImageBlockMatchWindowSADQCOM, code:OpImageBlockMatchGatherSSDQCOM, code:OpImageBlockMatchGatherSADQCOM, endif::VK_QCOM_image_processing2[] code:OpImageBlockMatchSSDQCOM, or code:OpImageBlockMatchSADQCOM uses a slink:VkSampler as a result of this command, then the sampler must: not have been created with ename:VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM endif::VK_QCOM_image_processing[] ifdef::VK_QCOM_image_processing2[] * [[VUID-{refpage}-OpImageBlockMatchWindow-09215]] If a code:OpImageBlockMatchWindow*QCOM or code:OpImageBlockMatchGather*QCOM instruction is used to read from an slink:VkImageView as a result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM * [[VUID-{refpage}-OpImageBlockMatchWindow-09216]] If a code:OpImageBlockMatchWindow*QCOM or code:OpImageBlockMatchGather*QCOM instruction is used to read from an slink:VkImageView as a result of this command, then the image view's format must: be a single-component format. * [[VUID-{refpage}-OpImageBlockMatchWindow-09217]] If a code:OpImageBlockMatchWindow*QCOM or code:OpImageBlockMatchGather*QCOM read from a reference image as result of this command, then the specified reference coordinates must: not fail <> endif::VK_QCOM_image_processing2[] * [[VUID-{refpage}-None-07288]] Any shader invocation executed by this command must: <> // Common Valid Usage