vulkan 3.24.3 → 3.24.4
raw patch · 43 files changed
+5029/−277 lines, 43 files
Files
- changelog.md +3/−0
- package.yaml +1/−1
- src/Vulkan/CStruct/Extends.hs +9/−0
- src/Vulkan/Core10/CommandBufferBuilding.hs +54/−42
- src/Vulkan/Core10/DescriptorSet.hs +13/−12
- src/Vulkan/Core10/Device.hs +3/−0
- src/Vulkan/Core10/DeviceInitialization.hs +6/−6
- src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs +1/−0
- src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs +2/−2
- src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs +8/−0
- src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs +9/−0
- src/Vulkan/Core10/Enums/StructureType.hs +20/−0
- src/Vulkan/Core10/FuncPointers.hs +7/−7
- src/Vulkan/Core10/FundamentalTypes.hs +2/−0
- src/Vulkan/Core10/FundamentalTypes.hs-boot +1/−0
- src/Vulkan/Core10/Handles.hs +3/−0
- src/Vulkan/Core10/ImageView.hs +8/−0
- src/Vulkan/Core10/OtherTypes.hs +65/−72
- src/Vulkan/Core10/Pipeline.hs +18/−0
- src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs +5/−0
- src/Vulkan/Core12/Enums/DriverId.hs +10/−1
- src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs +13/−2
- src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs +12/−4
- src/Vulkan/Core13/Enums/PipelineStageFlags2.hs +13/−0
- src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs +38/−38
- src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs +20/−0
- src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs +77/−65
- src/Vulkan/Dynamic.hs +14/−1
- src/Vulkan/Extensions.hs +2/−0
- src/Vulkan/Extensions/Dependencies.hs +2/−0
- src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs +1/−1
- src/Vulkan/Extensions/VK_EXT_mesh_shader.hs +6/−3
- src/Vulkan/Extensions/VK_EXT_multi_draw.hs +13/−9
- src/Vulkan/Extensions/VK_EXT_transform_feedback.hs +2/−1
- src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs +4138/−0
- src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs-boot +394/−0
- src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs +2/−2
- src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs +1/−1
- src/Vulkan/Extensions/VK_NV_device_generated_commands.hs +2/−1
- src/Vulkan/Extensions/VK_NV_mesh_shader.hs +6/−3
- src/Vulkan/SPIRVRequirements.hs +21/−0
- src/Vulkan/Version.hs +2/−2
- vulkan.cabal +2/−1
changelog.md view
@@ -2,6 +2,9 @@ ## WIP +## [3.24.4] - 2023-01-20+- Bump API version to v1.3.239+ ## [3.24.3] - 2022-12-28 - Bump API version to v1.3.238
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-version: "3.24.3"+version: "3.24.4" synopsis: Bindings to the Vulkan graphics API. description: Please see [the readme](https://github.com/expipiplus1/vulkan/#readme) category: Graphics
src/Vulkan/CStruct/Extends.hs view
@@ -435,6 +435,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (PhysicalDeviceBorderColorSwizzleFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI)+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderPropertiesHUAWEI) import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)@@ -1117,6 +1119,7 @@ Extends DeviceCreateInfo PhysicalDevicePortabilitySubsetFeaturesKHR = () Extends DeviceCreateInfo PhysicalDevice4444FormatsFeaturesEXT = () Extends DeviceCreateInfo PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()+ Extends DeviceCreateInfo PhysicalDeviceClusterCullingShaderFeaturesHUAWEI = () Extends DeviceCreateInfo PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = () Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateFeaturesKHR = () Extends DeviceCreateInfo PhysicalDeviceShaderTerminateInvocationFeatures = ()@@ -1350,6 +1353,7 @@ Extends PhysicalDeviceFeatures2 PhysicalDevicePortabilitySubsetFeaturesKHR = () Extends PhysicalDeviceFeatures2 PhysicalDevice4444FormatsFeaturesEXT = () Extends PhysicalDeviceFeatures2 PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI = () Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = () Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateFeaturesKHR = () Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTerminateInvocationFeatures = ()@@ -1453,6 +1457,7 @@ Extends PhysicalDeviceProperties2 PhysicalDeviceTexelBufferAlignmentProperties = () Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupSizeControlProperties = () Extends PhysicalDeviceProperties2 PhysicalDeviceSubpassShadingPropertiesHUAWEI = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = () Extends PhysicalDeviceProperties2 PhysicalDeviceLineRasterizationPropertiesEXT = () Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan11Properties = () Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan12Properties = ()@@ -1948,6 +1953,7 @@ STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO -> go @PipelineShaderStageRequiredSubgroupSizeCreateInfo STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI -> go @SubpassShadingPipelineCreateInfoHUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI -> go @PhysicalDeviceSubpassShadingPropertiesHUAWEI+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI -> go @PhysicalDeviceClusterCullingShaderPropertiesHUAWEI STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO -> go @MemoryOpaqueCaptureAddressAllocateInfo STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT -> go @PhysicalDeviceLineRasterizationFeaturesEXT STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT -> go @PhysicalDeviceLineRasterizationPropertiesEXT@@ -1986,6 +1992,7 @@ STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR -> go @PhysicalDevicePortabilitySubsetPropertiesKHR STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT -> go @PhysicalDevice4444FormatsFeaturesEXT STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI -> go @PhysicalDeviceSubpassShadingFeaturesHUAWEI+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI -> go @PhysicalDeviceClusterCullingShaderFeaturesHUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT -> go @PhysicalDeviceShaderImageAtomicInt64FeaturesEXT STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR -> go @FragmentShadingRateAttachmentInfoKHR STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR -> go @PipelineFragmentShadingRateStateCreateInfoKHR@@ -2424,6 +2431,7 @@ {-# complete (::&) :: PipelineShaderStageRequiredSubgroupSizeCreateInfo #-} {-# complete (::&) :: SubpassShadingPipelineCreateInfoHUAWEI #-} {-# complete (::&) :: PhysicalDeviceSubpassShadingPropertiesHUAWEI #-}+{-# complete (::&) :: PhysicalDeviceClusterCullingShaderPropertiesHUAWEI #-} {-# complete (::&) :: MemoryOpaqueCaptureAddressAllocateInfo #-} {-# complete (::&) :: PhysicalDeviceLineRasterizationFeaturesEXT #-} {-# complete (::&) :: PhysicalDeviceLineRasterizationPropertiesEXT #-}@@ -2462,6 +2470,7 @@ {-# complete (::&) :: PhysicalDevicePortabilitySubsetPropertiesKHR #-} {-# complete (::&) :: PhysicalDevice4444FormatsFeaturesEXT #-} {-# complete (::&) :: PhysicalDeviceSubpassShadingFeaturesHUAWEI #-}+{-# complete (::&) :: PhysicalDeviceClusterCullingShaderFeaturesHUAWEI #-} {-# complete (::&) :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT #-} {-# complete (::&) :: FragmentShadingRateAttachmentInfoKHR #-} {-# complete (::&) :: PipelineFragmentShadingRateStateCreateInfoKHR #-}
src/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -2729,7 +2729,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDraw-pDepthAttachment-06181# If the current render pass -- instance was begun with@@ -4542,7 +4543,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndexed-pDepthAttachment-06181# If the current render -- pass instance was begun with@@ -5466,8 +5468,8 @@ -- -- - #VUID-vkCmdDrawIndexed-None-07312# An index buffer /must/ be bound ----- - #VUID-vkCmdDrawIndexed-robustBufferAccess2-07788# If--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+-- - #VUID-vkCmdDrawIndexed-robustBufferAccess2-07825# If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- is not enabled, (@indexSize@ × (@firstIndex@ + @indexCount@) + -- @offset@) /must/ be less than or equal to the size of the bound -- index buffer, with @indexSize@ being based on the type specified by@@ -6356,7 +6358,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndirect-pDepthAttachment-06181# If the current -- render pass instance was begun with@@ -8178,7 +8181,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181# If the -- current render pass instance was begun with@@ -9104,6 +9108,14 @@ -- - #VUID-vkCmdDrawIndexedIndirect-None-07312# An index buffer /must/ be -- bound --+-- - #VUID-vkCmdDrawIndexedIndirect-robustBufferAccess2-07825# If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+-- is not enabled, (@indexSize@ × (@firstIndex@ + @indexCount@) ++-- @offset@) /must/ be less than or equal to the size of the bound+-- index buffer, with @indexSize@ being based on the type specified by+-- @indexType@, where the index buffer, @indexType@, and @offset@ are+-- specified via 'cmdBindIndexBuffer'+-- -- - #VUID-vkCmdDrawIndexedIndirect-drawCount-00528# If @drawCount@ is -- greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be -- greater than or equal to@@ -11466,19 +11478,6 @@ -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' ----- - #VUID-vkCmdCopyBufferToImage-bufferOffset-01558# If @dstImage@ does--- not have either a depth\/stencil or a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the format’s texel block size------ - #VUID-vkCmdCopyBufferToImage-bufferOffset-01559# If @dstImage@ has a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the element size of the compatible format for the format--- and the @aspectMask@ of the @imageSubresource@ as defined in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>--- -- - #VUID-vkCmdCopyBufferToImage-srcImage-00199# If @dstImage@ is of -- type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each -- element of @pRegions@, @imageOffset.y@ /must/ be @0@ and@@ -11507,11 +11506,6 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ ----- - #VUID-vkCmdCopyBufferToImage-pRegions-07273# For each element of--- @pRegions@, @bufferOffset@ /must/ be a multiple of the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>--- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@--- -- - #VUID-vkCmdCopyBufferToImage-pRegions-07274# For each element of -- @pRegions@, @imageOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>@@ -11582,6 +11576,24 @@ -- and then multiplied by the texel block size of @dstImage@ /must/ be -- less than or equal to 231-1 --+-- - #VUID-vkCmdCopyBufferToImage-bufferOffset-01558# If @dstImage@ does+-- not have either a depth\/stencil or a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the format’s texel block size+--+-- - #VUID-vkCmdCopyBufferToImage-bufferOffset-01559# If @dstImage@ has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the element size of the compatible format for the format+-- and the @aspectMask@ of the @imageSubresource@ as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>+--+-- - #VUID-vkCmdCopyBufferToImage-pRegions-07273# For each element of+-- @pRegions@, @bufferOffset@ /must/ be a multiple of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>+-- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@+-- -- - #VUID-vkCmdCopyBufferToImage-srcImage-04053# If @dstImage@ has a -- depth\/stencil format, the @bufferOffset@ member of any element of -- @pRegions@ /must/ be a multiple of @4@@@ -11823,19 +11835,6 @@ -- @commandBuffer@’s command pool’s queue family, as described in -- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties' ----- - #VUID-vkCmdCopyImageToBuffer-bufferOffset-01558# If @srcImage@ does--- not have either a depth\/stencil or a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the format’s texel block size------ - #VUID-vkCmdCopyImageToBuffer-bufferOffset-01559# If @srcImage@ has a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the element size of the compatible format for the format--- and the @aspectMask@ of the @imageSubresource@ as defined in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>--- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-00199# If @srcImage@ is of -- type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each -- element of @pRegions@, @imageOffset.y@ /must/ be @0@ and@@ -11864,11 +11863,6 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ ----- - #VUID-vkCmdCopyImageToBuffer-pRegions-07273# For each element of--- @pRegions@, @bufferOffset@ /must/ be a multiple of the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>--- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@--- -- - #VUID-vkCmdCopyImageToBuffer-pRegions-07274# For each element of -- @pRegions@, @imageOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>@@ -11938,6 +11932,24 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- and then multiplied by the texel block size of @srcImage@ /must/ be -- less than or equal to 231-1+--+-- - #VUID-vkCmdCopyImageToBuffer-bufferOffset-01558# If @srcImage@ does+-- not have either a depth\/stencil or a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the format’s texel block size+--+-- - #VUID-vkCmdCopyImageToBuffer-bufferOffset-01559# If @srcImage@ has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the element size of the compatible format for the format+-- and the @aspectMask@ of the @imageSubresource@ as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>+--+-- - #VUID-vkCmdCopyImageToBuffer-pRegions-07273# For each element of+-- @pRegions@, @bufferOffset@ /must/ be a multiple of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>+-- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-04053# If @srcImage@ has a -- depth\/stencil format, the @bufferOffset@ member of any element of
src/Vulkan/Core10/DescriptorSet.hs view
@@ -1135,6 +1135,19 @@ -- - #VUID-VkDescriptorImageInfo-imageView-06712# @imageView@ /must/ not -- be a 2D array image view created from a 3D image --+-- - #VUID-VkDescriptorImageInfo-imageView-07795# If @imageView@ is a 2D+-- view created from a 3D image, then @descriptorType@ /must/ be+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- or+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+--+-- - #VUID-VkDescriptorImageInfo-imageView-07796# If @imageView@ is a 2D+-- view created from a 3D image, then the image /must/ have been+-- created with+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT'+-- set+-- -- - #VUID-VkDescriptorImageInfo-descriptorType-06713# If the -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-image2DViewOf3D image2DViewOf3D> -- feature is not enabled and @descriptorType@ is@@ -1646,18 +1659,6 @@ -- the @imageView@ member of each element of @pImageInfo@ /must/ have -- been created with -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT' set------ - #VUID-VkWriteDescriptorSet-descriptorType-06710# If @descriptorType@--- is--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',--- or--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',--- each @imageView@ member of each element of @pImageInfo@ that is a 2D--- image view created from a 3D image /must/ have been created from an--- image created with--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT'--- set -- -- - #VUID-VkWriteDescriptorSet-descriptorType-02752# If @descriptorType@ -- is 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
src/Vulkan/Core10/Device.hs view
@@ -100,6 +100,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (PhysicalDeviceBorderColorSwizzleFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI) import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)@@ -846,6 +847,7 @@ -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.PhysicalDeviceBorderColorSwizzleFeaturesEXT', -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures', -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderFeaturesHUAWEI', -- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD', -- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT', -- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',@@ -1110,6 +1112,7 @@ | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeatures = Just f | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateFeaturesKHR = Just f | Just Refl <- eqT @e @PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceClusterCullingShaderFeaturesHUAWEI = Just f | Just Refl <- eqT @e @PhysicalDeviceSubpassShadingFeaturesHUAWEI = Just f | Just Refl <- eqT @e @PhysicalDevice4444FormatsFeaturesEXT = Just f | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetFeaturesKHR = Just f
src/Vulkan/Core10/DeviceInitialization.hs view
@@ -3191,17 +3191,17 @@ shaderStorageImageMultisample :: Bool , -- | #features-shaderStorageImageReadWithoutFormat# -- @shaderStorageImageReadWithoutFormat@ specifies whether storage images- -- require a format qualifier to be specified when reading.- -- @shaderStorageImageReadWithoutFormat@ applies only to formats listed in- -- the+ -- and storage texel buffers require a format qualifier to be specified+ -- when reading. @shaderStorageImageReadWithoutFormat@ applies only to+ -- formats listed in the -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format> -- list. shaderStorageImageReadWithoutFormat :: Bool , -- | #features-shaderStorageImageWriteWithoutFormat# -- @shaderStorageImageWriteWithoutFormat@ specifies whether storage images- -- require a format qualifier to be specified when writing.- -- @shaderStorageImageWriteWithoutFormat@ applies only to formats listed in- -- the+ -- and storage texel buffers require a format qualifier to be specified+ -- when writing. @shaderStorageImageWriteWithoutFormat@ applies only to+ -- formats listed in the -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format> -- list. shaderStorageImageWriteWithoutFormat :: Bool
src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs view
@@ -103,6 +103,7 @@ -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV', -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT', -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI', -- or 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'. It is also -- suitable for passing as the @buffer@ member of -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs view
@@ -166,11 +166,11 @@ -- -- - 'PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- specifies that the pipeline will be used with a fragment shading--- rate attachment.+-- rate attachment and dynamic rendering. -- -- - 'PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT' -- specifies that the pipeline will be used with a fragment density map--- attachment.+-- attachment and dynamic rendering. -- -- - 'PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT' specifies that -- pipeline libraries being linked into this library /should/ have link
src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs view
@@ -12,6 +12,7 @@ , QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT , QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT , QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT+ , QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI , QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT , QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT , ..@@ -169,6 +170,9 @@ -- of rendering otherwise remain unchanged. pattern QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000400 +-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI"+pattern QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = QueryPipelineStatisticFlagBits 0x00002000+ -- | 'QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT' specifies -- that queries managed by the pool will count the number of mesh shader -- invocations. The counter’s value is incremented every time the mesh@@ -232,6 +236,10 @@ , ( QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT , "COMPUTE_SHADER_INVOCATIONS_BIT"+ )+ ,+ ( QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI+ , "CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI" ) , ( QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT
src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs view
@@ -9,6 +9,7 @@ , SHADER_STAGE_COMPUTE_BIT , SHADER_STAGE_ALL_GRAPHICS , SHADER_STAGE_ALL+ , SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI , SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI , SHADER_STAGE_MESH_BIT_EXT , SHADER_STAGE_TASK_BIT_EXT@@ -84,6 +85,10 @@ -- stages which are introduced by extensions. pattern SHADER_STAGE_ALL = ShaderStageFlagBits 0x7fffffff +-- | 'SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI' specifies the cluster culling+-- stage.+pattern SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = ShaderStageFlagBits 0x00080000+ -- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI" pattern SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = ShaderStageFlagBits 0x00004000 @@ -133,6 +138,10 @@ , (SHADER_STAGE_COMPUTE_BIT, "COMPUTE_BIT") , (SHADER_STAGE_ALL_GRAPHICS, "ALL_GRAPHICS") , (SHADER_STAGE_ALL, "ALL")+ ,+ ( SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI+ , "CLUSTER_CULLING_BIT_HUAWEI"+ ) , ( SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI , "SUBPASS_SHADING_BIT_HUAWEI"
src/Vulkan/Core10/Enums/StructureType.hs view
@@ -102,6 +102,8 @@ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT , STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT , STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT , STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT , STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT@@ -1018,6 +1020,8 @@ -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.PhysicalDeviceBorderColorSwizzleFeaturesEXT', -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures', -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderFeaturesHUAWEI',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderPropertiesHUAWEI', -- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD', -- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT', -- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',@@ -1761,6 +1765,12 @@ -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = StructureType 1000411000 +-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = StructureType 1000404001++-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = StructureType 1000404000+ -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT" pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = StructureType 1000396009 @@ -3622,6 +3632,8 @@ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT , STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT , STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT , STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT , STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT@@ -4614,6 +4626,14 @@ , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT , "PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"+ )+ ,+ ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI+ , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"+ )+ ,+ ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI+ , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI" ) , ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
src/Vulkan/Core10/FuncPointers.hs view
@@ -56,13 +56,13 @@ -- -- = Description ----- @pfnReallocation@ /must/ return an allocation with enough space for--- @size@ bytes, and the contents of the original allocation from bytes--- zero to min(original size, new size) - 1 /must/ be preserved in the--- returned allocation. If @size@ is larger than the old size, the contents--- of the additional space are undefined. If satisfying these requirements--- involves creating a new allocation, then the old allocation /should/ be--- freed.+-- If the reallocation was successful, @pfnReallocation@ /must/ return an+-- allocation with enough space for @size@ bytes, and the contents of the+-- original allocation from bytes zero to min(original size, new size) - 1+-- /must/ be preserved in the returned allocation. If @size@ is larger than+-- the old size, the contents of the additional space are undefined. If+-- satisfying these requirements involves creating a new allocation, then+-- the old allocation /should/ be freed. -- -- If @pOriginal@ is @NULL@, then @pfnReallocation@ /must/ behave -- equivalently to a call to 'PFN_vkAllocationFunction' with the same
src/Vulkan/Core10/FundamentalTypes.hs view
@@ -440,6 +440,7 @@ -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.PhysicalDeviceBorderColorSwizzleFeaturesEXT', -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures', -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderFeaturesHUAWEI', -- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD', -- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT', -- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',@@ -899,6 +900,7 @@ -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect', -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount', -- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
src/Vulkan/Core10/FundamentalTypes.hs-boot view
@@ -169,6 +169,7 @@ -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect', -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount', -- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
src/Vulkan/Core10/Handles.hs view
@@ -621,6 +621,8 @@ -- 'Vulkan.Extensions.VK_KHR_device_group.cmdDispatchBaseKHR', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterHUAWEI',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect', -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',@@ -900,6 +902,7 @@ -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect', -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount', -- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
src/Vulkan/Core10/ImageView.hs view
@@ -933,6 +933,14 @@ -- @format@ indicated by @subresourceRange.aspectMask@, as defined in -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes> --+-- - #VUID-VkImageViewCreateInfo-subresourceRange-07818# If+-- @subresourceRange.aspectMask@ contains any of+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT',+-- then it /must/ only have a single bit set+-- -- - #VUID-VkImageViewCreateInfo-image-01762# If @image@ was not created -- with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
src/Vulkan/Core10/OtherTypes.hs view
@@ -427,34 +427,6 @@ -- -- == Valid Usage ----- - #VUID-VkImageMemoryBarrier-subresourceRange-01486#--- @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@--- specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was--- created------ - #VUID-VkImageMemoryBarrier-subresourceRange-01724# If--- @subresourceRange.levelCount@ is not--- 'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',--- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@--- /must/ be less than or equal to the @mipLevels@ specified in--- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ - #VUID-VkImageMemoryBarrier-subresourceRange-01488#--- @subresourceRange.baseArrayLayer@ /must/ be less than the--- @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'--- when @image@ was created------ - #VUID-VkImageMemoryBarrier-subresourceRange-01725# If--- @subresourceRange.layerCount@ is not--- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',--- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@--- /must/ be less than or equal to the @arrayLayers@ specified in--- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ - #VUID-VkImageMemoryBarrier-image-01932# If @image@ is non-sparse--- then it /must/ be bound completely and contiguously to a single--- 'Vulkan.Core10.Handles.DeviceMemory' object--- -- - #VUID-VkImageMemoryBarrier-oldLayout-01208# If @srcQueueFamilyIndex@ -- and @dstQueueFamilyIndex@ define a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>@@ -649,43 +621,6 @@ -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- set ----- - #VUID-VkImageMemoryBarrier-image-01671# If @image@ has a--- single-plane color format or is not /disjoint/, then the--- @aspectMask@ member of @subresourceRange@ /must/ be--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'------ - #VUID-VkImageMemoryBarrier-image-01672# If @image@ has a--- multi-planar format and the image is /disjoint/, then the--- @aspectMask@ member of @subresourceRange@ /must/ include either at--- least one of--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',--- and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';--- or /must/ include--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'------ - #VUID-VkImageMemoryBarrier-image-01673# If @image@ has a--- multi-planar format with only two planes, then the @aspectMask@--- member of @subresourceRange@ /must/ not include--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'------ - #VUID-VkImageMemoryBarrier-image-03319# If @image@ has a--- depth\/stencil format with both depth and stencil and the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>--- feature is enabled, then the @aspectMask@ member of--- @subresourceRange@ /must/ include either or both--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'------ - #VUID-VkImageMemoryBarrier-image-03320# If @image@ has a--- depth\/stencil format with both depth and stencil and the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>--- feature is not enabled, then the @aspectMask@ member of--- @subresourceRange@ /must/ include both--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'--- -- - #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070# If -- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at -- least one /must/ not be a special queue family reserved for external@@ -788,6 +723,71 @@ -- feature is not enabled, @newLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' --+-- - #VUID-VkImageMemoryBarrier-subresourceRange-01486#+-- @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@+-- specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was+-- created+--+-- - #VUID-VkImageMemoryBarrier-subresourceRange-01724# If+-- @subresourceRange.levelCount@ is not+-- 'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',+-- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@+-- /must/ be less than or equal to the @mipLevels@ specified in+-- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- - #VUID-VkImageMemoryBarrier-subresourceRange-01488#+-- @subresourceRange.baseArrayLayer@ /must/ be less than the+-- @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+-- when @image@ was created+--+-- - #VUID-VkImageMemoryBarrier-subresourceRange-01725# If+-- @subresourceRange.layerCount@ is not+-- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',+-- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@+-- /must/ be less than or equal to the @arrayLayers@ specified in+-- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- - #VUID-VkImageMemoryBarrier-image-01932# If @image@ is non-sparse+-- then it /must/ be bound completely and contiguously to a single+-- 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- - #VUID-VkImageMemoryBarrier-image-01671# If @image@ has a+-- single-plane color format or is not /disjoint/, then the+-- @aspectMask@ member of @subresourceRange@ /must/ be+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - #VUID-VkImageMemoryBarrier-image-01672# If @image@ has a+-- multi-planar format and the image is /disjoint/, then the+-- @aspectMask@ member of @subresourceRange@ /must/ include either at+-- least one of+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';+-- or /must/ include+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - #VUID-VkImageMemoryBarrier-image-01673# If @image@ has a+-- multi-planar format with only two planes, then the @aspectMask@+-- member of @subresourceRange@ /must/ not include+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- - #VUID-VkImageMemoryBarrier-image-03319# If @image@ has a+-- depth\/stencil format with both depth and stencil and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is enabled, then the @aspectMask@ member of+-- @subresourceRange@ /must/ include either or both+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- - #VUID-VkImageMemoryBarrier-image-03320# If @image@ has a+-- depth\/stencil format with both depth and stencil and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, then the @aspectMask@ member of+-- @subresourceRange@ /must/ include both+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- -- - #VUID-VkImageMemoryBarrier-synchronization2-03857# If the -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2> -- feature is not enabled, and @image@ was created with a sharing mode@@ -1145,13 +1145,6 @@ -- contained within the corresponding vertex buffer binding, as -- described in -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input>------ - #VUID-VkDrawIndexedIndirectCommand-indexSize-00553# (@indexSize@ ×--- (@firstIndex@ + @indexCount@) + @offset@) /must/ be less than or--- equal to the size of the bound index buffer, with @indexSize@ being--- based on the type specified by @indexType@, where the index buffer,--- @indexType@, and @offset@ are specified via--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' -- -- - #VUID-VkDrawIndexedIndirectCommand-firstInstance-00554# If the -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
src/Vulkan/Core10/Pipeline.hs view
@@ -1050,6 +1050,12 @@ -- feature is not enabled, @stage@ /must/ not be -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' --+-- - #VUID-VkPipelineShaderStageCreateInfo-clustercullingShader-07813# If+-- the+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-clustercullingShader clustercullingShader>+-- feature is not enabled, @stage@ /must/ not be+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI'+-- -- - #VUID-VkPipelineShaderStageCreateInfo-stage-00706# @stage@ /must/ -- not be -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL_GRAPHICS',@@ -6079,6 +6085,18 @@ -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@ -- /must/ be greater than @0@+--+-- - #VUID-VkGraphicsPipelineCreateInfo-flags-07814# If @flags@ includes+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',+-- the pipeline includes a+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>+-- specified entirely by libraries, and each library was created with a+-- 'Vulkan.Core10.Handles.PipelineLayout' created without+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+-- then @layout@ /must/ be a valid+-- 'Vulkan.Core10.Handles.PipelineLayout' that is+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>+-- with the layouts in those libraries -- -- - #VUID-VkGraphicsPipelineCreateInfo-flags-06729# If @flags@ includes -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',
src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -109,6 +109,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (PhysicalDeviceBorderColorSwizzleFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI)+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderPropertiesHUAWEI) import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)@@ -899,6 +901,7 @@ | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeatures = Just f | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateFeaturesKHR = Just f | Just Refl <- eqT @e @PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceClusterCullingShaderFeaturesHUAWEI = Just f | Just Refl <- eqT @e @PhysicalDeviceSubpassShadingFeaturesHUAWEI = Just f | Just Refl <- eqT @e @PhysicalDevice4444FormatsFeaturesEXT = Just f | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetFeaturesKHR = Just f@@ -1046,6 +1049,7 @@ -- either @NULL@ or a pointer to a valid instance of -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR', -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderPropertiesHUAWEI', -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT', -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV', -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesNV',@@ -1170,6 +1174,7 @@ | Just Refl <- eqT @e @PhysicalDeviceVulkan12Properties = Just f | Just Refl <- eqT @e @PhysicalDeviceVulkan11Properties = Just f | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = Just f | Just Refl <- eqT @e @PhysicalDeviceSubpassShadingPropertiesHUAWEI = Just f | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlProperties = Just f | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentProperties = Just f
src/Vulkan/Core12/Enums/DriverId.hs view
@@ -24,6 +24,7 @@ , DRIVER_ID_MESA_VENUS , DRIVER_ID_MESA_DOZEN , DRIVER_ID_MESA_NVK+ , DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA , .. )) where @@ -136,6 +137,9 @@ -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MESA_NVK" pattern DRIVER_ID_MESA_NVK = DriverId 24 +-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA"+pattern DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = DriverId 25+ {-# COMPLETE DRIVER_ID_AMD_PROPRIETARY , DRIVER_ID_AMD_OPEN_SOURCE@@ -160,7 +164,8 @@ , DRIVER_ID_SAMSUNG_PROPRIETARY , DRIVER_ID_MESA_VENUS , DRIVER_ID_MESA_DOZEN- , DRIVER_ID_MESA_NVK ::+ , DRIVER_ID_MESA_NVK+ , DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA :: DriverId #-} @@ -208,6 +213,10 @@ , (DRIVER_ID_MESA_VENUS, "MESA_VENUS") , (DRIVER_ID_MESA_DOZEN, "MESA_DOZEN") , (DRIVER_ID_MESA_NVK, "MESA_NVK")+ ,+ ( DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA+ , "IMAGINATION_OPEN_SOURCE_MESA"+ ) ] instance Show DriverId where
src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs view
@@ -832,7 +832,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06181# If the current -- render pass instance was begun with@@ -2698,7 +2699,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06181# If the -- current render pass instance was begun with@@ -3640,6 +3642,15 @@ -- -- - #VUID-vkCmdDrawIndexedIndirectCount-None-07312# An index buffer -- /must/ be bound+--+-- - #VUID-vkCmdDrawIndexedIndirectCount-robustBufferAccess2-07825# If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+-- is not enabled, (@indexSize@ × (@firstIndex@ + @indexCount@) ++-- @offset@) /must/ be less than or equal to the size of the bound+-- index buffer, with @indexSize@ being based on the type specified by+-- @indexType@, where the index buffer, @indexType@, and @offset@ are+-- specified via+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' -- -- - #VUID-vkCmdDrawIndexedIndirectCount-stride-03142# @stride@ /must/ be -- a multiple of @4@ and /must/ be greater than or equal to
src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs view
@@ -404,13 +404,17 @@ -- image views or buffer views created with this format /can/ be used -- as -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>--- for read operations without specifying a format.+-- or+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>+-- respectively for read operations without specifying a format. -- -- - 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that -- image views or buffer views created with this format /can/ be used -- as -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>--- for write operations without specifying a format.+-- or+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>+-- respectively for write operations without specifying a format. -- -- - 'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' specifies that -- image views created with this format /can/ be used for depth@@ -702,7 +706,9 @@ -- | 'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that image -- views or buffer views created with this format /can/ be used as -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>--- for read operations without specifying a format.+-- or+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>+-- respectively for read operations without specifying a format. -- -- 'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that buffer -- views created with this format /can/ be used as@@ -713,7 +719,9 @@ -- | 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that image -- views or buffer views created with this format /can/ be used as -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>--- for write operations without specifying a format.+-- or+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>+-- respectively for write operations without specifying a format. -- -- 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that -- buffer views created with this format /can/ be used as
src/Vulkan/Core13/Enums/PipelineStageFlags2.hs view
@@ -54,6 +54,7 @@ , PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT , PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT , PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV+ , PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI , PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT , PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR , PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI@@ -348,6 +349,8 @@ -- - 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT' -- -- - 'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'+--+-- - 'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI' pattern PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = PipelineStageFlagBits2 0x0000000000008000 -- | 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT' specifies all operations performed@@ -396,6 +399,8 @@ -- - 'PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT' -- -- - 'PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'+--+-- - 'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI' pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = PipelineStageFlagBits2 0x0000004000000000 -- | 'PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV' specifies the stage of the@@ -404,6 +409,10 @@ -- are performed. pattern PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = PipelineStageFlagBits2 0x0000000020000000 +-- | 'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI' specifies the+-- cluster culling shader stage.+pattern PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = PipelineStageFlagBits2 0x0000020000000000+ -- | 'PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT' specifies the execution of -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#micromap micromap commands>. pattern PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = PipelineStageFlagBits2 0x0000000040000000@@ -562,6 +571,10 @@ , ( PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV , "OPTICAL_FLOW_BIT_NV"+ )+ ,+ ( PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI+ , "CLUSTER_CULLING_SHADER_BIT_HUAWEI" ) , ( PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs view
@@ -2399,20 +2399,6 @@ -- less than or equal to the height of the specified @imageSubresource@ -- of @dstImage@ ----- - #VUID-VkCopyBufferToImageInfo2-bufferOffset-01558# If @dstImage@--- does not have either a depth\/stencil or a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the format’s texel block size------ - #VUID-VkCopyBufferToImageInfo2-bufferOffset-01559# If @dstImage@ has--- a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the element size of the compatible format for the format--- and the @aspectMask@ of the @imageSubresource@ as defined in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>--- -- - #VUID-VkCopyBufferToImageInfo2-srcImage-00199# If @dstImage@ is of -- type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each -- element of @pRegions@, @imageOffset.y@ /must/ be @0@ and@@ -2441,11 +2427,6 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ ----- - #VUID-VkCopyBufferToImageInfo2-pRegions-07273# For each element of--- @pRegions@, @bufferOffset@ /must/ be a multiple of the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>--- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@--- -- - #VUID-VkCopyBufferToImageInfo2-pRegions-07274# For each element of -- @pRegions@, @imageOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>@@ -2516,6 +2497,25 @@ -- and then multiplied by the texel block size of @dstImage@ /must/ be -- less than or equal to 231-1 --+-- - #VUID-VkCopyBufferToImageInfo2-bufferOffset-01558# If @dstImage@+-- does not have either a depth\/stencil or a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the format’s texel block size+--+-- - #VUID-VkCopyBufferToImageInfo2-bufferOffset-01559# If @dstImage@ has+-- a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the element size of the compatible format for the format+-- and the @aspectMask@ of the @imageSubresource@ as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>+--+-- - #VUID-VkCopyBufferToImageInfo2-pRegions-07273# For each element of+-- @pRegions@, @bufferOffset@ /must/ be a multiple of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>+-- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@+-- -- - #VUID-VkCopyBufferToImageInfo2-srcImage-04053# If @dstImage@ has a -- depth\/stencil format, the @bufferOffset@ member of any element of -- @pRegions@ /must/ be a multiple of @4@@@ -2733,20 +2733,6 @@ -- less than or equal to the height of the specified @imageSubresource@ -- of @srcImage@ ----- - #VUID-VkCopyImageToBufferInfo2-bufferOffset-01558# If @srcImage@--- does not have either a depth\/stencil or a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the format’s texel block size------ - #VUID-VkCopyImageToBufferInfo2-bufferOffset-01559# If @srcImage@ has--- a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- then for each element of @pRegions@, @bufferOffset@ /must/ be a--- multiple of the element size of the compatible format for the format--- and the @aspectMask@ of the @imageSubresource@ as defined in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>--- -- - #VUID-VkCopyImageToBufferInfo2-srcImage-00199# If @srcImage@ is of -- type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each -- element of @pRegions@, @imageOffset.y@ /must/ be @0@ and@@ -2775,11 +2761,6 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ ----- - #VUID-VkCopyImageToBufferInfo2-pRegions-07273# For each element of--- @pRegions@, @bufferOffset@ /must/ be a multiple of the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>--- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@--- -- - #VUID-VkCopyImageToBufferInfo2-pRegions-07274# For each element of -- @pRegions@, @imageOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>@@ -2849,6 +2830,25 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- and then multiplied by the texel block size of @srcImage@ /must/ be -- less than or equal to 231-1+--+-- - #VUID-VkCopyImageToBufferInfo2-bufferOffset-01558# If @srcImage@+-- does not have either a depth\/stencil or a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the format’s texel block size+--+-- - #VUID-VkCopyImageToBufferInfo2-bufferOffset-01559# If @srcImage@ has+-- a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then for each element of @pRegions@, @bufferOffset@ /must/ be a+-- multiple of the element size of the compatible format for the format+-- and the @aspectMask@ of the @imageSubresource@ as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>+--+-- - #VUID-VkCopyImageToBufferInfo2-pRegions-07273# For each element of+-- @pRegions@, @bufferOffset@ /must/ be a multiple of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>+-- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-VkCopyImageToBufferInfo2-srcImage-04053# If @srcImage@ has a -- depth\/stencil format, the @bufferOffset@ member of any element of
src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs view
@@ -455,6 +455,22 @@ -- or its @deviceRenderAreaCount@ member is equal to 0, -- @renderArea.offset.y@ /must/ be greater than or equal to 0 --+-- - #VUID-VkRenderingInfo-pNext-07815# If the @pNext@ chain does not+-- contain+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+-- or its @deviceRenderAreaCount@ member is equal to 0, the sum of+-- @renderArea.extent.width@ and @renderArea.offset.x@ /must/ be less+-- than or equal to+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>+--+-- - #VUID-VkRenderingInfo-pNext-07816# If the @pNext@ chain does not+-- contain+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+-- or its @deviceRenderAreaCount@ member is equal to 0, the sum of+-- @renderArea.extent.width@ and @renderArea.offset.y@ /must/ be less+-- than or equal to+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferHeight>+-- -- - #VUID-VkRenderingInfo-pNext-06079# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'@@ -838,6 +854,10 @@ -- height greater than or equal to -- \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\) -- for each element of @pDeviceRenderAreas@+--+-- - #VUID-VkRenderingInfo-layerCount-07817# @layerCount@ /must/ be less+-- than or equal to+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers> -- -- - #VUID-VkRenderingInfo-imageView-06123# If the @imageView@ member of -- a
src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs view
@@ -1614,6 +1614,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -1627,6 +1628,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -1998,6 +2000,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -2011,6 +2014,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -2562,6 +2566,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -2575,6 +2580,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -2946,6 +2952,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -2959,6 +2966,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -3140,34 +3148,6 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT', -- or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages ----- - #VUID-VkImageMemoryBarrier2-subresourceRange-01486#--- @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@--- specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was--- created------ - #VUID-VkImageMemoryBarrier2-subresourceRange-01724# If--- @subresourceRange.levelCount@ is not--- 'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',--- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@--- /must/ be less than or equal to the @mipLevels@ specified in--- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ - #VUID-VkImageMemoryBarrier2-subresourceRange-01488#--- @subresourceRange.baseArrayLayer@ /must/ be less than the--- @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'--- when @image@ was created------ - #VUID-VkImageMemoryBarrier2-subresourceRange-01725# If--- @subresourceRange.layerCount@ is not--- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',--- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@--- /must/ be less than or equal to the @arrayLayers@ specified in--- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ - #VUID-VkImageMemoryBarrier2-image-01932# If @image@ is non-sparse--- then it /must/ be bound completely and contiguously to a single--- 'Vulkan.Core10.Handles.DeviceMemory' object--- -- - #VUID-VkImageMemoryBarrier2-oldLayout-01208# If -- @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>@@ -3362,43 +3342,6 @@ -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- set ----- - #VUID-VkImageMemoryBarrier2-image-01671# If @image@ has a--- single-plane color format or is not /disjoint/, then the--- @aspectMask@ member of @subresourceRange@ /must/ be--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'------ - #VUID-VkImageMemoryBarrier2-image-01672# If @image@ has a--- multi-planar format and the image is /disjoint/, then the--- @aspectMask@ member of @subresourceRange@ /must/ include either at--- least one of--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',--- and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';--- or /must/ include--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'------ - #VUID-VkImageMemoryBarrier2-image-01673# If @image@ has a--- multi-planar format with only two planes, then the @aspectMask@--- member of @subresourceRange@ /must/ not include--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'------ - #VUID-VkImageMemoryBarrier2-image-03319# If @image@ has a--- depth\/stencil format with both depth and stencil and the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>--- feature is enabled, then the @aspectMask@ member of--- @subresourceRange@ /must/ include either or both--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'------ - #VUID-VkImageMemoryBarrier2-image-03320# If @image@ has a--- depth\/stencil format with both depth and stencil and the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>--- feature is not enabled, then the @aspectMask@ member of--- @subresourceRange@ /must/ include both--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'--- -- - #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04070# If -- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at -- least one /must/ not be a special queue family reserved for external@@ -3501,6 +3444,71 @@ -- feature is not enabled, @newLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' --+-- - #VUID-VkImageMemoryBarrier2-subresourceRange-01486#+-- @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@+-- specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was+-- created+--+-- - #VUID-VkImageMemoryBarrier2-subresourceRange-01724# If+-- @subresourceRange.levelCount@ is not+-- 'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',+-- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@+-- /must/ be less than or equal to the @mipLevels@ specified in+-- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- - #VUID-VkImageMemoryBarrier2-subresourceRange-01488#+-- @subresourceRange.baseArrayLayer@ /must/ be less than the+-- @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+-- when @image@ was created+--+-- - #VUID-VkImageMemoryBarrier2-subresourceRange-01725# If+-- @subresourceRange.layerCount@ is not+-- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',+-- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@+-- /must/ be less than or equal to the @arrayLayers@ specified in+-- 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- - #VUID-VkImageMemoryBarrier2-image-01932# If @image@ is non-sparse+-- then it /must/ be bound completely and contiguously to a single+-- 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- - #VUID-VkImageMemoryBarrier2-image-01671# If @image@ has a+-- single-plane color format or is not /disjoint/, then the+-- @aspectMask@ member of @subresourceRange@ /must/ be+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - #VUID-VkImageMemoryBarrier2-image-01672# If @image@ has a+-- multi-planar format and the image is /disjoint/, then the+-- @aspectMask@ member of @subresourceRange@ /must/ include either at+-- least one of+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';+-- or /must/ include+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - #VUID-VkImageMemoryBarrier2-image-01673# If @image@ has a+-- multi-planar format with only two planes, then the @aspectMask@+-- member of @subresourceRange@ /must/ not include+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- - #VUID-VkImageMemoryBarrier2-image-03319# If @image@ has a+-- depth\/stencil format with both depth and stencil and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is enabled, then the @aspectMask@ member of+-- @subresourceRange@ /must/ include either or both+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- - #VUID-VkImageMemoryBarrier2-image-03320# If @image@ has a+-- depth\/stencil format with both depth and stencil and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, then the @aspectMask@ member of+-- @subresourceRange@ /must/ include both+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- -- - #VUID-VkImageMemoryBarrier2-srcStageMask-03854# If either -- @srcStageMask@ or @dstStageMask@ includes -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT',@@ -3950,6 +3958,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -3963,6 +3972,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -4334,6 +4344,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --@@ -4347,6 +4358,7 @@ -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR', -- or -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT' --
src/Vulkan/Dynamic.hs view
@@ -922,6 +922,8 @@ , pVkCmdDispatch :: FunPtr (Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) , pVkCmdDispatchIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) , pVkCmdSubpassShadingHUAWEI :: FunPtr (Ptr CommandBuffer_T -> IO ())+ , pVkCmdDrawClusterHUAWEI :: FunPtr (Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())+ , pVkCmdDrawClusterIndirectHUAWEI :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) , pVkCmdCopyBuffer :: FunPtr (Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferCopy) -> IO ()) , pVkCmdCopyImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageCopy) -> IO ()) , pVkCmdBlitImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ())@@ -1696,7 +1698,14 @@ nullFunPtr nullFunPtr nullFunPtr- nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+ nullFunPtr+ nullFunPtr+ nullFunPtr+ nullFunPtr+ nullFunPtr+ nullFunPtr+ nullFunPtr+ nullFunPtr foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)@@ -1819,6 +1828,8 @@ vkCmdDispatch <- getDeviceProcAddr' handle (Ptr "vkCmdDispatch"#) vkCmdDispatchIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchIndirect"#) vkCmdSubpassShadingHUAWEI <- getDeviceProcAddr' handle (Ptr "vkCmdSubpassShadingHUAWEI"#)+ vkCmdDrawClusterHUAWEI <- getDeviceProcAddr' handle (Ptr "vkCmdDrawClusterHUAWEI"#)+ vkCmdDrawClusterIndirectHUAWEI <- getDeviceProcAddr' handle (Ptr "vkCmdDrawClusterIndirectHUAWEI"#) vkCmdCopyBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBuffer"#) vkCmdCopyImage <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImage"#) vkCmdBlitImage <- getDeviceProcAddr' handle (Ptr "vkCmdBlitImage"#)@@ -2324,6 +2335,8 @@ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) vkCmdDispatch) (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdDispatchIndirect) (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdSubpassShadingHUAWEI)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) vkCmdDrawClusterHUAWEI)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdDrawClusterIndirectHUAWEI) (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferCopy) -> IO ()) vkCmdCopyBuffer) (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageCopy) -> IO ()) vkCmdCopyImage) (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ()) vkCmdBlitImage)
src/Vulkan/Extensions.hs view
@@ -151,6 +151,7 @@ , module Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 , module Vulkan.Extensions.VK_GOOGLE_surfaceless_query , module Vulkan.Extensions.VK_GOOGLE_user_type+ , module Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader , module Vulkan.Extensions.VK_HUAWEI_invocation_mask , module Vulkan.Extensions.VK_HUAWEI_subpass_shading , module Vulkan.Extensions.VK_IMG_filter_cubic@@ -461,6 +462,7 @@ import Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 import Vulkan.Extensions.VK_GOOGLE_surfaceless_query import Vulkan.Extensions.VK_GOOGLE_user_type+import Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader import Vulkan.Extensions.VK_HUAWEI_invocation_mask import Vulkan.Extensions.VK_HUAWEI_subpass_shading import Vulkan.Extensions.VK_IMG_filter_cubic
src/Vulkan/Extensions/Dependencies.hs view
@@ -110,6 +110,7 @@ import Vulkan.Extensions.VK_GGP_stream_descriptor_surface (pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME) import Vulkan.Extensions.VK_GOOGLE_display_timing (pattern GOOGLE_DISPLAY_TIMING_EXTENSION_NAME) import Vulkan.Extensions.VK_GOOGLE_surfaceless_query (pattern GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME)+import Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (pattern HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME) import Vulkan.Extensions.VK_HUAWEI_invocation_mask (pattern HUAWEI_INVOCATION_MASK_EXTENSION_NAME) import Vulkan.Extensions.VK_HUAWEI_subpass_shading (pattern HUAWEI_SUBPASS_SHADING_EXTENSION_NAME) import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME)@@ -812,6 +813,7 @@ , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME , KHR_MAINTENANCE_3_EXTENSION_NAME ]+ HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME] EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME -> [EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME] EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME -> [ EXT_MEMORY_PRIORITY_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs view
@@ -2788,7 +2788,7 @@ -- set in -- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the--- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@coverageToColorLocation@+-- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV'::@coverageToColorLocation@ -- value used to create the currently active pipeline. -- -- == Valid Usage
src/Vulkan/Extensions/VK_EXT_mesh_shader.hs view
@@ -1120,7 +1120,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06181# If the current -- render pass instance was begun with@@ -2917,7 +2918,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06181# If the -- current render pass instance was begun with@@ -4704,7 +4706,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06181# If -- the current render pass instance was begun with
src/Vulkan/Extensions/VK_EXT_multi_draw.hs view
@@ -985,7 +985,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06181# If the current -- render pass instance was begun with@@ -2807,7 +2808,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06181# If the -- current render pass instance was begun with@@ -3732,16 +3734,18 @@ -- - #VUID-vkCmdDrawMultiIndexedEXT-None-07312# An index buffer /must/ be -- bound --+-- - #VUID-vkCmdDrawMultiIndexedEXT-robustBufferAccess2-07825# If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+-- is not enabled, (@indexSize@ × (@firstIndex@ + @indexCount@) ++-- @offset@) /must/ be less than or equal to the size of the bound+-- index buffer, with @indexSize@ being based on the type specified by+-- @indexType@, where the index buffer, @indexType@, and @offset@ are+-- specified via+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'+-- -- - #VUID-vkCmdDrawMultiIndexedEXT-None-04937# The -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiDraw multiDraw> -- feature /must/ be enabled------ - #VUID-vkCmdDrawMultiIndexedEXT-firstIndex-04938# (@indexSize@ ×--- (@firstIndex@ + @indexCount@) + @offset@) /must/ be less than or--- equal to the size of the bound index buffer, with @indexSize@ being--- based on the type specified by @indexType@, where the index buffer,--- @indexType@, and @offset@ are specified via--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' -- -- - #VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939# @drawCount@ /must/ -- be less than
src/Vulkan/Extensions/VK_EXT_transform_feedback.hs view
@@ -2224,7 +2224,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06181# If the -- current render pass instance was begun with
+ src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs view
@@ -0,0 +1,4138 @@+{-# language CPP #-}+-- | = Name+--+-- VK_HUAWEI_cluster_culling_shader - device extension+--+-- == VK_HUAWEI_cluster_culling_shader+--+-- [__Name String__]+-- @VK_HUAWEI_cluster_culling_shader@+--+-- [__Extension Type__]+-- Device extension+--+-- [__Registered Extension Number__]+-- 405+--+-- [__Revision__]+-- 1+--+-- [__Extension and Version Dependencies__]+--+-- - Requires support for Vulkan 1.0+--+-- - Requires @VK_KHR_get_physical_device_properties2@ to be enabled+-- for any device-level functionality+--+-- [__Contact__]+--+-- - Yuchang Wang+-- <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_HUAWEI_cluster_culling_shader] @richard_Wang2%0A*Here describe the issue or question you have about the VK_HUAWEI_cluster_culling_shader extension* >+--+-- [__Extension Proposal__]+-- <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_HUAWEI_cluster_culling_shader.adoc VK_HUAWEI_cluster_culling_shader>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+-- 2022-11-17+--+-- [__Interactions and External Dependencies__]+--+-- - This extension requires+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/HUAWEI/SPV_HUAWEI_cluster_culling_shader.html SPV_HUAWEI_cluster_culling_shader>.+--+-- - This extension provides API support for+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/huawei/GLSL_HUAWEI_cluster_culling_shader.txt GL_HUAWEI_cluster_culling_shader>.+--+-- [__Contributors__]+--+-- - Yuchang Wang, Huawei+--+-- - Juntao Li, Huawei+--+-- - Pan Gao, Huawei+--+-- - Jie Cao, Huawei+--+-- - Yunjin Zhang, Huawei+--+-- - Shujie Zhou, Huawei+--+-- - Chaojun Wang, Huawei+--+-- - Jiajun Hu, Huawei+--+-- - Cong Zhang, Huawei+--+-- == Description+--+-- Cluster Culling Shader(CCS) is similar to the existing compute shader;+-- its main purpose is to provide an execution environment in order to+-- perform coarse-level geometry culling and level-of-detail selection more+-- efficiently on GPU.+--+-- The traditional 2-pass GPU culling solution using compute shader needs a+-- pipeline barrier between compute pipeline and graphics pipeline,+-- sometimes, in order to optimize performance, an additional compaction+-- process may also be required. this extension improve the above mentioned+-- shortcomings which can allow compute shader directly emit visible+-- clusters to following graphics pipeline.+--+-- A set of new built-in output variables are used to express visible+-- cluster, in addition, a new built-in function is used to emit these+-- variables from CCS to IA stage, then IA can use these variables to+-- fetches vertices of visible cluster and drive vertex shader to shading+-- these vertices. As stated above, both IA and vertex shader are+-- preserved, vertex shader still used for vertices position shading,+-- instead of directly outputting a set of transformed vertices from+-- compute shader, this makes CCS more suitable for mobile GPUs.+--+-- == New Commands+--+-- - 'cmdDrawClusterHUAWEI'+--+-- - 'cmdDrawClusterIndirectHUAWEI'+--+-- == New Structures+--+-- - Extending+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- 'Vulkan.Core10.Device.DeviceCreateInfo':+--+-- - 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI'+--+-- - Extending+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+-- - 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'+--+-- == New Enum Constants+--+-- - 'HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME'+--+-- - 'HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION'+--+-- - Extending+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':+--+-- - 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'+--+-- - Extending+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits':+--+-- - 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI'+--+-- - Extending+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+-- - 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI'+--+-- - Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+-- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI'+--+-- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI'+--+-- == New Built-In Variables+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-indexcounthuawei IndexCountHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexcounthuawei VertexCountHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecounthuawei InstanceCountHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstindexhuawei FirstIndexHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstvertexhuawei FirstVertexHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexoffsethuawei VertexOffsetHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstinstancehuawei FirstInstanceHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clusteridhuawei ClusterIdHUAWEI>+--+-- == New SPIR-V Capability+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ClusterCullingShadingHUAWEI ClusterCullingShadingHUAWEI>+--+-- == Sample code+--+-- Example of cluster culling in a GLSL shader+--+-- > #extension GL_HUAWEI_cluster_culling_shader: enable+-- >+-- > #define GPU_WARP_SIZE 32+-- > #define GPU_GROUP_SIZE GPU_WARP_SIZE+-- >+-- > #define GPU_CLUSTER_PER_INVOCATION 1+-- > #define GPU_CLUSTER_PER_WORKGROUP (GPU_GROUP_SIZE * GPU_CLUSTER_PER_INVOCATION)+-- >+-- > // Number of threads per workgroup+-- > // - 1D only+-- > // - warpsize = 32+-- > layout(local_size_x=GPU_GROUP_SIZE, local_size_y=1, local_size_z=1) in;+-- >+-- >+-- > #define GPU_CLUSTER_DESCRIPTOR_BINDING 0+-- > #define GPU_DRAW_BUFFER_BINDING 1+-- > #define GPU_INSTANCE_DESCRIPTOR_BINDING 2+-- >+-- > const float pi_half = 1.570795;+-- > uint instance_id;+-- >+-- > struct BoundingSphere+-- > {+-- > vec3 center;+-- > float radius;+-- > };+-- >+-- > struct BoundingCone+-- > {+-- > vec3 normal;+-- > float angle;+-- > };+-- >+-- > struct ClusterDescriptor+-- > {+-- > BoundingSphere sphere;+-- > BoundingCone cone;+-- > uint instance_idx;+-- > };+-- >+-- > struct InstanceData+-- > {+-- > mat4 mvp_matrix; // mvp matrix.+-- > vec4 frustum_planes[6]; // six frustum planes+-- > mat4 model_matrix_transpose_inverse; // inverse transpose of model matrix.+-- > vec3 view_origin; // view original+-- > };+-- >+-- > struct InstanceDescriptor+-- > {+-- > uint begin;+-- > uint end;+-- > uint cluster_count;+-- > uint debug;+-- > BoundingSphere sphere;+-- > InstanceData instance_data;+-- > };+-- >+-- > struct DrawElementsCommand{+-- > uint indexcount;+-- > uint instanceCount;+-- > uint firstIndex;+-- > int vertexoffset;+-- > uint firstInstance;+-- > uint cluster_id;+-- > };+-- >+-- > // indexed mode+-- > out gl_PerClusterHUAWEI{+-- > uint gl_IndexCountHUAWEI;+-- > uint gl_InstanceCountHUAWEI;+-- > uint gl_FirstIndexHUAWEI;+-- > int gl_VertexOffsetHUAWEI;+-- > uint gl_FirstInstanceHUAWEI;+-- > uint gl_ClusterIdHUAWEI;+-- > };+-- >+-- >+-- > layout(binding = GPU_CLUSTER_DESCRIPTOR_BINDING, std430) readonly buffer cluster_descriptor_ssbo+-- > {+-- > ClusterDescriptor cluster_descriptors[];+-- > };+-- >+-- >+-- > layout(binding = GPU_DRAW_BUFFER_BINDING, std430) buffer draw_indirect_ssbo+-- > {+-- > DrawElementsCommand draw_commands[];+-- > };+-- >+-- > layout(binding = GPU_INSTANCE_DESCRIPTOR_BINDING, std430) buffer instance_descriptor_ssbo+-- > {+-- > InstanceDescriptor instance_descriptors[];+-- > };+-- >+-- > uniform bool disable_frustum_culling;+-- > uniform bool disable_backface_culling;+-- > uniform float debug_value;+-- >+-- >+-- > bool isFrontFaceVisible( vec3 sphere_center, float sphere_radius, vec3 cone_normal, float cone_angle )+-- > {+-- > vec3 sphere_center_dir = normalize(sphere_center -+-- > instance_descriptors[instance_id].instance_data.view_origin);+-- >+-- > float sin_cone_angle = sin(min(cone_angle, pi_half));+-- > return dot(cone_normal, sphere_center_dir) < sin_cone_angle;+-- > }+-- >+-- > bool isSphereOutsideFrustum( vec3 sphere_center, float sphere_radius )+-- > {+-- > bool isInside = false;+-- >+-- > for(int i = 0; i < 6; i++)+-- > {+-- > isInside = isInside ||+-- > (dot(instance_descriptors[instance_id].instance_data.frustum_planes[i].xyz,+-- > sphere_center) + instance_descriptors[instance_id].instance_data.frustum_planes[i].w <+-- > sphere_radius);+-- > }+-- > return isInside;+-- > }+-- >+-- >+-- > void main()+-- > {+-- > uint cluster_id = gl_GlobalInvocationID.x;+-- > ClusterDescriptor desc = cluster_descriptors[cluster_id];+-- >+-- > // get instance description+-- > instance_id = desc.instance_idx;+-- > InstanceDescriptor inst_desc = instance_descriptors[instance_id];+-- >+-- > //instance based culling+-- > bool instance_render = (disable_frustum_culling ||+-- > !isSphereOutsideFrustum(inst_desc.sphere.center, inst_desc.sphere.radius));+-- >+-- > if( instance_render)+-- > {+-- > // cluster based culling+-- > bool render = (disable_frustum_culling || !isSphereOutsideFrustum(desc.sphere.center,+-- > desc.sphere.radius)) && (disable_backface_culling ||+-- > isFrontFaceVisible(desc.sphere.center, desc.sphere.radius, desc.cone.normal,+-- > desc.cone.angle));+-- >+-- > if (render)+-- > {+-- > // this cluster passed coarse-level culling, update built-in output variable.+-- > // in case of indexed mode:+-- > gl_IndexCountHUAWEI = draw_commands[cluster_id].indexcount;+-- > gl_InstanceCountHUAWEI = draw_commands[cluster_id].instanceCount;+-- > gl_FirstIndexHUAWEI = draw_commands[cluster_id].firstIndex;+-- > gl_VertexOffsetHUAWEI = draw_commands[cluster_id].vertexoffset;+-- > gl_FirstInstanceHUAWEI = draw_commands[cluster_id].firstInstance;+-- > gl_ClusterIdHUAWEI = draw_commands[cluster_id].cluster_id;+-- >+-- > // emit built-in output variables as a drawing command to subsequent+-- > // rendering pipeline.+-- > dispatchClusterHUAWEI();+-- > }+-- > }+-- > }+--+-- Example of graphics pipeline creation with cluster culling shader+--+-- > // create a cluster culling shader stage info structure.+-- > VkPipelineShaderStageCreateInfo ccsStageInfo{};+-- > ccsStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;+-- > ccsStageInfo.stage = VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI;+-- > ccsStageInfo.module = clustercullingshaderModule;+-- > ccsStageInfo.pName = "main";+-- >+-- > // pipeline shader stage creation+-- > VkPipelineShaderStageCreateInfo shaderStages[] = { ccsStageInfo, vertexShaderStageInfo, fragmentShaderStageInfo };+-- >+-- > // create graphics pipeline+-- > VkGraphicsPipelineCreateInfo pipelineInfo{};+-- > pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;+-- > pipelineInfo.stageCount = 3;+-- > pipelineInfo.pStage = shaderStages;+-- > pipelineInfo.pVertexInputState = &vertexInputInfo;+-- > // ...+-- > VkPipeline graphicsPipeline;+-- > VkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &graphicsPipeline);+--+-- Example of launching the execution of cluster culling shader+--+-- > vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline);+-- > vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, 1, 1);+-- > vkCmdEndRenderPass(commandBuffer);+--+-- == Version History+--+-- - Revision 1, 2022-11-18 (YuChang Wang)+--+-- - Internal revisions+--+-- == See Also+--+-- 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI',+-- 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI',+-- 'cmdDrawClusterHUAWEI', 'cmdDrawClusterIndirectHUAWEI'+--+-- == Document Notes+--+-- For more information, see the+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader ( cmdDrawClusterHUAWEI+ , cmdDrawClusterIndirectHUAWEI+ , PhysicalDeviceClusterCullingShaderPropertiesHUAWEI(..)+ , PhysicalDeviceClusterCullingShaderFeaturesHUAWEI(..)+ , HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION+ , pattern HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION+ , HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME+ , pattern HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME+ ) where++import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (traceAroundEvent)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Foreign.Marshal.Alloc (allocaBytes)+import GHC.IO (throwIO)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Zero (Zero(..))+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Vulkan.CStruct.Utils (advancePtrBytes)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.CStruct.Utils (lowerArrayPtr)+import Vulkan.NamedType ((:::))+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.Handles (Buffer)+import Vulkan.Core10.Handles (Buffer(..))+import Vulkan.Core10.Handles (CommandBuffer)+import Vulkan.Core10.Handles (CommandBuffer(..))+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))+import Vulkan.Core10.Handles (CommandBuffer_T)+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawClusterHUAWEI))+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawClusterIndirectHUAWEI))+import Vulkan.Core10.FundamentalTypes (DeviceSize)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawClusterHUAWEI+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawClusterHUAWEI - Draw cluster culling work items+--+-- = Description+--+-- When the command is executed,a global workgroup consisting of+-- groupCountX*groupCountY*groupCountZ local workgroup is assembled.+--+-- == Valid Usage+--+-- - #VUID-vkCmdDrawClusterHUAWEI-magFilter-04553# If a+-- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or+-- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+-- @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is+-- used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-mipmapMode-04770# If a+-- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to+-- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'+-- and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'+-- is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06479# If a+-- 'Vulkan.Core10.Handles.ImageView' is sampled with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02691# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed using atomic+-- operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02692# If a+-- 'Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this+-- command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-filterCubic-02694# Any+-- 'Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this+-- command /must/ have a+-- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+-- supports cubic filtering, as specified by+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-filterCubicMinmax-02695# Any+-- 'Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode+-- of either+-- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+-- supports cubic filtering together with minmax filtering, as+-- specified by+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-flags-02696# Any+-- 'Vulkan.Core10.Handles.Image' created with a+-- 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07027# For any+-- 'Vulkan.Core10.Handles.ImageView' being written as a storage image+-- where the image format field of the @OpTypeImage@ is @Unknown@, the+-- view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07028# For any+-- 'Vulkan.Core10.Handles.ImageView' being read as a storage image+-- where the image format field of the @OpTypeImage@ is @Unknown@, the+-- view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07029# For any+-- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel+-- buffer where the image format field of the @OpTypeImage@ is+-- @Unknown@, the view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07030# Any+-- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel+-- buffer where the image format field of the @OpTypeImage@ is+-- @Unknown@ then the view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02697# For each set /n/ that is+-- statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command, a descriptor set /must/+-- have been bound to /n/ at the same pipeline bind point, with a+-- 'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set+-- /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create+-- the current 'Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-maintenance4-06425# If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>+-- feature is not enabled, then for each push constant that is+-- statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command, a push constant value+-- /must/ have been set for the same pipeline bind point, with a+-- 'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push+-- constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to+-- create the current 'Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-08114# Descriptors in each bound+-- descriptor set, specified via+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/+-- be valid if they are statically used by the+-- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+-- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'+-- was not created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-08115# If the descriptors used by+-- the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point were specified via+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the+-- bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created+-- without+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-08116# Descriptors in bound+-- descriptor buffers, specified via+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',+-- /must/ be valid if they are dynamically used by the+-- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+-- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'+-- was created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-08117# If the descriptors used by+-- the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point were specified via+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',+-- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created+-- with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-08119# If a descriptor is+-- dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created+-- with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',+-- the descriptor memory /must/ be resident+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02700# A valid pipeline /must/ be+-- bound to the pipeline bind point used by this command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-02701# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command requires any dynamic state, that state+-- /must/ have been set or inherited (if the+-- @VK_NV_inherited_viewport_scissor@ extension is enabled) for+-- @commandBuffer@, and done so after any previously bound pipeline+-- with the corresponding state not specified as dynamic+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02859# There /must/ not have been+-- any calls to dynamic state setting commands for any state not+-- specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object+-- bound to the pipeline bind point used by this command, since that+-- pipeline was bound+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02702# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+-- coordinates, that sampler /must/ not be used to sample from any+-- 'Vulkan.Core10.Handles.Image' with a+-- 'Vulkan.Core10.Handles.ImageView' of the type+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in+-- any shader stage+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02703# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+-- coordinates, that sampler /must/ not be used with any of the SPIR-V+-- @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-02704# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' 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+--+-- - #VUID-vkCmdDrawClusterHUAWEI-uniformBuffers-06935# If any stage of+-- the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline+-- bind point used by this command accesses a uniform buffer, and that+-- stage was created without enabling either+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'+-- or+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'+-- for @uniformBuffers@, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>+-- 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+--+-- - #VUID-vkCmdDrawClusterHUAWEI-storageBuffers-06936# If any stage of+-- the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline+-- bind point used by this command accesses a storage buffer, and that+-- stage was created without enabling either+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'+-- or+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'+-- for @storageBuffers@, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>+-- 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+--+-- - #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-02707# If @commandBuffer@+-- is an unprotected command buffer and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>+-- is not supported, any resource accessed by the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command /must/ not be a protected resource+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06550# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+-- object that enables+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+-- that object /must/ only be used with @OpImageSample*@ or+-- @OpImageSparseSample*@ instructions+--+-- - #VUID-vkCmdDrawClusterHUAWEI-ConstOffset-06551# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+-- object that enables+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+-- that object /must/ not use the @ConstOffset@ and @Offset@ operands+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewType-07752# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this+-- command, then the image view’s @viewType@ /must/ match the @Dim@+-- operand of the @OpTypeImage@ as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-operation-validation ???>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-format-07753# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this+-- command, then the image view’s @format@ /must/ match the numeric+-- format from the @Sampled@ @Type@ operand of the @OpTypeImage@ as+-- described in the SPIR-V Sampled Type column of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat ???>+-- table+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-04115# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@+-- as a result of this command, then the @Type@ of the @Texel@ operand+-- of that instruction /must/ have at least as many components as the+-- image view’s format+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-04469# If a+-- 'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@+-- as a result of this command, then the @Type@ of the @Texel@ operand+-- of that instruction /must/ have at least as many components as the+-- buffer view’s format+--+-- - #VUID-vkCmdDrawClusterHUAWEI-SampledType-04470# If a+-- 'Vulkan.Core10.Handles.ImageView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component+-- width is accessed as a result of this command, the @SampledType@ of+-- the @OpTypeImage@ operand of that instruction /must/ have a @Width@+-- of 64+--+-- - #VUID-vkCmdDrawClusterHUAWEI-SampledType-04471# If a+-- 'Vulkan.Core10.Handles.ImageView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a component width less+-- than 64-bit is accessed as a result of this command, the+-- @SampledType@ of the @OpTypeImage@ operand of that instruction+-- /must/ have a @Width@ of 32+--+-- - #VUID-vkCmdDrawClusterHUAWEI-SampledType-04472# If a+-- 'Vulkan.Core10.Handles.BufferView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component+-- width is accessed as a result of this command, the @SampledType@ of+-- the @OpTypeImage@ operand of that instruction /must/ have a @Width@+-- of 64+--+-- - #VUID-vkCmdDrawClusterHUAWEI-SampledType-04473# If a+-- 'Vulkan.Core10.Handles.BufferView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a component width less+-- than 64-bit is accessed as a result of this command, the+-- @SampledType@ of the @OpTypeImage@ operand of that instruction+-- /must/ have a @Width@ of 32+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sparseImageInt64Atomics-04474# If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+-- feature is not enabled, 'Vulkan.Core10.Handles.Image' objects+-- created with the+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+-- flag /must/ not be accessed by atomic instructions through an+-- @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+-- command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sparseImageInt64Atomics-04475# If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+-- feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects+-- created with the+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+-- flag /must/ not be accessed by atomic instructions through an+-- @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+-- command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06971# If+-- @OpImageWeightedSampleQCOM@ is used to sample a+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06972# If+-- @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'+-- as a sample weight image as a result of this command, then the image+-- view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageBoxFilterQCOM-06973# If+-- @OpImageBoxFilterQCOM@ is used to sample a+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSSDQCOM-06974# If+-- @OpImageBlockMatchSSDQCOM@ is used to read from an+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06975# If+-- @OpImageBlockMatchSADQCOM@ is used to read from an+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06976# If+-- @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to+-- read from a reference image as result of this command, then the+-- specified reference coordinates /must/ not fail+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06977# If+-- @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,+-- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a+-- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then+-- the sampler /must/ have been created with+-- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06978# If any+-- command other than @OpImageWeightedSampleQCOM@,+-- @OpImageBoxFilterQCOM@, @OpImageBlockMatchSSDQCOM@, or+-- @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as+-- a result of this command, then the sampler /must/ not have been+-- created with+-- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07288# Any shader invocation+-- executed by this command /must/+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-renderPass-02684# The current render+-- pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the @renderPass@ member of the+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure+-- specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound+-- to+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-subpass-02685# The subpass index of the+-- current render pass /must/ be equal to the @subpass@ member of the+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure+-- specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound+-- to+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07748# If any shader statically+-- accesses an input attachment, a valid descriptor /must/ be bound to+-- the pipeline via a descriptor set+--+-- - #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07468# If any shader+-- executed by this pipeline accesses an @OpTypeImage@ variable with a+-- @Dim@ operand of @SubpassData@, it /must/ be decorated with an+-- @InputAttachmentIndex@ that corresponds to a valid input attachment+-- in the current subpass+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07469# Input attachment views+-- accessed in a subpass /must/ be created with the same+-- 'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass+-- definition, and be created with a 'Vulkan.Core10.Handles.ImageView'+-- that is compatible with the attachment referenced by the subpass\'+-- @pInputAttachments@[@InputAttachmentIndex@] in the currently bound+-- 'Vulkan.Core10.Handles.Framebuffer' as specified by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06537# Memory backing image+-- subresources used as attachments in the current render pass /must/+-- not be written in any way other than as an attachment by this+-- command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06538# If any recorded command in+-- the current subpass will write to an image subresource as an+-- attachment, this command /must/ not read from the memory backing+-- that image subresource in any other way than as an attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06539# If any recorded command in+-- the current subpass will read from an image subresource used as an+-- attachment in any way other than as an attachment, this command+-- /must/ not write to that image subresource as an attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06886# If the current render pass+-- instance uses a depth\/stencil attachment with a read-only layout+-- for the depth aspect,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>+-- /must/ be disabled+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06887# If the current render pass+-- instance uses a depth\/stencil attachment with a read-only layout+-- for the stencil aspect, both front and back @writeMask@ are not+-- zero, and stencil test is enabled,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>+-- /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-maxMultiviewInstanceIndex-02688# If the+-- draw is recorded in a render pass instance with multiview enabled,+-- the maximum instance index /must/ be less than or equal to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-02689# If the+-- bound graphics pipeline was created with+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass+-- has a depth\/stencil attachment, then that attachment /must/ have+-- been created with the+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-06666# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-03417# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+-- dynamic state enabled, then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @viewportCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ match the+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+-- of the pipeline+--+-- - #VUID-vkCmdDrawClusterHUAWEI-scissorCount-03418# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @scissorCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+-- /must/ match the+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+-- of the pipeline+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-03419# If the bound+-- graphics pipeline state was created with both the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic states enabled then both+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @viewportCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ match the @scissorCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-04137# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+-- dynamic state enabled, then the bound graphics pipeline /must/ have+-- been created with+-- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-04138# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+-- dynamic states enabled then the @viewportCount@ parameter in the+-- last call to+-- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'+-- /must/ be greater than or equal to the @viewportCount@ parameter in+-- the last call to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-04139# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+-- dynamic state enabled, then the bound graphics pipeline /must/ have+-- been created with+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-04140# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+-- dynamic states enabled then the @viewportCount@ parameter in the+-- last call to+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'+-- /must/ be greater than or equal to the @viewportCount@ parameter in+-- the last call to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-VkPipelineVieportCreateInfo-04141# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled and a+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+-- structure chained from+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', then the+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-VkPipelineVieportCreateInfo-04142# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled and a+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+-- structure chained from+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', then the+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-04876# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'+-- dynamic state enabled then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-04877# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'+-- dynamic state enabled then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-logicOp-04878# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command and the @logicOp@ /must/ be a valid+-- 'Vulkan.Core10.Enums.LogicOp.LogicOp' value+--+-- - #VUID-vkCmdDrawClusterHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-04552#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>+-- limit is not supported, the bound graphics pipeline was created with+-- the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, and any of the shader stages of the bound+-- graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+-- then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @viewportCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ be @1@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-blendEnable-04727# If rasterization is+-- not disabled in the bound graphics pipeline, then for each color+-- attachment in the subpass, if the corresponding image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- do not contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',+-- then the @blendEnable@ member of the corresponding element of the+-- @pAttachments@ member of @pColorBlendState@ /must/ be+-- 'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07284#+-- If rasterization is not disabled in the bound graphics pipeline, and+-- none of the @VK_AMD_mixed_attachment_samples@ extension, the+-- @VK_NV_framebuffer_mixed_samples@ extension, or the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature are enabled, then+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- /must/ be the same as the current subpass color and\/or+-- depth\/stencil attachments+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06172# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pDepthAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pDepthAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the depth attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06173# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pStencilAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pStencilAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the stencil attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06174# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pDepthAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pDepthAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',+-- this command /must/ not write any values to the depth attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06175# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pStencilAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pStencilAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the stencil attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06176# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pDepthAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pDepthAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the depth attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06177# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pStencilAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pStencilAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the stencil attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewMask-06178# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound graphics pipeline /must/ have been created with+-- a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@+-- equal to+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06179# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound graphics pipeline /must/ have been created with+-- a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@+-- equal to+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06180# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ not equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created+-- with a 'Vulkan.Core10.Enums.Format.Format' equal to the+-- corresponding element of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@+-- used to create the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-07616# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the+-- corresponding element of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@+-- used to create the currently bound pipeline equal to+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07749# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-attachmentCount-07750# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+-- dynamic state enabled then the @attachmentCount@ parameter of+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+-- /must/ be greater than or equal to the+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+-- of the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07751# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-06181# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the 'Vulkan.Core10.Enums.Format.Format' used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-07617# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-06182# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the 'Vulkan.Core10.Enums.Format.Format' used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-07618# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06183# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-imageView-06184# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06185# If the+-- currently bound pipeline was created with a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- with a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- parameter greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ not equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created+-- with a sample count equal to the corresponding element of the+-- @pColorAttachmentSamples@ member of+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- used to create the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-06186# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created with a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+-- @depthStencilAttachmentSamples@ member of+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-06187# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created with a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+-- @depthStencilAttachmentSamples@ member of+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07285#+-- If the currently bound pipeline was created without a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is not enabled, and the current render pass instance was+-- begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- with a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- parameter greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ not equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created+-- with a sample count equal to the value of+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- used to create the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07286#+-- If the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created without a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is not enabled, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07287#+-- If the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created without a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is not enabled, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-renderPass-06198# If the current render+-- pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline /must/ have been created with a+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+-- equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+-- feature is not enabled and the+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+-- query is active,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+-- /must/ not be enabled+--+-- - #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+-- feature is not enabled and the+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+-- query is active, the bound graphics pipeline /must/ not have been+-- created with a non-zero value in+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07619# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07620# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07621# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07622# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07623# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07624# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07625# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07626# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07627# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07628# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07629# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07630# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07631# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07632# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07633# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07634# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07635# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07636# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07637# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07638# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07639# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07640# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07641# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07642# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07643# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07644# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07645# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07646# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07647# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07648# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07649# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pColorBlendEnables-07470# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- state enabled and the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- set @pColorBlendEnables@ for any attachment to+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in+-- the subpass the corresponding image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07471# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state enabled, and the current subpass does not use any color+-- and\/or depth\/stencil attachments, then the @rasterizationSamples@+-- in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- /must/ follow the rules for a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-samples-07472# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state disabled, then the @samples@ parameter in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'+-- /must/ be greater or equal to the+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- parameter used to create the bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterHUAWEI-samples-07473# If the bound graphics+-- pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'+-- state and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- states enabled, then the @samples@ parameter in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'+-- /must/ be greater or equal to the @rasterizationSamples@ parameter+-- in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07475#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state enabled, and none of the @VK_AMD_mixed_attachment_samples@+-- extension, @VK_NV_framebuffer_mixed_samples@ extension, or the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is enabled, then the @rasterizationSamples@ in the last call+-- to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- /must/ be the same as the current subpass color and\/or+-- depth\/stencil attachments+--+-- - #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07476# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- calls /must/ specify an enable for all active color attachments in+-- the current subpass+--+-- - #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07477# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'+-- calls /must/ specify the blend equations for all active color+-- attachments in the current subpass where blending is enabled+--+-- - #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07478# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'+-- calls /must/ specify the color write mask for all active color+-- attachments in the current subpass+--+-- - #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07479# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- calls /must/ specify the advanced blend equations for all active+-- color attachments in the current subpass where blending is enabled+--+-- - #VUID-vkCmdDrawClusterHUAWEI-advancedBlendMaxColorAttachments-07480#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- dynamic states enabled and the last calls to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- and+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- have enabled advanced blending, then the number of active color+-- attachments in the current subpass must not exceed+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+-- feature is not enabled and the+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+-- query is active, and the bound graphics pipeline was created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'+-- state enabled, the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'+-- /must/ have set the @rasterizationStream@ to zero+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07482# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state disabled, then the @sampleLocationsPerPixel@ member of+-- @pSampleLocationsInfo@ in the last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ equal the @rasterizationSamples@ member of the+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'+-- structure the bound graphics pipeline has been created with+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07483# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state enabled, then the @sampleLocationsPerPixel@ member of+-- @pSampleLocationsInfo@ in the last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ equal the @rasterizationSamples@ parameter of the last call+-- to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07484# If the+-- bound graphics pipeline was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- and the current subpass has a depth\/stencil attachment, then that+-- attachment /must/ have been created with the+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07485# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and if @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the+-- last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ evenly divide+-- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@+-- as returned by+-- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07486# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and if @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the+-- last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ evenly divide+-- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@+-- as returned by+-- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07487# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and if @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- the fragment shader code /must/ not statically use the extended+-- instruction @InterpolateAtSample@+--+-- - #VUID-vkCmdDrawClusterHUAWEI-coverageModulationTableEnable-07488# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'+-- state enabled and the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'+-- set @coverageModulationTableEnable@ to+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then the+-- @coverageModulationTableCount@ parameter in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'+-- /must/ equal the current @rasterizationSamples@ divided by the+-- number of color samples in the current subpass+--+-- - #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07489# If the+-- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if+-- current subpass has a depth\/stencil attachment and depth test,+-- stencil test, or depth bounds test are enabled in the currently+-- bound pipeline state, then the current @rasterizationSamples@ must+-- be the same as the sample count of the depth\/stencil attachment+--+-- - #VUID-vkCmdDrawClusterHUAWEI-coverageToColorEnable-07490# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'+-- state enabled and the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'+-- set the @coverageToColorEnable@ to+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass must+-- have a color attachment at the location selected by the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'+-- @coverageToColorLocation@, with a+-- 'Vulkan.Core10.Enums.Format.Format' of+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or+-- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-coverageReductionMode-07491# If this+-- @VK_NV_coverage_reduction_mode@ extension is enabled, the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- states enabled, the current coverage reduction mode+-- @coverageReductionMode@, then the current @rasterizationSamples@,+-- and the sample counts for the color and depth\/stencil attachments+-- (if the subpass has them) must be a valid combination returned by+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-07492# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'+-- dynamic state enabled, then the bound graphics pipeline /must/ have+-- been created with+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-viewportCount-07493# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'+-- dynamic states enabled then the @viewportCount@ parameter in the+-- last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'+-- /must/ be greater than or equal to the @viewportCount@ parameter in+-- the last call to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07494# If the+-- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if the+-- current subpass has any color attachments and @rasterizationSamples@+-- of the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- is greater than the number of color samples, then the pipeline+-- @sampleShadingEnable@ /must/ be+-- 'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07495# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>+-- feature /must/ be enabled+--+-- - #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07496# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>+-- feature /must/ be enabled+--+-- - #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07497# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>+-- feature /must/ be enabled+--+-- - #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07498# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>+-- feature /must/ be enabled and+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@+-- must be VK_TRUE+--+-- - #VUID-vkCmdDrawClusterHUAWEI-conservativePointAndLineRasterization-07499#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'+-- dynamic state enabled,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>+-- is not supported, and the effective primitive topology output by the+-- last pre-rasterization shader stage is a line or point, then the+-- @conservativeRasterizationMode@ set by the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'+-- /must/ be+-- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-stage-07073# If the currently bound+-- pipeline was created with the+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@+-- member of an element of+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set+-- to+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'+-- or+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',+-- then+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>+-- must not be active+--+-- - #VUID-vkCmdDrawClusterHUAWEI-stage-06480# The bound graphics+-- pipeline /must/ not have been created with the+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@+-- member of an element of+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set+-- to+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'+-- or+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07074#+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>+-- /must/ not be active+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07075#+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>+-- /must/ not be active+--+-- - #VUID-vkCmdDrawClusterHUAWEI-pipelineStatistics-07076# The+-- @pipelineStatistics@ member used to create any active+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>+-- /must/ not contain+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',+-- or+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'+--+-- - #VUID-vkCmdDrawClusterHUAWEI-None-07819# The pipelineStatistics+-- member used to create any active Pipeline Statistics Query must also+-- not contain+-- VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT,+-- VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT+--+-- - #VUID-vkCmdDrawClusterHUAWEI-groupCountX-07820# @groupCountX@ /must/+-- be less than or equal to+-- 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[0]+--+-- - #VUID-vkCmdDrawClusterHUAWEI-groupCountY-07821# @groupCountY@ /must/+-- be less than or equal to+-- 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[1]+--+-- - #VUID-vkCmdDrawClusterHUAWEI-groupCountZ-07822# @groupCountZ@ /must/+-- be less than or equal to+-- 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[2]+--+-- - #VUID-vkCmdDrawClusterHUAWEI-ClusterCullingHUAWEI-07823# The current+-- pipeline bound to+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+-- /must/ contain a shader stage using the @ClusterCullingHUAWEI@+-- @Execution@ @Model@.+--+-- == Valid Usage (Implicit)+--+-- - #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter#+-- @commandBuffer@ /must/ be a valid+-- 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-recording#+-- @commandBuffer@ /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-cmdpool# The+-- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+-- allocated from /must/ support graphics operations+--+-- - #VUID-vkCmdDrawClusterHUAWEI-renderpass# This command /must/ only be+-- called inside of a render pass instance+--+-- - #VUID-vkCmdDrawClusterHUAWEI-videocoding# This command /must/ only+-- be called outside of a video coding scope+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that+-- @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================++-- | Primary | Inside | Outside | Graphics | Action |+-- | Secondary | | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdDrawClusterHUAWEI :: forall io+ . (MonadIO io)+ => -- | @commandBuffer@ is the command buffer into which the command will be+ -- recorded.+ CommandBuffer+ -> -- | @groupCountX@ is the number of local workgroups to dispatch in the X+ -- dimension.+ ("groupCountX" ::: Word32)+ -> -- | @groupCountY@ is the number of local workgroups to dispatch in the Y+ -- dimension.+ ("groupCountY" ::: Word32)+ -> -- | @groupCountZ@ is the number of local workgroups to dispatch in the Z+ -- dimension.+ ("groupCountZ" ::: Word32)+ -> io ()+cmdDrawClusterHUAWEI commandBuffer+ groupCountX+ groupCountY+ groupCountZ = liftIO $ do+ let vkCmdDrawClusterHUAWEIPtr = pVkCmdDrawClusterHUAWEI (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)+ unless (vkCmdDrawClusterHUAWEIPtr /= nullFunPtr) $+ throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawClusterHUAWEI is null" Nothing Nothing+ let vkCmdDrawClusterHUAWEI' = mkVkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEIPtr+ traceAroundEvent "vkCmdDrawClusterHUAWEI" (vkCmdDrawClusterHUAWEI'+ (commandBufferHandle (commandBuffer))+ (groupCountX)+ (groupCountY)+ (groupCountZ))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawClusterIndirectHUAWEI+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()++-- | vkCmdDrawClusterIndirectHUAWEI - Issue an indirect cluster culling draw+-- into a command buffer+--+-- = Description+--+-- 'cmdDrawClusterIndirectHUAWEI' behaves similarly to+-- 'cmdDrawClusterHUAWEI' except that the parameters are read by the device+-- from a buffer during execution. The parameters of the dispatch are+-- encoded in a 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'+-- structure taken from buffer starting at offset.+--+-- == Valid Usage+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-magFilter-04553# If a+-- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or+-- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+-- @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is+-- used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-04770# If a+-- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to+-- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'+-- and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'+-- is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06479# If a+-- 'Vulkan.Core10.Handles.ImageView' is sampled with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02691# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed using atomic+-- operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02692# If a+-- 'Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this+-- command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubic-02694# Any+-- 'Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this+-- command /must/ have a+-- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+-- supports cubic filtering, as specified by+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubicMinmax-02695# Any+-- 'Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode+-- of either+-- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+-- supports cubic filtering together with minmax filtering, as+-- specified by+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-02696# Any+-- 'Vulkan.Core10.Handles.Image' created with a+-- 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07027# For any+-- 'Vulkan.Core10.Handles.ImageView' being written as a storage image+-- where the image format field of the @OpTypeImage@ is @Unknown@, the+-- view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07028# For any+-- 'Vulkan.Core10.Handles.ImageView' being read as a storage image+-- where the image format field of the @OpTypeImage@ is @Unknown@, the+-- view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07029# For any+-- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel+-- buffer where the image format field of the @OpTypeImage@ is+-- @Unknown@, the view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07030# Any+-- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel+-- buffer where the image format field of the @OpTypeImage@ is+-- @Unknown@ then the view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02697# For each set /n/+-- that is statically used by the 'Vulkan.Core10.Handles.Pipeline'+-- bound to the pipeline bind point used by this command, a descriptor+-- set /must/ have been bound to /n/ at the same pipeline bind point,+-- with a 'Vulkan.Core10.Handles.PipelineLayout' that is compatible for+-- set /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to+-- create the current 'Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-maintenance4-06425# If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>+-- feature is not enabled, then for each push constant that is+-- statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command, a push constant value+-- /must/ have been set for the same pipeline bind point, with a+-- 'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push+-- constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to+-- create the current 'Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08114# Descriptors in each+-- bound descriptor set, specified via+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/+-- be valid if they are statically used by the+-- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+-- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'+-- was not created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08115# If the descriptors+-- used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline+-- bind point were specified via+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the+-- bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created+-- without+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08116# Descriptors in+-- bound descriptor buffers, specified via+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',+-- /must/ be valid if they are dynamically used by the+-- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+-- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'+-- was created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08117# If the descriptors+-- used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline+-- bind point were specified via+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',+-- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created+-- with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08119# If a descriptor is+-- dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created+-- with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',+-- the descriptor memory /must/ be resident+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02700# A valid pipeline+-- /must/ be bound to the pipeline bind point used by this command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-02701# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command requires any dynamic state, that state+-- /must/ have been set or inherited (if the+-- @VK_NV_inherited_viewport_scissor@ extension is enabled) for+-- @commandBuffer@, and done so after any previously bound pipeline+-- with the corresponding state not specified as dynamic+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02859# There /must/ not+-- have been any calls to dynamic state setting commands for any state+-- not specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline'+-- object bound to the pipeline bind point used by this command, since+-- that pipeline was bound+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02702# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+-- coordinates, that sampler /must/ not be used to sample from any+-- 'Vulkan.Core10.Handles.Image' with a+-- 'Vulkan.Core10.Handles.ImageView' of the type+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or+-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in+-- any shader stage+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02703# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+-- coordinates, that sampler /must/ not be used with any of the SPIR-V+-- @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02704# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' 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+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-uniformBuffers-06935# If any+-- stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- and that stage was created without enabling either+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'+-- or+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'+-- for @uniformBuffers@, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>+-- 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+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-storageBuffers-06936# If any+-- stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- and that stage was created without enabling either+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'+-- or+-- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'+-- for @storageBuffers@, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>+-- 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+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-02707# If+-- @commandBuffer@ is an unprotected command buffer and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>+-- is not supported, any resource accessed by the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command /must/ not be a protected resource+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06550# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+-- object that enables+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+-- that object /must/ only be used with @OpImageSample*@ or+-- @OpImageSparseSample*@ instructions+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-ConstOffset-06551# If the+-- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+-- point used by this command accesses a+-- 'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+-- object that enables+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+-- that object /must/ not use the @ConstOffset@ and @Offset@ operands+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewType-07752# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this+-- command, then the image view’s @viewType@ /must/ match the @Dim@+-- operand of the @OpTypeImage@ as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-operation-validation ???>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-format-07753# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this+-- command, then the image view’s @format@ /must/ match the numeric+-- format from the @Sampled@ @Type@ operand of the @OpTypeImage@ as+-- described in the SPIR-V Sampled Type column of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat ???>+-- table+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-04115# If a+-- 'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@+-- as a result of this command, then the @Type@ of the @Texel@ operand+-- of that instruction /must/ have at least as many components as the+-- image view’s format+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-04469# If a+-- 'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@+-- as a result of this command, then the @Type@ of the @Texel@ operand+-- of that instruction /must/ have at least as many components as the+-- buffer view’s format+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04470# If a+-- 'Vulkan.Core10.Handles.ImageView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component+-- width is accessed as a result of this command, the @SampledType@ of+-- the @OpTypeImage@ operand of that instruction /must/ have a @Width@+-- of 64+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04471# If a+-- 'Vulkan.Core10.Handles.ImageView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a component width less+-- than 64-bit is accessed as a result of this command, the+-- @SampledType@ of the @OpTypeImage@ operand of that instruction+-- /must/ have a @Width@ of 32+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04472# If a+-- 'Vulkan.Core10.Handles.BufferView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component+-- width is accessed as a result of this command, the @SampledType@ of+-- the @OpTypeImage@ operand of that instruction /must/ have a @Width@+-- of 64+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04473# If a+-- 'Vulkan.Core10.Handles.BufferView' with a+-- 'Vulkan.Core10.Enums.Format.Format' that has a component width less+-- than 64-bit is accessed as a result of this command, the+-- @SampledType@ of the @OpTypeImage@ operand of that instruction+-- /must/ have a @Width@ of 32+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sparseImageInt64Atomics-04474#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+-- feature is not enabled, 'Vulkan.Core10.Handles.Image' objects+-- created with the+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+-- flag /must/ not be accessed by atomic instructions through an+-- @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+-- command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sparseImageInt64Atomics-04475#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+-- feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects+-- created with the+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+-- flag /must/ not be accessed by atomic instructions through an+-- @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+-- command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06971#+-- If @OpImageWeightedSampleQCOM@ is used to sample a+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06972#+-- If @OpImageWeightedSampleQCOM@ uses a+-- 'Vulkan.Core10.Handles.ImageView' as a sample weight image as a+-- result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBoxFilterQCOM-06973# If+-- @OpImageBoxFilterQCOM@ is used to sample a+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSSDQCOM-06974#+-- If @OpImageBlockMatchSSDQCOM@ is used to read from an+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06975#+-- If @OpImageBlockMatchSADQCOM@ is used to read from an+-- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then+-- the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06976#+-- If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to+-- read from a reference image as result of this command, then the+-- specified reference coordinates /must/ not fail+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06977#+-- If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,+-- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a+-- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then+-- the sampler /must/ have been created with+-- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06978#+-- If any command other than @OpImageWeightedSampleQCOM@,+-- @OpImageBoxFilterQCOM@, @OpImageBlockMatchSSDQCOM@, or+-- @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as+-- a result of this command, then the sampler /must/ not have been+-- created with+-- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07288# Any shader+-- invocation executed by this command /must/+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-02684# The current+-- render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the @renderPass@ member of the+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure+-- specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound+-- to+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-subpass-02685# The subpass+-- index of the current render pass /must/ be equal to the @subpass@+-- member of the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Vulkan.Core10.Handles.Pipeline' bound to+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07748# If any shader+-- statically accesses an input attachment, a valid descriptor /must/+-- be bound to the pipeline via a descriptor set+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07468# If any+-- shader executed by this pipeline accesses an @OpTypeImage@ variable+-- with a @Dim@ operand of @SubpassData@, it /must/ be decorated with+-- an @InputAttachmentIndex@ that corresponds to a valid input+-- attachment in the current subpass+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07469# Input attachment+-- views accessed in a subpass /must/ be created with the same+-- 'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass+-- definition, and be created with a 'Vulkan.Core10.Handles.ImageView'+-- that is compatible with the attachment referenced by the subpass\'+-- @pInputAttachments@[@InputAttachmentIndex@] in the currently bound+-- 'Vulkan.Core10.Handles.Framebuffer' as specified by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06537# Memory backing+-- image subresources used as attachments in the current render pass+-- /must/ not be written in any way other than as an attachment by this+-- command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06538# If any recorded+-- command in the current subpass will write to an image subresource as+-- an attachment, this command /must/ not read from the memory backing+-- that image subresource in any other way than as an attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06539# If any recorded+-- command in the current subpass will read from an image subresource+-- used as an attachment in any way other than as an attachment, this+-- command /must/ not write to that image subresource as an attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06886# If the current+-- render pass instance uses a depth\/stencil attachment with a+-- read-only layout for the depth aspect,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>+-- /must/ be disabled+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06887# If the current+-- render pass instance uses a depth\/stencil attachment with a+-- read-only layout for the stencil aspect, both front and back+-- @writeMask@ are not zero, and stencil test is enabled,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>+-- /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-maxMultiviewInstanceIndex-02688#+-- If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-02689# If+-- the bound graphics pipeline was created with+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass+-- has a depth\/stencil attachment, then that attachment /must/ have+-- been created with the+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06666# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03417# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+-- dynamic state enabled, then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @viewportCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ match the+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+-- of the pipeline+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-scissorCount-03418# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @scissorCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+-- /must/ match the+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+-- of the pipeline+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03419# If the+-- bound graphics pipeline state was created with both the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic states enabled then both+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @viewportCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ match the @scissorCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04137# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+-- dynamic state enabled, then the bound graphics pipeline /must/ have+-- been created with+-- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04138# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+-- dynamic states enabled then the @viewportCount@ parameter in the+-- last call to+-- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'+-- /must/ be greater than or equal to the @viewportCount@ parameter in+-- the last call to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04139# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+-- dynamic state enabled, then the bound graphics pipeline /must/ have+-- been created with+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04140# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+-- dynamic states enabled then the @viewportCount@ parameter in the+-- last call to+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'+-- /must/ be greater than or equal to the @viewportCount@ parameter in+-- the last call to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-VkPipelineVieportCreateInfo-04141#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled and a+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+-- structure chained from+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', then the+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-VkPipelineVieportCreateInfo-04142#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled and a+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+-- structure chained from+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', then the+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-04876# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'+-- dynamic state enabled then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-04877# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'+-- dynamic state enabled then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-logicOp-04878# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command and the @logicOp@ /must/ be a valid+-- 'Vulkan.Core10.Enums.LogicOp.LogicOp' value+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-04552#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>+-- limit is not supported, the bound graphics pipeline was created with+-- the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, and any of the shader stages of the bound+-- graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+-- then+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the @viewportCount@ parameter of+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+-- /must/ be @1@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-blendEnable-04727# If+-- rasterization is not disabled in the bound graphics pipeline, then+-- for each color attachment in the subpass, if the corresponding image+-- view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- do not contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',+-- then the @blendEnable@ member of the corresponding element of the+-- @pAttachments@ member of @pColorBlendState@ /must/ be+-- 'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07284#+-- If rasterization is not disabled in the bound graphics pipeline, and+-- none of the @VK_AMD_mixed_attachment_samples@ extension, the+-- @VK_NV_framebuffer_mixed_samples@ extension, or the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature are enabled, then+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- /must/ be the same as the current subpass color and\/or+-- depth\/stencil attachments+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06172# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pDepthAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pDepthAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the depth attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06173# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pStencilAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pStencilAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the stencil attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06174# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pDepthAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pDepthAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',+-- this command /must/ not write any values to the depth attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06175# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pStencilAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pStencilAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the stencil attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06176# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pDepthAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pDepthAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the depth attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06177# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the @imageView@ member of @pStencilAttachment@ is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of+-- @pStencilAttachment@ is+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',+-- this command /must/ not write any values to the stencil attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewMask-06178# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound graphics pipeline /must/ have been created with+-- a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@+-- equal to+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06179# If+-- the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound graphics pipeline /must/ have been created with+-- a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@+-- equal to+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06180# If+-- the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ not equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created+-- with a 'Vulkan.Core10.Enums.Format.Format' equal to the+-- corresponding element of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@+-- used to create the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-07616# If+-- the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the+-- corresponding element of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@+-- used to create the currently bound pipeline equal to+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07749# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-attachmentCount-07750# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+-- dynamic state enabled then the @attachmentCount@ parameter of+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+-- /must/ be greater than or equal to the+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+-- of the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07751# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-06181# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the 'Vulkan.Core10.Enums.Format.Format' used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-07617# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-06182# If+-- the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the 'Vulkan.Core10.Enums.Format.Format' used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-07618# If+-- the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06183# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06184# If the current+-- render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- and+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently+-- bound graphics pipeline /must/ have been created with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06185# If+-- the currently bound pipeline was created with a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- with a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- parameter greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ not equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created+-- with a sample count equal to the corresponding element of the+-- @pColorAttachmentSamples@ member of+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- used to create the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-06186# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created with a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+-- @depthStencilAttachmentSamples@ member of+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-06187# If+-- the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created with a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+-- @depthStencilAttachmentSamples@ member of+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07285#+-- If the currently bound pipeline was created without a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is not enabled, and the current render pass instance was+-- begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'+-- with a+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@+-- parameter greater than @0@, then each element of the+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@+-- array with a @imageView@ not equal to+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created+-- with a sample count equal to the value of+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- used to create the currently bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07286#+-- If the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created without a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is not enabled, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07287#+-- If the current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline was created without a+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+-- or+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+-- structure, and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is not enabled, and+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+-- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- used to create the currently bound graphics pipeline /must/ be equal+-- to the sample count used to create+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-06198# If the+-- current render pass instance was begun with+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',+-- the currently bound pipeline /must/ have been created with a+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+-- equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+-- feature is not enabled and the+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+-- query is active,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+-- /must/ not be enabled+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+-- feature is not enabled and the+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+-- query is active, the bound graphics pipeline /must/ not have been+-- created with a non-zero value in+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07619# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07620# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07621# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07622# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07623# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07624# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07625# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07626# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07627# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07628# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07629# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07630# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07631# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07632# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07633# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07634# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07635# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07636# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07637# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07638# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07639# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07640# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07641# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07642# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07643# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07644# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07645# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07646# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07647# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07648# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07649# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'+-- must have been called in the current command buffer prior to this+-- drawing command+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pColorBlendEnables-07470# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- state enabled and the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- set @pColorBlendEnables@ for any attachment to+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in+-- the subpass the corresponding image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07471# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state enabled, and the current subpass does not use any color+-- and\/or depth\/stencil attachments, then the @rasterizationSamples@+-- in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- /must/ follow the rules for a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07472# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state disabled, then the @samples@ parameter in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'+-- /must/ be greater or equal to the+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- parameter used to create the bound graphics pipeline+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07473# If the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'+-- state and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- states enabled, then the @samples@ parameter in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'+-- /must/ be greater or equal to the @rasterizationSamples@ parameter+-- in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07475#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state enabled, and none of the @VK_AMD_mixed_attachment_samples@+-- extension, @VK_NV_framebuffer_mixed_samples@ extension, or the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>+-- feature is enabled, then the @rasterizationSamples@ in the last call+-- to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- /must/ be the same as the current subpass color and\/or+-- depth\/stencil attachments+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07476# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- calls /must/ specify an enable for all active color attachments in+-- the current subpass+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07477# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'+-- calls /must/ specify the blend equations for all active color+-- attachments in the current subpass where blending is enabled+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07478# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'+-- calls /must/ specify the color write mask for all active color+-- attachments in the current subpass+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07479# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'+-- dynamic state enabled then+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- /must/ have been called in the current command buffer prior to this+-- drawing command, and the attachments specified by the+-- @firstAttachment@ and @attachmentCount@ parameters of+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- calls /must/ specify the advanced blend equations for all active+-- color attachments in the current subpass where blending is enabled+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-advancedBlendMaxColorAttachments-07480#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'+-- dynamic states enabled and the last calls to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'+-- and+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'+-- have enabled advanced blending, then the number of active color+-- attachments in the current subpass must not exceed+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481#+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+-- feature is not enabled and the+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+-- query is active, and the bound graphics pipeline was created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'+-- state enabled, the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'+-- /must/ have set the @rasterizationStream@ to zero+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07482#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state disabled, then the @sampleLocationsPerPixel@ member of+-- @pSampleLocationsInfo@ in the last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ equal the @rasterizationSamples@ member of the+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'+-- structure the bound graphics pipeline has been created with+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07483#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- state enabled, then the @sampleLocationsPerPixel@ member of+-- @pSampleLocationsInfo@ in the last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ equal the @rasterizationSamples@ parameter of the last call+-- to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07484# If+-- the bound graphics pipeline was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- and the current subpass has a depth\/stencil attachment, then that+-- attachment /must/ have been created with the+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07485# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and if @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the+-- last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ evenly divide+-- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@+-- as returned by+-- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07486# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- state enabled and the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and if @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the+-- last call to+-- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- /must/ evenly divide+-- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@+-- as returned by+-- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07487# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'+-- state enabled, and if @sampleLocationsEnable@ was+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',+-- the fragment shader code /must/ not statically use the extended+-- instruction @InterpolateAtSample@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageModulationTableEnable-07488#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'+-- state enabled and the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'+-- set @coverageModulationTableEnable@ to+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then the+-- @coverageModulationTableCount@ parameter in the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'+-- /must/ equal the current @rasterizationSamples@ divided by the+-- number of color samples in the current subpass+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07489# If+-- the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if+-- current subpass has a depth\/stencil attachment and depth test,+-- stencil test, or depth bounds test are enabled in the currently+-- bound pipeline state, then the current @rasterizationSamples@ must+-- be the same as the sample count of the depth\/stencil attachment+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageToColorEnable-07490# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'+-- state enabled and the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'+-- set the @coverageToColorEnable@ to+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass must+-- have a color attachment at the location selected by the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'+-- @coverageToColorLocation@, with a+-- 'Vulkan.Core10.Enums.Format.Format' of+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',+-- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or+-- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageReductionMode-07491# If+-- this @VK_NV_coverage_reduction_mode@ extension is enabled, the bound+-- graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'+-- states enabled, the current coverage reduction mode+-- @coverageReductionMode@, then the current @rasterizationSamples@,+-- and the sample counts for the color and depth\/stencil attachments+-- (if the subpass has them) must be a valid combination returned by+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07492# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- dynamic state enabled, but not the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'+-- dynamic state enabled, then the bound graphics pipeline /must/ have+-- been created with+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@+-- greater or equal to the @viewportCount@ parameter in the last call+-- to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07493# If the+-- bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+-- and+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'+-- dynamic states enabled then the @viewportCount@ parameter in the+-- last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'+-- /must/ be greater than or equal to the @viewportCount@ parameter in+-- the last call to+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07494# If+-- the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if+-- the current subpass has any color attachments and+-- @rasterizationSamples@ of the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'+-- is greater than the number of color samples, then the pipeline+-- @sampleShadingEnable@ /must/ be+-- 'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07495# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>+-- feature /must/ be enabled+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07496# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>+-- feature /must/ be enabled+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07497# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>+-- feature /must/ be enabled+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07498# If+-- the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'+-- or+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'+-- dynamic states enabled, and if the current @stippledLineEnable@+-- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current+-- @lineRasterizationMode@ state is+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>+-- feature /must/ be enabled and+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@+-- must be VK_TRUE+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-conservativePointAndLineRasterization-07499#+-- If the bound graphics pipeline state was created with the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'+-- dynamic state enabled,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>+-- is not supported, and the effective primitive topology output by the+-- last pre-rasterization shader stage is a line or point, then the+-- @conservativeRasterizationMode@ set by the last call to+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'+-- /must/ be+-- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-stage-07073# If the currently+-- bound pipeline was created with the+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@+-- member of an element of+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set+-- to+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'+-- or+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',+-- then+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>+-- must not be active+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-stage-06480# The bound graphics+-- pipeline /must/ not have been created with the+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@+-- member of an element of+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set+-- to+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'+-- or+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07074#+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>+-- /must/ not be active+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07075#+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>+-- /must/ not be active+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineStatistics-07076# The+-- @pipelineStatistics@ member used to create any active+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>+-- /must/ not contain+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',+-- or+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-02708# If @buffer@ is+-- non-sparse then it /must/ be bound completely and contiguously to a+-- single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-02709# @buffer@ /must/+-- have been created with the+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-offset-02710# @offset@ /must/+-- be a multiple of @4@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-02711#+-- @commandBuffer@ /must/ not be a protected command buffer+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02718# If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>+-- feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02719# @drawCount@+-- /must/ be less than or equal to+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-ClusterCullingHUAWEI-07824# The+-- current pipeline bound to+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+-- /must/ contain a shader stage using the @ClusterCullingHUAWEI@+-- @Execution@ @Model@.+--+-- == Valid Usage (Implicit)+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter#+-- @commandBuffer@ /must/ be a valid+-- 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-parameter# @buffer@+-- /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-recording#+-- @commandBuffer@ /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-cmdpool# The+-- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+-- allocated from /must/ support graphics operations+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-renderpass# This command /must/+-- only be called inside of a render pass instance+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-videocoding# This command+-- /must/ only be called outside of a video coding scope+--+-- - #VUID-vkCmdDrawClusterIndirectHUAWEI-commonparent# Both of @buffer@,+-- and @commandBuffer@ /must/ have been created, allocated, or+-- retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that+-- @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================++-- | Primary | Inside | Outside | Graphics | Action |+-- | Secondary | | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdDrawClusterIndirectHUAWEI :: forall io+ . (MonadIO io)+ => -- | @commandBuffer@ is the command buffer into which the command is+ -- recorded.+ CommandBuffer+ -> -- | @buffer@ is the buffer containing draw parameters.+ Buffer+ -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.+ ("offset" ::: DeviceSize)+ -> io ()+cmdDrawClusterIndirectHUAWEI commandBuffer buffer offset = liftIO $ do+ let vkCmdDrawClusterIndirectHUAWEIPtr = pVkCmdDrawClusterIndirectHUAWEI (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)+ unless (vkCmdDrawClusterIndirectHUAWEIPtr /= nullFunPtr) $+ throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawClusterIndirectHUAWEI is null" Nothing Nothing+ let vkCmdDrawClusterIndirectHUAWEI' = mkVkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEIPtr+ traceAroundEvent "vkCmdDrawClusterIndirectHUAWEI" (vkCmdDrawClusterIndirectHUAWEI'+ (commandBufferHandle (commandBuffer))+ (buffer)+ (offset))+ pure $ ()+++-- | VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI - Structure+-- describing cluster culling shader properties supported by an+-- implementation+--+-- = Description+--+-- If the 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI' structure is+-- included in the @pNext@ chain of the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'+-- structure passed to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',+-- it is filled in with each corresponding implementation-dependent+-- property.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI+ { -- | @maxWorkGroupCount@[3] is the maximum number of local workgroups that+ -- can be launched by a single command. These three value represent the+ -- maximum local workgroup count in the X, Y and Z dimensions,+ -- respectively. In the current implementation, the values of Y and Z are+ -- both implicitly set as one. groupCountX of DrawCluster command must be+ -- less than or equal to maxWorkGroupCount[0].+ maxWorkGroupCount :: (Word32, Word32, Word32)+ , -- | @maxWorkGroupSize@[3] is the maximum size of a local workgroup. These+ -- three value represent the maximum local workgroup size in the X, Y and Z+ -- dimensions, respectively. The x, y and z sizes, as specified by the+ -- @LocalSize@ or @LocalSizeId@ execution mode or by the object decorated+ -- by the WorkgroupSize decoration in shader modules, must be less than or+ -- equal to the corresponding limit. In the current implementation, the+ -- maximum workgroup size of the X dimension is 32, the others are 1.+ maxWorkGroupSize :: (Word32, Word32, Word32)+ , -- | @maxOutputClusterCount@ is the maximum number of output cluster a single+ -- cluster culling shader workgroup can emit.+ maxOutputClusterCount :: Word32+ }+ deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceClusterCullingShaderPropertiesHUAWEI)+#endif+deriving instance Show PhysicalDeviceClusterCullingShaderPropertiesHUAWEI++instance ToCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where+ withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceClusterCullingShaderPropertiesHUAWEI{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ let pMaxWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))+ case (maxWorkGroupCount) of+ (e0, e1, e2) -> do+ poke (pMaxWorkGroupCount' :: Ptr Word32) (e0)+ poke (pMaxWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)+ let pMaxWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))+ case (maxWorkGroupSize) of+ (e0, e1, e2) -> do+ poke (pMaxWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxOutputClusterCount)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ let pMaxWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))+ case ((zero, zero, zero)) of+ (e0, e1, e2) -> do+ poke (pMaxWorkGroupCount' :: Ptr Word32) (e0)+ poke (pMaxWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)+ let pMaxWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))+ case ((zero, zero, zero)) of+ (e0, e1, e2) -> do+ poke (pMaxWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where+ peekCStruct p = do+ let pmaxWorkGroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))+ maxWorkGroupCount0 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 0 :: Ptr Word32))+ maxWorkGroupCount1 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 4 :: Ptr Word32))+ maxWorkGroupCount2 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 8 :: Ptr Word32))+ let pmaxWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))+ maxWorkGroupSize0 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))+ maxWorkGroupSize1 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))+ maxWorkGroupSize2 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))+ maxOutputClusterCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ pure $ PhysicalDeviceClusterCullingShaderPropertiesHUAWEI+ ((maxWorkGroupCount0, maxWorkGroupCount1, maxWorkGroupCount2))+ ((maxWorkGroupSize0, maxWorkGroupSize1, maxWorkGroupSize2))+ maxOutputClusterCount++instance Storable PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where+ zero = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI+ (zero, zero, zero)+ (zero, zero, zero)+ zero+++-- | VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI - Structure+-- describing whether cluster culling shader is enabled+--+-- = Description+--+-- If the 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI' structure is+-- included in the @pNext@ chain of the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'+-- structure passed to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',+-- it is filled in to indicate whether each corresponding feature is+-- supported. 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI' /can/ also+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'+-- to selectively enable these features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceClusterCullingShaderFeaturesHUAWEI = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI+ { -- | #features-clustercullingShader# @clustercullingShader@ specifies whether+ -- cluster culling shader is supported.+ clustercullingShader :: Bool+ , -- | #features-multiviewClusterCullingShader# @multiviewClusterCullingShader@+ -- specifies whether multiview is supported.+ multiviewClusterCullingShader :: Bool+ }+ deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI)+#endif+deriving instance Show PhysicalDeviceClusterCullingShaderFeaturesHUAWEI++instance ToCStruct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI where+ withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (clustercullingShader))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (multiviewClusterCullingShader))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI where+ peekCStruct p = do+ clustercullingShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ multiviewClusterCullingShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceClusterCullingShaderFeaturesHUAWEI+ (bool32ToBool clustercullingShader)+ (bool32ToBool multiviewClusterCullingShader)++instance Storable PhysicalDeviceClusterCullingShaderFeaturesHUAWEI where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceClusterCullingShaderFeaturesHUAWEI where+ zero = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI+ zero+ zero+++type HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION"+pattern HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION :: forall a . Integral a => a+pattern HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1+++type HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader"++-- No documentation found for TopLevel "VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME"+pattern HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader"+
+ src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs-boot view
@@ -0,0 +1,394 @@+{-# language CPP #-}+-- | = Name+--+-- VK_HUAWEI_cluster_culling_shader - device extension+--+-- == VK_HUAWEI_cluster_culling_shader+--+-- [__Name String__]+-- @VK_HUAWEI_cluster_culling_shader@+--+-- [__Extension Type__]+-- Device extension+--+-- [__Registered Extension Number__]+-- 405+--+-- [__Revision__]+-- 1+--+-- [__Extension and Version Dependencies__]+--+-- - Requires support for Vulkan 1.0+--+-- - Requires @VK_KHR_get_physical_device_properties2@ to be enabled+-- for any device-level functionality+--+-- [__Contact__]+--+-- - Yuchang Wang+-- <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_HUAWEI_cluster_culling_shader] @richard_Wang2%0A*Here describe the issue or question you have about the VK_HUAWEI_cluster_culling_shader extension* >+--+-- [__Extension Proposal__]+-- <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_HUAWEI_cluster_culling_shader.adoc VK_HUAWEI_cluster_culling_shader>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+-- 2022-11-17+--+-- [__Interactions and External Dependencies__]+--+-- - This extension requires+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/HUAWEI/SPV_HUAWEI_cluster_culling_shader.html SPV_HUAWEI_cluster_culling_shader>.+--+-- - This extension provides API support for+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/huawei/GLSL_HUAWEI_cluster_culling_shader.txt GL_HUAWEI_cluster_culling_shader>.+--+-- [__Contributors__]+--+-- - Yuchang Wang, Huawei+--+-- - Juntao Li, Huawei+--+-- - Pan Gao, Huawei+--+-- - Jie Cao, Huawei+--+-- - Yunjin Zhang, Huawei+--+-- - Shujie Zhou, Huawei+--+-- - Chaojun Wang, Huawei+--+-- - Jiajun Hu, Huawei+--+-- - Cong Zhang, Huawei+--+-- == Description+--+-- Cluster Culling Shader(CCS) is similar to the existing compute shader;+-- its main purpose is to provide an execution environment in order to+-- perform coarse-level geometry culling and level-of-detail selection more+-- efficiently on GPU.+--+-- The traditional 2-pass GPU culling solution using compute shader needs a+-- pipeline barrier between compute pipeline and graphics pipeline,+-- sometimes, in order to optimize performance, an additional compaction+-- process may also be required. this extension improve the above mentioned+-- shortcomings which can allow compute shader directly emit visible+-- clusters to following graphics pipeline.+--+-- A set of new built-in output variables are used to express visible+-- cluster, in addition, a new built-in function is used to emit these+-- variables from CCS to IA stage, then IA can use these variables to+-- fetches vertices of visible cluster and drive vertex shader to shading+-- these vertices. As stated above, both IA and vertex shader are+-- preserved, vertex shader still used for vertices position shading,+-- instead of directly outputting a set of transformed vertices from+-- compute shader, this makes CCS more suitable for mobile GPUs.+--+-- == New Commands+--+-- - 'cmdDrawClusterHUAWEI'+--+-- - 'cmdDrawClusterIndirectHUAWEI'+--+-- == New Structures+--+-- - Extending+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- 'Vulkan.Core10.Device.DeviceCreateInfo':+--+-- - 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI'+--+-- - Extending+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+-- - 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'+--+-- == New Enum Constants+--+-- - 'HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME'+--+-- - 'HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION'+--+-- - Extending+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':+--+-- - 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'+--+-- - Extending+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits':+--+-- - 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI'+--+-- - Extending+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+-- - 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI'+--+-- - Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+-- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI'+--+-- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI'+--+-- == New Built-In Variables+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-indexcounthuawei IndexCountHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexcounthuawei VertexCountHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecounthuawei InstanceCountHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstindexhuawei FirstIndexHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstvertexhuawei FirstVertexHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexoffsethuawei VertexOffsetHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstinstancehuawei FirstInstanceHUAWEI>+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clusteridhuawei ClusterIdHUAWEI>+--+-- == New SPIR-V Capability+--+-- - <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ClusterCullingShadingHUAWEI ClusterCullingShadingHUAWEI>+--+-- == Sample code+--+-- Example of cluster culling in a GLSL shader+--+-- > #extension GL_HUAWEI_cluster_culling_shader: enable+-- >+-- > #define GPU_WARP_SIZE 32+-- > #define GPU_GROUP_SIZE GPU_WARP_SIZE+-- >+-- > #define GPU_CLUSTER_PER_INVOCATION 1+-- > #define GPU_CLUSTER_PER_WORKGROUP (GPU_GROUP_SIZE * GPU_CLUSTER_PER_INVOCATION)+-- >+-- > // Number of threads per workgroup+-- > // - 1D only+-- > // - warpsize = 32+-- > layout(local_size_x=GPU_GROUP_SIZE, local_size_y=1, local_size_z=1) in;+-- >+-- >+-- > #define GPU_CLUSTER_DESCRIPTOR_BINDING 0+-- > #define GPU_DRAW_BUFFER_BINDING 1+-- > #define GPU_INSTANCE_DESCRIPTOR_BINDING 2+-- >+-- > const float pi_half = 1.570795;+-- > uint instance_id;+-- >+-- > struct BoundingSphere+-- > {+-- > vec3 center;+-- > float radius;+-- > };+-- >+-- > struct BoundingCone+-- > {+-- > vec3 normal;+-- > float angle;+-- > };+-- >+-- > struct ClusterDescriptor+-- > {+-- > BoundingSphere sphere;+-- > BoundingCone cone;+-- > uint instance_idx;+-- > };+-- >+-- > struct InstanceData+-- > {+-- > mat4 mvp_matrix; // mvp matrix.+-- > vec4 frustum_planes[6]; // six frustum planes+-- > mat4 model_matrix_transpose_inverse; // inverse transpose of model matrix.+-- > vec3 view_origin; // view original+-- > };+-- >+-- > struct InstanceDescriptor+-- > {+-- > uint begin;+-- > uint end;+-- > uint cluster_count;+-- > uint debug;+-- > BoundingSphere sphere;+-- > InstanceData instance_data;+-- > };+-- >+-- > struct DrawElementsCommand{+-- > uint indexcount;+-- > uint instanceCount;+-- > uint firstIndex;+-- > int vertexoffset;+-- > uint firstInstance;+-- > uint cluster_id;+-- > };+-- >+-- > // indexed mode+-- > out gl_PerClusterHUAWEI{+-- > uint gl_IndexCountHUAWEI;+-- > uint gl_InstanceCountHUAWEI;+-- > uint gl_FirstIndexHUAWEI;+-- > int gl_VertexOffsetHUAWEI;+-- > uint gl_FirstInstanceHUAWEI;+-- > uint gl_ClusterIdHUAWEI;+-- > };+-- >+-- >+-- > layout(binding = GPU_CLUSTER_DESCRIPTOR_BINDING, std430) readonly buffer cluster_descriptor_ssbo+-- > {+-- > ClusterDescriptor cluster_descriptors[];+-- > };+-- >+-- >+-- > layout(binding = GPU_DRAW_BUFFER_BINDING, std430) buffer draw_indirect_ssbo+-- > {+-- > DrawElementsCommand draw_commands[];+-- > };+-- >+-- > layout(binding = GPU_INSTANCE_DESCRIPTOR_BINDING, std430) buffer instance_descriptor_ssbo+-- > {+-- > InstanceDescriptor instance_descriptors[];+-- > };+-- >+-- > uniform bool disable_frustum_culling;+-- > uniform bool disable_backface_culling;+-- > uniform float debug_value;+-- >+-- >+-- > bool isFrontFaceVisible( vec3 sphere_center, float sphere_radius, vec3 cone_normal, float cone_angle )+-- > {+-- > vec3 sphere_center_dir = normalize(sphere_center -+-- > instance_descriptors[instance_id].instance_data.view_origin);+-- >+-- > float sin_cone_angle = sin(min(cone_angle, pi_half));+-- > return dot(cone_normal, sphere_center_dir) < sin_cone_angle;+-- > }+-- >+-- > bool isSphereOutsideFrustum( vec3 sphere_center, float sphere_radius )+-- > {+-- > bool isInside = false;+-- >+-- > for(int i = 0; i < 6; i++)+-- > {+-- > isInside = isInside ||+-- > (dot(instance_descriptors[instance_id].instance_data.frustum_planes[i].xyz,+-- > sphere_center) + instance_descriptors[instance_id].instance_data.frustum_planes[i].w <+-- > sphere_radius);+-- > }+-- > return isInside;+-- > }+-- >+-- >+-- > void main()+-- > {+-- > uint cluster_id = gl_GlobalInvocationID.x;+-- > ClusterDescriptor desc = cluster_descriptors[cluster_id];+-- >+-- > // get instance description+-- > instance_id = desc.instance_idx;+-- > InstanceDescriptor inst_desc = instance_descriptors[instance_id];+-- >+-- > //instance based culling+-- > bool instance_render = (disable_frustum_culling ||+-- > !isSphereOutsideFrustum(inst_desc.sphere.center, inst_desc.sphere.radius));+-- >+-- > if( instance_render)+-- > {+-- > // cluster based culling+-- > bool render = (disable_frustum_culling || !isSphereOutsideFrustum(desc.sphere.center,+-- > desc.sphere.radius)) && (disable_backface_culling ||+-- > isFrontFaceVisible(desc.sphere.center, desc.sphere.radius, desc.cone.normal,+-- > desc.cone.angle));+-- >+-- > if (render)+-- > {+-- > // this cluster passed coarse-level culling, update built-in output variable.+-- > // in case of indexed mode:+-- > gl_IndexCountHUAWEI = draw_commands[cluster_id].indexcount;+-- > gl_InstanceCountHUAWEI = draw_commands[cluster_id].instanceCount;+-- > gl_FirstIndexHUAWEI = draw_commands[cluster_id].firstIndex;+-- > gl_VertexOffsetHUAWEI = draw_commands[cluster_id].vertexoffset;+-- > gl_FirstInstanceHUAWEI = draw_commands[cluster_id].firstInstance;+-- > gl_ClusterIdHUAWEI = draw_commands[cluster_id].cluster_id;+-- >+-- > // emit built-in output variables as a drawing command to subsequent+-- > // rendering pipeline.+-- > dispatchClusterHUAWEI();+-- > }+-- > }+-- > }+--+-- Example of graphics pipeline creation with cluster culling shader+--+-- > // create a cluster culling shader stage info structure.+-- > VkPipelineShaderStageCreateInfo ccsStageInfo{};+-- > ccsStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;+-- > ccsStageInfo.stage = VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI;+-- > ccsStageInfo.module = clustercullingshaderModule;+-- > ccsStageInfo.pName = "main";+-- >+-- > // pipeline shader stage creation+-- > VkPipelineShaderStageCreateInfo shaderStages[] = { ccsStageInfo, vertexShaderStageInfo, fragmentShaderStageInfo };+-- >+-- > // create graphics pipeline+-- > VkGraphicsPipelineCreateInfo pipelineInfo{};+-- > pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;+-- > pipelineInfo.stageCount = 3;+-- > pipelineInfo.pStage = shaderStages;+-- > pipelineInfo.pVertexInputState = &vertexInputInfo;+-- > // ...+-- > VkPipeline graphicsPipeline;+-- > VkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &graphicsPipeline);+--+-- Example of launching the execution of cluster culling shader+--+-- > vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline);+-- > vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, 1, 1);+-- > vkCmdEndRenderPass(commandBuffer);+--+-- == Version History+--+-- - Revision 1, 2022-11-18 (YuChang Wang)+--+-- - Internal revisions+--+-- == See Also+--+-- 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI',+-- 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI',+-- 'cmdDrawClusterHUAWEI', 'cmdDrawClusterIndirectHUAWEI'+--+-- == Document Notes+--+-- For more information, see the+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader ( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI+ , PhysicalDeviceClusterCullingShaderPropertiesHUAWEI+ ) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)++data PhysicalDeviceClusterCullingShaderFeaturesHUAWEI++instance ToCStruct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI+instance Show PhysicalDeviceClusterCullingShaderFeaturesHUAWEI++instance FromCStruct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI+++data PhysicalDeviceClusterCullingShaderPropertiesHUAWEI++instance ToCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI+instance Show PhysicalDeviceClusterCullingShaderPropertiesHUAWEI++instance FromCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI+
src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs view
@@ -85,8 +85,8 @@ -- are directly specified in 'RenderPassCreateInfo2KHR'. -- -- - 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.InputAttachmentAspectReference'::@aspectMask@--- is now specified in the relevant input attachment description in--- 'AttachmentDescription2KHR'::@aspectMask@+-- is now specified in the relevant input attachment reference in+-- 'AttachmentReference2KHR'::@aspectMask@ -- -- The details of these mappings are explained fully in the new structures. --
src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs view
@@ -100,7 +100,7 @@ -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageReadWithoutFormat shaderStorageImageReadWithoutFormat> -- and -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageWriteWithoutFormat shaderStorageImageWriteWithoutFormat>--- implementations may not report+-- features may not report -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR' -- and -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
src/Vulkan/Extensions/VK_NV_device_generated_commands.hs view
@@ -1506,7 +1506,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06181# If the -- current render pass instance was begun with
src/Vulkan/Extensions/VK_NV_mesh_shader.hs view
@@ -1131,7 +1131,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06181# If the current -- render pass instance was begun with@@ -2865,7 +2866,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06181# If the -- current render pass instance was begun with@@ -4649,7 +4651,8 @@ -- dynamic state enabled then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called in the current command buffer prior to this--- drawing command+-- drawing command for each discard rectangle in+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06181# If -- the current render pass instance was begun with
src/Vulkan/SPIRVRequirements.hs view
@@ -16,6 +16,7 @@ import Vulkan.Core10.Handles (PhysicalDevice) import Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures(..)) import Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT(..))+import Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI(..)) import Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV(..)) import Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV(..)) import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures(..))@@ -85,6 +86,7 @@ import Vulkan.Extensions.VK_GOOGLE_decorate_string (pattern GOOGLE_DECORATE_STRING_EXTENSION_NAME) import Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 (pattern GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME) import Vulkan.Extensions.VK_GOOGLE_user_type (pattern GOOGLE_USER_TYPE_EXTENSION_NAME)+import Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (pattern HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME) import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_16bit_storage (pattern KHR_16BIT_STORAGE_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_8bit_storage (pattern KHR_8BIT_STORAGE_EXTENSION_NAME)@@ -3338,6 +3340,25 @@ , RequireDeviceExtension { deviceExtensionLayerName = Nothing , deviceExtensionName = KHR_MAINTENANCE_3_EXTENSION_NAME+ , deviceExtensionMinVersion = 0+ }+ ]+ "ClusterCullingShadingHUAWEI" ->+ (,)+ [ RequireInstanceExtension+ { instanceExtensionLayerName = Nothing+ , instanceExtensionName = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+ , instanceExtensionMinVersion = 0+ }+ ]+ [ RequireDeviceFeature+ { featureName = "clustercullingShader"+ , checkFeature = \PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{clustercullingShader} -> clustercullingShader+ , enableFeature = \PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} -> PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{clustercullingShader = True, ..}+ }+ , RequireDeviceExtension+ { deviceExtensionLayerName = Nothing+ , deviceExtensionName = HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME , deviceExtensionMinVersion = 0 } ]
src/Vulkan/Version.hs view
@@ -19,11 +19,11 @@ import Data.Word (Word32) pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 238+pattern HEADER_VERSION = 239 pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 238+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 239 pattern MAKE_API_VERSION :: Word32 -> Word32 -> Word32 -> Word32
vulkan.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: vulkan-version: 3.24.3+version: 3.24.4 synopsis: Bindings to the Vulkan graphics API. description: Please see [the readme](https://github.com/expipiplus1/vulkan/#readme) category: Graphics@@ -434,6 +434,7 @@ Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 Vulkan.Extensions.VK_GOOGLE_surfaceless_query Vulkan.Extensions.VK_GOOGLE_user_type+ Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader Vulkan.Extensions.VK_HUAWEI_invocation_mask Vulkan.Extensions.VK_HUAWEI_subpass_shading Vulkan.Extensions.VK_IMG_filter_cubic