packages feed

vulkan 3.13 → 3.13.1

raw patch · 81 files changed

+17300/−10745 lines, 81 files

Files

changelog.md view
@@ -2,6 +2,9 @@  ## WIP +## [3.13.1] - 2021-11-03+- Bump API version to v1.2.197+ ## [3.13] - 2021-10-14 - Bump API version to v1.2.196 
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-version: "3.13"+version: "3.13.1" 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
@@ -84,6 +84,7 @@ import {-# SOURCE #-} Vulkan.Core10.Pass (AttachmentReference) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (AttachmentSampleCountInfoAMD) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (AttachmentSampleLocationsEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo)@@ -128,6 +129,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT) import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferInheritanceInfo) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (CommandBufferSubmitInfoKHR) import {-# SOURCE #-} Vulkan.Core10.CommandPool (CommandPoolCreateInfo)@@ -345,6 +347,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawIndexedInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (MultiviewPerViewAttributesInfoNVX) import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (MutableDescriptorTypeCreateInfoVALVE) import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (MutableDescriptorTypeListVALVE) import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset2D)@@ -392,6 +395,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)@@ -566,6 +570,7 @@ import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineRasterizationStateCreateInfo) import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PipelineRenderingCreateInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT) import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)@@ -615,6 +620,10 @@ import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingAttachmentInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingFragmentDensityMapAttachmentInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingFragmentShadingRateAttachmentInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ResolveImageInfo2KHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (SRTDataNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationEXT)@@ -843,6 +852,9 @@   Extends CommandBufferInheritanceInfo CommandBufferInheritanceConditionalRenderingInfoEXT = ()   Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()   Extends CommandBufferInheritanceInfo CommandBufferInheritanceViewportScissorInfoNV = ()+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderingInfoKHR = ()+  Extends CommandBufferInheritanceInfo AttachmentSampleCountInfoAMD = ()+  Extends CommandBufferInheritanceInfo MultiviewPerViewAttributesInfoNVX = ()   Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()   Extends ComputePipelineCreateInfo SubpassShadingPipelineCreateInfoHUAWEI = ()   Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()@@ -960,6 +972,7 @@   Extends DeviceCreateInfo PhysicalDeviceShaderIntegerDotProductFeaturesKHR = ()   Extends DeviceCreateInfo PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()+  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingFeaturesKHR = ()   Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoEXT = ()   Extends FenceCreateInfo ExportFenceCreateInfo = ()   Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()@@ -974,6 +987,9 @@   Extends GraphicsPipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()   Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateStateCreateInfoKHR = ()   Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateEnumStateCreateInfoNV = ()+  Extends GraphicsPipelineCreateInfo PipelineRenderingCreateInfoKHR = ()+  Extends GraphicsPipelineCreateInfo AttachmentSampleCountInfoAMD = ()+  Extends GraphicsPipelineCreateInfo MultiviewPerViewAttributesInfoNVX = ()   Extends ImageBlit2KHR CopyCommandTransformInfoQCOM = ()   Extends ImageCreateInfo DedicatedAllocationImageCreateInfoNV = ()   Extends ImageCreateInfo ExternalMemoryImageCreateInfoNV = ()@@ -1120,6 +1136,7 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerDotProductFeaturesKHR = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingFeaturesKHR = ()   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()   Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()@@ -1221,6 +1238,10 @@   Extends RenderPassCreateInfo RenderPassInputAttachmentAspectCreateInfo = ()   Extends RenderPassCreateInfo RenderPassFragmentDensityMapCreateInfoEXT = ()   Extends RenderPassCreateInfo2 RenderPassFragmentDensityMapCreateInfoEXT = ()+  Extends RenderingInfoKHR DeviceGroupRenderPassBeginInfo = ()+  Extends RenderingInfoKHR RenderingFragmentShadingRateAttachmentInfoKHR = ()+  Extends RenderingInfoKHR RenderingFragmentDensityMapAttachmentInfoEXT = ()+  Extends RenderingInfoKHR MultiviewPerViewAttributesInfoNVX = ()   Extends SamplerCreateInfo SamplerYcbcrConversionInfo = ()   Extends SamplerCreateInfo SamplerReductionModeCreateInfo = ()   Extends SamplerCreateInfo SamplerCustomBorderColorCreateInfoEXT = ()@@ -1671,6 +1692,13 @@   STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR -> go @FormatProperties3KHR   STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT -> go @DrmFormatModifierPropertiesList2EXT   STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID -> go @AndroidHardwareBufferFormatProperties2ANDROID+  STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR -> go @PipelineRenderingCreateInfoKHR+  STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR -> go @RenderingFragmentShadingRateAttachmentInfoKHR+  STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT -> go @RenderingFragmentDensityMapAttachmentInfoEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR -> go @PhysicalDeviceDynamicRenderingFeaturesKHR+  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR -> go @CommandBufferInheritanceRenderingInfoKHR+  STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD -> go @AttachmentSampleCountInfoAMD+  STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX -> go @MultiviewPerViewAttributesInfoNVX   t -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("Unrecognized struct type: " <> show t) Nothing Nothing  where   go :: forall e . (Typeable e, FromCStruct e, ToCStruct e, Show e) => IO b@@ -2037,6 +2065,13 @@ {-# complete (::&) :: FormatProperties3KHR #-} {-# complete (::&) :: DrmFormatModifierPropertiesList2EXT #-} {-# complete (::&) :: AndroidHardwareBufferFormatProperties2ANDROID #-}+{-# complete (::&) :: PipelineRenderingCreateInfoKHR #-}+{-# complete (::&) :: RenderingFragmentShadingRateAttachmentInfoKHR #-}+{-# complete (::&) :: RenderingFragmentDensityMapAttachmentInfoEXT #-}+{-# complete (::&) :: PhysicalDeviceDynamicRenderingFeaturesKHR #-}+{-# complete (::&) :: CommandBufferInheritanceRenderingInfoKHR #-}+{-# complete (::&) :: AttachmentSampleCountInfoAMD #-}+{-# complete (::&) :: MultiviewPerViewAttributesInfoNVX #-}  -- | View the head and tail of a 'Chain', see '::&' --
src/Vulkan/Core10/Buffer.hs view
@@ -386,6 +386,10 @@ --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo', --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV', --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileEXT VkVideoEncodeH265ProfileEXT>, --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>, --     or --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
src/Vulkan/Core10/CommandBuffer.hs view
@@ -68,6 +68,7 @@ import Vulkan.CStruct.Extends (peekSomeCStruct) import Vulkan.CStruct.Extends (withSomeCStruct) import Vulkan.NamedType ((:::))+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (AttachmentSampleCountInfoAMD) import Vulkan.Core10.FundamentalTypes (Bool32) import Vulkan.CStruct.Extends (Chain) import Vulkan.Core10.Handles (CommandBuffer)@@ -75,6 +76,7 @@ import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer)) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV) import Vulkan.Core10.Enums.CommandBufferLevel (CommandBufferLevel) import Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlagBits(..))@@ -96,6 +98,7 @@ import Vulkan.CStruct.Extends (Extendss) import Vulkan.CStruct.Extends (Extensible(..)) import Vulkan.Core10.Handles (Framebuffer)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (MultiviewPerViewAttributesInfoNVX) import Vulkan.CStruct.Extends (PeekChain) import Vulkan.CStruct.Extends (PeekChain(..)) import Vulkan.CStruct.Extends (PokeChain)@@ -659,6 +662,13 @@ -- | VkCommandBufferInheritanceInfo - Structure specifying command buffer -- inheritance information --+-- = Description+--+-- If the 'Vulkan.Core10.Handles.CommandBuffer' will not be executed within+-- a render pass instance, or if the render pass instance was begun with+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+-- @renderPass@, @subpass@, and @framebuffer@ are ignored.+-- -- == Valid Usage -- -- -   #VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056# If@@ -698,10 +708,13 @@ -- -   #VUID-VkCommandBufferInheritanceInfo-pNext-pNext# Each @pNext@ --     member of any structure (including this one) in the @pNext@ chain --     /must/ be either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD', --     'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT', --     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR',+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV', --     or---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX' -- -- -   #VUID-VkCommandBufferInheritanceInfo-sType-unique# The @sType@ value --     of each struct in the @pNext@ chain /must/ be unique@@ -726,21 +739,16 @@   , -- | @renderPass@ is a 'Vulkan.Core10.Handles.RenderPass' object defining     -- which render passes the 'Vulkan.Core10.Handles.CommandBuffer' will be     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>-    -- with and /can/ be executed within. If the-    -- 'Vulkan.Core10.Handles.CommandBuffer' will not be executed within a-    -- render pass instance, @renderPass@ is ignored.+    -- with and /can/ be executed within.     renderPass :: RenderPass   , -- | @subpass@ is the index of the subpass within the render pass instance     -- that the 'Vulkan.Core10.Handles.CommandBuffer' will be executed within.-    -- If the 'Vulkan.Core10.Handles.CommandBuffer' will not be executed within-    -- a render pass instance, @subpass@ is ignored.     subpass :: Word32   , -- | @framebuffer@ /can/ refer to the 'Vulkan.Core10.Handles.Framebuffer'     -- object that the 'Vulkan.Core10.Handles.CommandBuffer' will be rendering     -- to if it is executed within a render pass instance. It /can/ be     -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' if the framebuffer is not-    -- known, or if the 'Vulkan.Core10.Handles.CommandBuffer' will not be-    -- executed within a render pass instance.+    -- known.     --     -- Note     --@@ -788,6 +796,9 @@   getNext CommandBufferInheritanceInfo{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandBufferInheritanceInfo e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f+    | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f+    | Just Refl <- eqT @e @CommandBufferInheritanceRenderingInfoKHR = Just f     | Just Refl <- eqT @e @CommandBufferInheritanceViewportScissorInfoNV = Just f     | Just Refl <- eqT @e @CommandBufferInheritanceRenderPassTransformInfoQCOM = Just f     | Just Refl <- eqT @e @CommandBufferInheritanceConditionalRenderingInfoEXT = Just f@@ -845,22 +856,45 @@ -- -- == Valid Usage ----- -   #VUID-VkCommandBufferBeginInfo-flags-00053# If @flags@ contains---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT',---     the @renderPass@ member of @pInheritanceInfo@ /must/ be a valid---     'Vulkan.Core10.Handles.RenderPass'------ -   #VUID-VkCommandBufferBeginInfo-flags-00054# If @flags@ contains---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT',---     the @subpass@ member of @pInheritanceInfo@ /must/ be a valid subpass---     index within the @renderPass@ member of @pInheritanceInfo@--- -- -   #VUID-VkCommandBufferBeginInfo-flags-00055# If @flags@ contains --     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT', --     the @framebuffer@ member of @pInheritanceInfo@ /must/ be either --     'Vulkan.Core10.APIConstants.NULL_HANDLE', or a valid --     'Vulkan.Core10.Handles.Framebuffer' that is compatible with the --     @renderPass@ member of @pInheritanceInfo@+--+-- -   #VUID-VkCommandBufferBeginInfo-flags-06000# If @flags@ contains+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+--     and the @renderPass@ member of @pInheritanceInfo@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @renderPass@ /must/ be a+--     valid 'Vulkan.Core10.Handles.RenderPass'+--+-- -   #VUID-VkCommandBufferBeginInfo-flags-06001# If @flags@ contains+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+--     and the @renderPass@ member of @pInheritanceInfo@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @subpass@ member of+--     @pInheritanceInfo@ /must/ be a valid subpass index within the+--     @renderPass@ member of @pInheritanceInfo@+--+-- -   #VUID-VkCommandBufferBeginInfo-flags-06002# If @flags@ contains+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+--     and the @renderPass@ member of @pInheritanceInfo@ is+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain of+--     @pInheritanceInfo@ /must/ include a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'+--     structure+--+-- -   #VUID-VkCommandBufferBeginInfo-flags-06003# If @flags@ contains+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT',+--     the @renderPass@ member of @pInheritanceInfo@ is+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @pNext@ chain of+--     @pInheritanceInfo@ includes a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure, the @colorAttachmentCount@ member of that structure+--     /must/ be equal to the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@colorAttachmentCount@ -- -- == Valid Usage (Implicit) --
src/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -368,10424 +368,11667 @@ --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then pipeline’s --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT'::@provokingVertexMode@ --     /must/ be the same as that of any other pipelines previously bound---     to this bind point within the current renderpass instance, including---     any pipeline already bound when beginning the renderpass instance------ -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04949# If---     @pipelineBindPoint@ is---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04950# If---     @pipelineBindPoint@ is---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',---     @pipeline@ /must/ be a subpass shading pipeline------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBindPipeline-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBindPipeline-pipelineBindPoint-parameter#---     @pipelineBindPoint@ /must/ be a valid---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value------ -   #VUID-vkCmdBindPipeline-pipeline-parameter# @pipeline@ /must/ be a---     valid 'Vulkan.Core10.Handles.Pipeline' handle------ -   #VUID-vkCmdBindPipeline-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-vkCmdBindPipeline-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdBindPipeline-commonparent# Both of @commandBuffer@, and---     @pipeline@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Pipeline',--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'-cmdBindPipeline :: forall io-                 . (MonadIO io)-                => -- | @commandBuffer@ is the command buffer that the pipeline will be bound-                   -- to.-                   CommandBuffer-                -> -- | @pipelineBindPoint@ is a-                   -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value-                   -- specifying to which bind point the pipeline is bound. Binding one does-                   -- not disturb the others.-                   PipelineBindPoint-                -> -- | @pipeline@ is the pipeline to be bound.-                   Pipeline-                -> io ()-cmdBindPipeline commandBuffer pipelineBindPoint pipeline = liftIO $ do-  let vkCmdBindPipelinePtr = pVkCmdBindPipeline (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdBindPipelinePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindPipeline is null" Nothing Nothing-  let vkCmdBindPipeline' = mkVkCmdBindPipeline vkCmdBindPipelinePtr-  traceAroundEvent "vkCmdBindPipeline" (vkCmdBindPipeline' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (pipeline))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetViewport-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()---- | vkCmdSetViewport - Set the viewport dynamically for a command buffer------ = Description------ This command sets the viewport transformation parameters state for--- subsequent drawing commands when the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' set in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pViewports@--- values used to create the currently active pipeline.------ The viewport parameters taken from element i of @pViewports@ replace the--- current state for the viewport index @firstViewport@ + i, for i in [0,--- @viewportCount@).------ == Valid Usage------ -   #VUID-vkCmdSetViewport-firstViewport-01223# The sum of---     @firstViewport@ and @viewportCount@ /must/ be between @1@ and---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,---     inclusive------ -   #VUID-vkCmdSetViewport-firstViewport-01224# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>---     feature is not enabled, @firstViewport@ /must/ be @0@------ -   #VUID-vkCmdSetViewport-viewportCount-01225# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>---     feature is not enabled, @viewportCount@ /must/ be @1@------ -   #VUID-vkCmdSetViewport-commandBuffer-04821# @commandBuffer@ /must/---     not have---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@---     enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetViewport-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetViewport-pViewports-parameter# @pViewports@ /must/ be---     a valid pointer to an array of @viewportCount@ valid---     'Vulkan.Core10.Pipeline.Viewport' structures------ -   #VUID-vkCmdSetViewport-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-vkCmdSetViewport-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdSetViewport-viewportCount-arraylength# @viewportCount@---     /must/ be greater than @0@------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Pipeline.Viewport'-cmdSetViewport :: forall io-                . (MonadIO io)-               => -- | @commandBuffer@ is the command buffer into which the command will be-                  -- recorded.-                  CommandBuffer-               -> -- | @firstViewport@ is the index of the first viewport whose parameters are-                  -- updated by the command.-                  ("firstViewport" ::: Word32)-               -> -- | @pViewports@ is a pointer to an array of-                  -- 'Vulkan.Core10.Pipeline.Viewport' structures specifying viewport-                  -- parameters.-                  ("viewports" ::: Vector Viewport)-               -> io ()-cmdSetViewport commandBuffer firstViewport viewports = liftIO . evalContT $ do-  let vkCmdSetViewportPtr = pVkCmdSetViewport (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdSetViewportPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewport is null" Nothing Nothing-  let vkCmdSetViewport' = mkVkCmdSetViewport vkCmdSetViewportPtr-  pPViewports <- ContT $ allocaBytes @Viewport ((Data.Vector.length (viewports)) * 24)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)-  lift $ traceAroundEvent "vkCmdSetViewport" (vkCmdSetViewport' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetScissor-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()---- | vkCmdSetScissor - Set scissor rectangles dynamically for a command--- buffer------ = Description------ The scissor rectangles taken from element i of @pScissors@ replace the--- current state for the scissor index @firstScissor@ + i, for i in [0,--- @scissorCount@).------ This command sets the scissor rectangles for subsequent drawing commands--- when the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' set in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pScissors@--- values used to create the currently active pipeline.------ == Valid Usage------ -   #VUID-vkCmdSetScissor-firstScissor-00592# The sum of @firstScissor@---     and @scissorCount@ /must/ be between @1@ and---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,---     inclusive------ -   #VUID-vkCmdSetScissor-firstScissor-00593# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>---     feature is not enabled, @firstScissor@ /must/ be @0@------ -   #VUID-vkCmdSetScissor-scissorCount-00594# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>---     feature is not enabled, @scissorCount@ /must/ be @1@------ -   #VUID-vkCmdSetScissor-x-00595# The @x@ and @y@ members of @offset@---     member of any element of @pScissors@ /must/ be greater than or equal---     to @0@------ -   #VUID-vkCmdSetScissor-offset-00596# Evaluation of (@offset.x@ +---     @extent.width@) /must/ not cause a signed integer addition overflow---     for any element of @pScissors@------ -   #VUID-vkCmdSetScissor-offset-00597# Evaluation of (@offset.y@ +---     @extent.height@) /must/ not cause a signed integer addition overflow---     for any element of @pScissors@------ -   #VUID-vkCmdSetScissor-viewportScissor2D-04789# If this command is---     recorded in a secondary command buffer with---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@---     enabled, then this function /must/ not be called------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetScissor-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetScissor-pScissors-parameter# @pScissors@ /must/ be a---     valid pointer to an array of @scissorCount@---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures------ -   #VUID-vkCmdSetScissor-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-vkCmdSetScissor-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdSetScissor-scissorCount-arraylength# @scissorCount@---     /must/ be greater than @0@------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.Rect2D'-cmdSetScissor :: forall io-               . (MonadIO io)-              => -- | @commandBuffer@ is the command buffer into which the command will be-                 -- recorded.-                 CommandBuffer-              -> -- | @firstScissor@ is the index of the first scissor whose state is updated-                 -- by the command.-                 ("firstScissor" ::: Word32)-              -> -- | @pScissors@ is a pointer to an array of-                 -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining scissor-                 -- rectangles.-                 ("scissors" ::: Vector Rect2D)-              -> io ()-cmdSetScissor commandBuffer firstScissor scissors = liftIO . evalContT $ do-  let vkCmdSetScissorPtr = pVkCmdSetScissor (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdSetScissorPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissor is null" Nothing Nothing-  let vkCmdSetScissor' = mkVkCmdSetScissor vkCmdSetScissorPtr-  pPScissors <- ContT $ allocaBytes @Rect2D ((Data.Vector.length (scissors)) * 16)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)-  lift $ traceAroundEvent "vkCmdSetScissor" (vkCmdSetScissor' (commandBufferHandle (commandBuffer)) (firstScissor) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetLineWidth-  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> IO ()---- | vkCmdSetLineWidth - Set line width dynamically for a command buffer------ = Description------ This command sets the line width for subsequent drawing commands when--- the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' set in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@lineWidth@--- value used to create the currently active pipeline.------ == Valid Usage------ -   #VUID-vkCmdSetLineWidth-lineWidth-00788# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-wideLines wide lines>---     feature is not enabled, @lineWidth@ /must/ be @1.0@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetLineWidth-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetLineWidth-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-vkCmdSetLineWidth-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdSetLineWidth :: forall io-                 . (MonadIO io)-                => -- | @commandBuffer@ is the command buffer into which the command will be-                   -- recorded.-                   CommandBuffer-                -> -- | @lineWidth@ is the width of rasterized line segments.-                   ("lineWidth" ::: Float)-                -> io ()-cmdSetLineWidth commandBuffer lineWidth = liftIO $ do-  let vkCmdSetLineWidthPtr = pVkCmdSetLineWidth (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdSetLineWidthPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetLineWidth is null" Nothing Nothing-  let vkCmdSetLineWidth' = mkVkCmdSetLineWidth vkCmdSetLineWidthPtr-  traceAroundEvent "vkCmdSetLineWidth" (vkCmdSetLineWidth' (commandBufferHandle (commandBuffer)) (CFloat (lineWidth)))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetDepthBias-  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()---- | vkCmdSetDepthBias - Set depth bias factors and clamp dynamically for a--- command buffer------ = Description------ This command sets the depth bias parameters for subsequent drawing--- commands when the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' set in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the corresponding--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@depthBiasConstantFactor@,--- @depthBiasClamp@, and @depthBiasSlopeFactor@ values used to create the--- currently active pipeline.------ == Valid Usage------ -   #VUID-vkCmdSetDepthBias-depthBiasClamp-00790# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBiasClamp depth bias clamping>---     feature is not enabled, @depthBiasClamp@ /must/ be @0.0@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetDepthBias-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetDepthBias-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-vkCmdSetDepthBias-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdSetDepthBias :: forall io-                 . (MonadIO io)-                => -- | @commandBuffer@ is the command buffer into which the command will be-                   -- recorded.-                   CommandBuffer-                -> -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant-                   -- depth value added to each fragment.-                   ("depthBiasConstantFactor" ::: Float)-                -> -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.-                   ("depthBiasClamp" ::: Float)-                -> -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope-                   -- in depth bias calculations.-                   ("depthBiasSlopeFactor" ::: Float)-                -> io ()-cmdSetDepthBias commandBuffer depthBiasConstantFactor depthBiasClamp depthBiasSlopeFactor = liftIO $ do-  let vkCmdSetDepthBiasPtr = pVkCmdSetDepthBias (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdSetDepthBiasPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBias is null" Nothing Nothing-  let vkCmdSetDepthBias' = mkVkCmdSetDepthBias vkCmdSetDepthBiasPtr-  traceAroundEvent "vkCmdSetDepthBias" (vkCmdSetDepthBias' (commandBufferHandle (commandBuffer)) (CFloat (depthBiasConstantFactor)) (CFloat (depthBiasClamp)) (CFloat (depthBiasSlopeFactor)))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetBlendConstants-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()---- | vkCmdSetBlendConstants - Set the values of blend constants------ = Description------ This command sets blend constants for subsequent drawing commands when--- the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' set in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@blendConstants@--- values used to create the currently active pipeline.------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetBlendConstants-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetBlendConstants-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-vkCmdSetBlendConstants-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdSetBlendConstants :: forall io-                      . (MonadIO io)-                     => -- | @commandBuffer@ is the command buffer into which the command will be-                        -- recorded.-                        CommandBuffer-                     -> -- | @blendConstants@ is a pointer to an array of four values specifying the-                        -- Rc, Gc, Bc, and Ac components of the blend constant color used in-                        -- blending, depending on the-                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.-                        ("blendConstants" ::: (Float, Float, Float, Float))-                     -> io ()-cmdSetBlendConstants commandBuffer blendConstants = liftIO . evalContT $ do-  let vkCmdSetBlendConstantsPtr = pVkCmdSetBlendConstants (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdSetBlendConstantsPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetBlendConstants is null" Nothing Nothing-  let vkCmdSetBlendConstants' = mkVkCmdSetBlendConstants vkCmdSetBlendConstantsPtr-  pBlendConstants <- ContT $ allocaBytes @(FixedArray 4 CFloat) 16-  let pBlendConstants' = lowerArrayPtr pBlendConstants-  lift $ case (blendConstants) of-    (e0, e1, e2, e3) -> do-      poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))-      poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))-      poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))-      poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-  lift $ traceAroundEvent "vkCmdSetBlendConstants" (vkCmdSetBlendConstants' (commandBufferHandle (commandBuffer)) (pBlendConstants))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetDepthBounds-  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()---- | vkCmdSetDepthBounds - Set depth bounds range dynamically for a command--- buffer------ = Description------ This command sets the depth bounds range for subsequent drawing commands--- when the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' set in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@minDepthBounds@--- and--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@maxDepthBounds@--- values used to create the currently active pipeline.------ == Valid Usage------ -   #VUID-vkCmdSetDepthBounds-minDepthBounds-00600# Unless the---     @VK_EXT_depth_range_unrestricted@ extension is enabled---     @minDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive------ -   #VUID-vkCmdSetDepthBounds-maxDepthBounds-00601# Unless the---     @VK_EXT_depth_range_unrestricted@ extension is enabled---     @maxDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetDepthBounds-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetDepthBounds-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-vkCmdSetDepthBounds-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdSetDepthBounds :: forall io-                   . (MonadIO io)-                  => -- | @commandBuffer@ is the command buffer into which the command will be-                     -- recorded.-                     CommandBuffer-                  -> -- | @minDepthBounds@ is the minimum depth bound.-                     ("minDepthBounds" ::: Float)-                  -> -- | @maxDepthBounds@ is the maximum depth bound.-                     ("maxDepthBounds" ::: Float)-                  -> io ()-cmdSetDepthBounds commandBuffer minDepthBounds maxDepthBounds = liftIO $ do-  let vkCmdSetDepthBoundsPtr = pVkCmdSetDepthBounds (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdSetDepthBoundsPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBounds is null" Nothing Nothing-  let vkCmdSetDepthBounds' = mkVkCmdSetDepthBounds vkCmdSetDepthBoundsPtr-  traceAroundEvent "vkCmdSetDepthBounds" (vkCmdSetDepthBounds' (commandBufferHandle (commandBuffer)) (CFloat (minDepthBounds)) (CFloat (maxDepthBounds)))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetStencilCompareMask-  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()---- | vkCmdSetStencilCompareMask - Set stencil compare mask dynamically for a--- command buffer------ = Description------ This command sets the stencil compare mask for subsequent drawing--- commands when the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'--- set in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@compareMask@--- value used to create the currently active pipeline, for both front and--- back faces.------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetStencilCompareMask-faceMask-parameter# @faceMask@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values------ -   #VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask#---     @faceMask@ /must/ not be @0@------ -   #VUID-vkCmdSetStencilCompareMask-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-vkCmdSetStencilCompareMask-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'-cmdSetStencilCompareMask :: forall io-                          . (MonadIO io)-                         => -- | @commandBuffer@ is the command buffer into which the command will be-                            -- recorded.-                            CommandBuffer-                         -> -- | @faceMask@ is a bitmask of-                            -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying-                            -- the set of stencil state for which to update the compare mask.-                            ("faceMask" ::: StencilFaceFlags)-                         -> -- | @compareMask@ is the new value to use as the stencil compare mask.-                            ("compareMask" ::: Word32)-                         -> io ()-cmdSetStencilCompareMask commandBuffer faceMask compareMask = liftIO $ do-  let vkCmdSetStencilCompareMaskPtr = pVkCmdSetStencilCompareMask (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdSetStencilCompareMaskPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilCompareMask is null" Nothing Nothing-  let vkCmdSetStencilCompareMask' = mkVkCmdSetStencilCompareMask vkCmdSetStencilCompareMaskPtr-  traceAroundEvent "vkCmdSetStencilCompareMask" (vkCmdSetStencilCompareMask' (commandBufferHandle (commandBuffer)) (faceMask) (compareMask))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetStencilWriteMask-  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()---- | vkCmdSetStencilWriteMask - Set stencil write mask dynamically for a--- command buffer------ = Description------ This command sets the stencil write mask for subsequent drawing commands--- when the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' set--- in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@writeMask@--- value used to create the currently active pipeline, for both front and--- back faces.------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetStencilWriteMask-faceMask-parameter# @faceMask@ /must/---     be a valid combination of---     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values------ -   #VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask# @faceMask@---     /must/ not be @0@------ -   #VUID-vkCmdSetStencilWriteMask-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-vkCmdSetStencilWriteMask-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'-cmdSetStencilWriteMask :: forall io-                        . (MonadIO io)-                       => -- | @commandBuffer@ is the command buffer into which the command will be-                          -- recorded.-                          CommandBuffer-                       -> -- | @faceMask@ is a bitmask of-                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying-                          -- the set of stencil state for which to update the write mask, as-                          -- described above for 'cmdSetStencilCompareMask'.-                          ("faceMask" ::: StencilFaceFlags)-                       -> -- | @writeMask@ is the new value to use as the stencil write mask.-                          ("writeMask" ::: Word32)-                       -> io ()-cmdSetStencilWriteMask commandBuffer faceMask writeMask = liftIO $ do-  let vkCmdSetStencilWriteMaskPtr = pVkCmdSetStencilWriteMask (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdSetStencilWriteMaskPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilWriteMask is null" Nothing Nothing-  let vkCmdSetStencilWriteMask' = mkVkCmdSetStencilWriteMask vkCmdSetStencilWriteMaskPtr-  traceAroundEvent "vkCmdSetStencilWriteMask" (vkCmdSetStencilWriteMask' (commandBufferHandle (commandBuffer)) (faceMask) (writeMask))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetStencilReference-  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()---- | vkCmdSetStencilReference - Set stencil reference value dynamically for a--- command buffer------ = Description------ This command sets the stencil reference value for subsequent drawing--- commands when the graphics pipeline is created with--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' set--- in--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.--- Otherwise, this state is specified by the--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@reference@--- value used to create the currently active pipeline, for both front and--- back faces.------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetStencilReference-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetStencilReference-faceMask-parameter# @faceMask@ /must/---     be a valid combination of---     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values------ -   #VUID-vkCmdSetStencilReference-faceMask-requiredbitmask# @faceMask@---     /must/ not be @0@------ -   #VUID-vkCmdSetStencilReference-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-vkCmdSetStencilReference-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'-cmdSetStencilReference :: forall io-                        . (MonadIO io)-                       => -- | @commandBuffer@ is the command buffer into which the command will be-                          -- recorded.-                          CommandBuffer-                       -> -- | @faceMask@ is a bitmask of-                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying-                          -- the set of stencil state for which to update the reference value, as-                          -- described above for 'cmdSetStencilCompareMask'.-                          ("faceMask" ::: StencilFaceFlags)-                       -> -- | @reference@ is the new value to use as the stencil reference value.-                          ("reference" ::: Word32)-                       -> io ()-cmdSetStencilReference commandBuffer faceMask reference = liftIO $ do-  let vkCmdSetStencilReferencePtr = pVkCmdSetStencilReference (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdSetStencilReferencePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilReference is null" Nothing Nothing-  let vkCmdSetStencilReference' = mkVkCmdSetStencilReference vkCmdSetStencilReferencePtr-  traceAroundEvent "vkCmdSetStencilReference" (vkCmdSetStencilReference' (commandBufferHandle (commandBuffer)) (faceMask) (reference))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBindDescriptorSets-  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()---- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer------ = Description------ 'cmdBindDescriptorSets' causes the sets numbered [@firstSet@..--- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in--- @pDescriptorSets@[0..descriptorSetCount-1] for subsequent--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>--- set by @pipelineBindPoint@. Any bindings that were previously applied--- via these sets are no longer valid.------ Once bound, a descriptor set affects rendering of subsequent commands--- that interact with the given pipeline type in the command buffer until--- either a different set is bound to the same set number, or the set is--- disturbed as described in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.------ A compatible descriptor set /must/ be bound for all set numbers that any--- shaders in a pipeline access, at the time that a drawing or dispatching--- command is recorded to execute using that pipeline. However, if none of--- the shaders in a pipeline statically use any bindings with a particular--- set number, then no descriptor set need be bound for that set number,--- even if the pipeline layout includes a non-trivial descriptor set layout--- for that set number.------ If any of the sets being bound include dynamic uniform or storage--- buffers, then @pDynamicOffsets@ includes one element for each array--- element in each dynamic descriptor type binding in each set. Values are--- taken from @pDynamicOffsets@ in an order such that all entries for set N--- come before set N+1; within a set, entries are ordered by the binding--- numbers in the descriptor set layouts; and within a binding array,--- elements are in order. @dynamicOffsetCount@ /must/ equal the total--- number of dynamic descriptors in the sets being bound.------ The effective offset used for dynamic uniform and storage buffer--- bindings is the sum of the relative offset taken from @pDynamicOffsets@,--- and the base address of the buffer plus base offset in the descriptor--- set. The range of the dynamic uniform and storage buffer bindings is the--- buffer range as specified in the descriptor set.------ Each of the @pDescriptorSets@ /must/ be compatible with the pipeline--- layout specified by @layout@. The layout used to program the bindings--- /must/ also be compatible with the pipeline used in subsequent--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>--- with that pipeline type, as defined in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>--- section.------ The descriptor set contents bound by a call to 'cmdBindDescriptorSets'--- /may/ be consumed at the following times:------ -   For descriptor bindings created with the---     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'---     bit set, the contents /may/ be consumed when the command buffer is---     submitted to a queue, or during shader execution of the resulting---     draws and dispatches, or any time in between. Otherwise,------ -   during host execution of the command, or during shader execution of---     the resulting draws and dispatches, or any time in between.------ Thus, the contents of a descriptor set binding /must/ not be altered--- (overwritten by an update command, or freed) between the first point in--- time that it /may/ be consumed, and when the command completes executing--- on the queue.------ The contents of @pDynamicOffsets@ are consumed immediately during--- execution of 'cmdBindDescriptorSets'. Once all pending uses have--- completed, it is legal to update and reuse a descriptor set.------ == Valid Usage------ -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358# Each element of---     @pDescriptorSets@ /must/ have been allocated with a---     'Vulkan.Core10.Handles.DescriptorSetLayout' that matches (is the---     same as, or identically defined as) the---     'Vulkan.Core10.Handles.DescriptorSetLayout' at set /n/ in @layout@,---     where /n/ is the sum of @firstSet@ and the index into---     @pDescriptorSets@------ -   #VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359#---     @dynamicOffsetCount@ /must/ be equal to the total number of dynamic---     descriptors in @pDescriptorSets@------ -   #VUID-vkCmdBindDescriptorSets-firstSet-00360# The sum of @firstSet@---     and @descriptorSetCount@ /must/ be less than or equal to---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@---     provided when @layout@ was created------ -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361#---     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s---     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family------ -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971# Each element of---     @pDynamicOffsets@ which corresponds to a descriptor binding with---     type---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'---     /must/ be a multiple of---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minUniformBufferOffsetAlignment@------ -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972# Each element of---     @pDynamicOffsets@ which corresponds to a descriptor binding with---     type---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'---     /must/ be a multiple of---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minStorageBufferOffsetAlignment@------ -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979# For each---     dynamic uniform or storage buffer binding in @pDescriptorSets@, the---     sum of the effective offset, as defined above, and the range of the---     binding /must/ be less than or equal to the size of the buffer------ -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616# Each element of---     @pDescriptorSets@ /must/ not have been allocated from a---     'Vulkan.Core10.Handles.DescriptorPool' with the---     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'---     flag set------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBindDescriptorSets-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter#---     @pipelineBindPoint@ /must/ be a valid---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value------ -   #VUID-vkCmdBindDescriptorSets-layout-parameter# @layout@ /must/ be a---     valid 'Vulkan.Core10.Handles.PipelineLayout' handle------ -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter#---     @pDescriptorSets@ /must/ be a valid pointer to an array of---     @descriptorSetCount@ valid 'Vulkan.Core10.Handles.DescriptorSet'---     handles------ -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter# If---     @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a valid---     pointer to an array of @dynamicOffsetCount@ @uint32_t@ values------ -   #VUID-vkCmdBindDescriptorSets-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-vkCmdBindDescriptorSets-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength#---     @descriptorSetCount@ /must/ be greater than @0@------ -   #VUID-vkCmdBindDescriptorSets-commonparent# Each of @commandBuffer@,---     @layout@, and the elements of @pDescriptorSets@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Handles.DescriptorSet',--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',--- 'Vulkan.Core10.Handles.PipelineLayout'-cmdBindDescriptorSets :: forall io-                       . (MonadIO io)-                      => -- | @commandBuffer@ is the command buffer that the descriptor sets will be-                         -- bound to.-                         CommandBuffer-                      -> -- | @pipelineBindPoint@ is a-                         -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' indicating the-                         -- type of the pipeline that will use the descriptors. There is a separate-                         -- set of bind points for each pipeline type, so binding one does not-                         -- disturb the others.-                         PipelineBindPoint-                      -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to-                         -- program the bindings.-                         PipelineLayout-                      -> -- | @firstSet@ is the set number of the first descriptor set to be bound.-                         ("firstSet" ::: Word32)-                      -> -- | @pDescriptorSets@ is a pointer to an array of handles to-                         -- 'Vulkan.Core10.Handles.DescriptorSet' objects describing the descriptor-                         -- sets to bind to.-                         ("descriptorSets" ::: Vector DescriptorSet)-                      -> -- | @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values-                         -- specifying dynamic offsets.-                         ("dynamicOffsets" ::: Vector Word32)-                      -> io ()-cmdBindDescriptorSets commandBuffer pipelineBindPoint layout firstSet descriptorSets dynamicOffsets = liftIO . evalContT $ do-  let vkCmdBindDescriptorSetsPtr = pVkCmdBindDescriptorSets (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdBindDescriptorSetsPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorSets is null" Nothing Nothing-  let vkCmdBindDescriptorSets' = mkVkCmdBindDescriptorSets vkCmdBindDescriptorSetsPtr-  pPDescriptorSets <- ContT $ allocaBytes @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)-  pPDynamicOffsets <- ContT $ allocaBytes @Word32 ((Data.Vector.length (dynamicOffsets)) * 4)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicOffsets `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (dynamicOffsets)-  lift $ traceAroundEvent "vkCmdBindDescriptorSets" (vkCmdBindDescriptorSets' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (layout) (firstSet) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32)) (pPDescriptorSets) ((fromIntegral (Data.Vector.length $ (dynamicOffsets)) :: Word32)) (pPDynamicOffsets))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBindIndexBuffer-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()---- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer------ == Valid Usage------ -   #VUID-vkCmdBindIndexBuffer-offset-00431# @offset@ /must/ be less---     than the size of @buffer@------ -   #VUID-vkCmdBindIndexBuffer-offset-00432# The sum of @offset@ and the---     address of the range of 'Vulkan.Core10.Handles.DeviceMemory' object---     that is backing @buffer@, /must/ be a multiple of the type indicated---     by @indexType@------ -   #VUID-vkCmdBindIndexBuffer-buffer-00433# @buffer@ /must/ have been---     created with the---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'---     flag------ -   #VUID-vkCmdBindIndexBuffer-buffer-00434# If @buffer@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdBindIndexBuffer-indexType-02507# @indexType@ /must/ not---     be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'------ -   #VUID-vkCmdBindIndexBuffer-indexType-02765# If @indexType@ is---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBindIndexBuffer-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBindIndexBuffer-buffer-parameter# @buffer@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdBindIndexBuffer-indexType-parameter# @indexType@ /must/---     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value------ -   #VUID-vkCmdBindIndexBuffer-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-vkCmdBindIndexBuffer-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdBindIndexBuffer-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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Enums.IndexType.IndexType'-cmdBindIndexBuffer :: forall io-                    . (MonadIO io)-                   => -- | @commandBuffer@ is the command buffer into which the command is-                      -- recorded.-                      CommandBuffer-                   -> -- | @buffer@ is the buffer being bound.-                      Buffer-                   -> -- | @offset@ is the starting offset in bytes within @buffer@ used in index-                      -- buffer address calculations.-                      ("offset" ::: DeviceSize)-                   -> -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value-                      -- specifying the size of the indices.-                      IndexType-                   -> io ()-cmdBindIndexBuffer commandBuffer buffer offset indexType = liftIO $ do-  let vkCmdBindIndexBufferPtr = pVkCmdBindIndexBuffer (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdBindIndexBufferPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindIndexBuffer is null" Nothing Nothing-  let vkCmdBindIndexBuffer' = mkVkCmdBindIndexBuffer vkCmdBindIndexBufferPtr-  traceAroundEvent "vkCmdBindIndexBuffer" (vkCmdBindIndexBuffer' (commandBufferHandle (commandBuffer)) (buffer) (offset) (indexType))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBindVertexBuffers-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()---- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer------ = Description------ The values taken from elements i of @pBuffers@ and @pOffsets@ replace--- the current state for the vertex input binding @firstBinding@ + i, for i--- in [0, @bindingCount@). The vertex input binding is updated to start at--- the offset indicated by @pOffsets@[i] from the start of the buffer--- @pBuffers@[i]. All vertex input attributes that use each of these--- bindings will use these updated addresses in their address calculations--- for subsequent drawing commands. If the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>--- feature is enabled, elements of @pBuffers@ /can/ be--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by the--- vertex shader. If a vertex input attribute is bound to a vertex input--- binding that is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the values--- taken from memory are considered to be zero, and missing G, B, or A--- components are--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.------ == Valid Usage------ -   #VUID-vkCmdBindVertexBuffers-firstBinding-00624# @firstBinding@---     /must/ be less than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@------ -   #VUID-vkCmdBindVertexBuffers-firstBinding-00625# The sum of---     @firstBinding@ and @bindingCount@ /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@------ -   #VUID-vkCmdBindVertexBuffers-pOffsets-00626# All elements of---     @pOffsets@ /must/ be less than the size of the corresponding element---     in @pBuffers@------ -   #VUID-vkCmdBindVertexBuffers-pBuffers-00627# All elements of---     @pBuffers@ /must/ have been created with the---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'---     flag------ -   #VUID-vkCmdBindVertexBuffers-pBuffers-00628# Each element of---     @pBuffers@ that is non-sparse /must/ be bound completely and---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdBindVertexBuffers-pBuffers-04001# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>---     feature is not enabled, all elements of @pBuffers@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdBindVertexBuffers-pBuffers-04002# If an element of---     @pBuffers@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the---     corresponding element of @pOffsets@ /must/ be zero------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBindVertexBuffers-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBindVertexBuffers-pBuffers-parameter# @pBuffers@ /must/---     be a valid pointer to an array of @bindingCount@ valid or---     'Vulkan.Core10.APIConstants.NULL_HANDLE'---     'Vulkan.Core10.Handles.Buffer' handles------ -   #VUID-vkCmdBindVertexBuffers-pOffsets-parameter# @pOffsets@ /must/---     be a valid pointer to an array of @bindingCount@---     'Vulkan.Core10.FundamentalTypes.DeviceSize' values------ -   #VUID-vkCmdBindVertexBuffers-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-vkCmdBindVertexBuffers-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdBindVertexBuffers-bindingCount-arraylength#---     @bindingCount@ /must/ be greater than @0@------ -   #VUID-vkCmdBindVertexBuffers-commonparent# Both of @commandBuffer@,---     and the elements of @pBuffers@ that are valid handles of non-ignored---     parameters /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdBindVertexBuffers :: forall io-                      . (MonadIO io)-                     => -- | @commandBuffer@ is the command buffer into which the command is-                        -- recorded.-                        CommandBuffer-                     -> -- | @firstBinding@ is the index of the first vertex input binding whose-                        -- state is updated by the command.-                        ("firstBinding" ::: Word32)-                     -> -- | @pBuffers@ is a pointer to an array of buffer handles.-                        ("buffers" ::: Vector Buffer)-                     -> -- | @pOffsets@ is a pointer to an array of buffer offsets.-                        ("offsets" ::: Vector DeviceSize)-                     -> io ()-cmdBindVertexBuffers commandBuffer firstBinding buffers offsets = liftIO . evalContT $ do-  let vkCmdBindVertexBuffersPtr = pVkCmdBindVertexBuffers (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdBindVertexBuffersPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindVertexBuffers is null" Nothing Nothing-  let vkCmdBindVertexBuffers' = mkVkCmdBindVertexBuffers vkCmdBindVertexBuffersPtr-  let pBuffersLength = Data.Vector.length $ (buffers)-  lift $ unless ((Data.Vector.length $ (offsets)) == pBuffersLength) $-    throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing-  pPBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (buffers)) * 8)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)-  pPOffsets <- ContT $ allocaBytes @DeviceSize ((Data.Vector.length (offsets)) * 8)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)-  lift $ traceAroundEvent "vkCmdBindVertexBuffers" (vkCmdBindVertexBuffers' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdDraw-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()---- | vkCmdDraw - Draw primitives------ = Description------ When the command is executed, primitives are assembled using the current--- primitive topology and @vertexCount@ consecutive vertex indices with the--- first @vertexIndex@ value equal to @firstVertex@. The primitives are--- drawn @instanceCount@ times with @instanceIndex@ starting with--- @firstInstance@ and increasing sequentially for each instance. The--- assembled primitives execute the bound graphics pipeline.------ == Valid Usage------ -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02692# If a 'Vulkan.Core10.Handles.ImageView'---     is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdDraw-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDraw-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDraw-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-vkCmdDraw-OpTypeImage-06423# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being written as a storage image---     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDraw-OpTypeImage-06424# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or---     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02699# Descriptors in each bound descriptor---     set, specified via '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------ -   #VUID-vkCmdDraw-None-02700# A valid pipeline /must/ be bound to the---     pipeline bind point used by this command------ -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDraw-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDraw-commandBuffer-02707# If @commandBuffer@ is an---     unprotected command buffer, 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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02686# Every input attachment used by the---     current subpass /must/ be bound to the pipeline via a descriptor set------ -   #VUID-vkCmdDraw-None-04584# Image subresources used as attachments---     in the current render pass /must/ not be accessed in any way other---     than as an attachment by this command, except for cases involving---     read-only access to depth\/stencil attachments as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>---     chapter------ -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-viewportCount-03417# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@---     of the pipeline------ -   #VUID-vkCmdDraw-scissorCount-03418# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@---     of the pipeline------ -   #VUID-vkCmdDraw-viewportCount-03419# If the bound graphics pipeline---     state was created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic states enabled then both---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     and---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'------ -   #VUID-vkCmdDraw-viewportCount-04137# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDraw-viewportCount-04138# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDraw-viewportCount-04139# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDraw-viewportCount-04140# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDraw-primitiveTopology-03420# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @primitiveTopology@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ be of the same---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>---     as the pipeline---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@---     state------ -   #VUID-vkCmdDraw-None-04875# If the bound graphics pipeline state was---     created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDraw-None-04876# If the bound graphics pipeline state was---     created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDraw-None-04877# If the bound graphics pipeline state was---     created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDraw-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-vkCmdDraw-None-04879# If the bound graphics pipeline state was---     created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDraw-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_EXT'---     dynamic state enabled, and any of the shader stages of the bound---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,---     then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ be @1@------ -   #VUID-vkCmdDraw-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-vkCmdDraw-rasterizationSamples-04740# If rasterization is not---     disabled in the bound graphics pipeline, and neither the---     @VK_AMD_mixed_attachment_samples@ nor the---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@---     /must/ be the same as the current subpass color and\/or---     depth\/stencil attachments------ -   #VUID-vkCmdDraw-None-04912# If the bound graphics pipeline was---     created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic states enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDraw-pStrides-04913# If the bound graphics pipeline was---     created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ have been called in the current command buffer prior to this---     draw command, and the @pStrides@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ not be @NULL@------ -   #VUID-vkCmdDraw-None-04914# If the bound graphics pipeline state was---     created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a---     protected command buffer, any resource written to by the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not be an unprotected resource------ -   #VUID-vkCmdDraw-commandBuffer-02713# If @commandBuffer@ is a---     protected command buffer, pipeline stages other than the---     framebuffer-space and compute stages in the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not write to any resource------ -   #VUID-vkCmdDraw-commandBuffer-04617# If any of the shader stages of---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind---     point used by this command uses the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>---     capability, then @commandBuffer@ /must/ not be a protected command---     buffer------ -   #VUID-vkCmdDraw-None-04007# All vertex input bindings accessed via---     vertex input variables declared in the vertex shader entry point’s---     interface /must/ have either valid or---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound------ -   #VUID-vkCmdDraw-None-04008# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>---     feature is not enabled, all vertex input bindings accessed via---     vertex input variables declared in the vertex shader entry point’s---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdDraw-None-02721# For a given vertex buffer binding, any---     attribute data fetched /must/ be entirely contained within the---     corresponding vertex buffer binding, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>------ == Valid Usage (Implicit)------ -   #VUID-vkCmdDraw-commandBuffer-parameter# @commandBuffer@ /must/ be a---     valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdDraw-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-vkCmdDraw-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdDraw-renderpass# This command /must/ only be called---     inside of a render pass instance------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdDraw :: forall io-         . (MonadIO io)-        => -- | @commandBuffer@ is the command buffer into which the command is-           -- recorded.-           CommandBuffer-        -> -- | @vertexCount@ is the number of vertices to draw.-           ("vertexCount" ::: Word32)-        -> -- | @instanceCount@ is the number of instances to draw.-           ("instanceCount" ::: Word32)-        -> -- | @firstVertex@ is the index of the first vertex to draw.-           ("firstVertex" ::: Word32)-        -> -- | @firstInstance@ is the instance ID of the first instance to draw.-           ("firstInstance" ::: Word32)-        -> io ()-cmdDraw commandBuffer vertexCount instanceCount firstVertex firstInstance = liftIO $ do-  let vkCmdDrawPtr = pVkCmdDraw (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdDrawPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDraw is null" Nothing Nothing-  let vkCmdDraw' = mkVkCmdDraw vkCmdDrawPtr-  traceAroundEvent "vkCmdDraw" (vkCmdDraw' (commandBufferHandle (commandBuffer)) (vertexCount) (instanceCount) (firstVertex) (firstInstance))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdDrawIndexed-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()---- | vkCmdDrawIndexed - Draw primitives with indexed vertices------ = Description------ When the command is executed, primitives are assembled using the current--- primitive topology and @indexCount@ vertices whose indices are retrieved--- from the index buffer. The index buffer is treated as an array of--- tightly packed unsigned integers of size defined by the--- 'cmdBindIndexBuffer'::@indexType@ parameter with which the buffer was--- bound.------ The first vertex index is at an offset of @firstIndex@ × @indexSize@ +--- @offset@ within the bound index buffer, where @offset@ is the offset--- specified by 'cmdBindIndexBuffer' and @indexSize@ is the byte size of--- the type specified by @indexType@. Subsequent index values are retrieved--- from consecutive locations in the index buffer. Indices are first--- compared to the primitive restart value, then zero extended to 32 bits--- (if the @indexType@ is--- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT' or--- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16') and have--- @vertexOffset@ added to them, before being supplied as the @vertexIndex@--- value.------ The primitives are drawn @instanceCount@ times with @instanceIndex@--- starting with @firstInstance@ and increasing sequentially for each--- instance. The assembled primitives execute the bound graphics pipeline.------ == Valid Usage------ -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdDrawIndexed-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexed-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-OpTypeImage-06423# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being written as a storage image---     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDrawIndexed-OpTypeImage-06424# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or---     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02699# Descriptors in each bound---     descriptor set, specified via '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------ -   #VUID-vkCmdDrawIndexed-None-02700# A valid pipeline /must/ be bound---     to the pipeline bind point used by this command------ -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDrawIndexed-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDrawIndexed-commandBuffer-02707# If @commandBuffer@ is an---     unprotected command buffer, 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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02686# Every input attachment used by---     the current subpass /must/ be bound to the pipeline via a descriptor---     set------ -   #VUID-vkCmdDrawIndexed-None-04584# Image subresources used as---     attachments in the current render pass /must/ not be accessed in any---     way other than as an attachment by this command, except for cases---     involving read-only access to depth\/stencil attachments as---     described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>---     chapter------ -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-viewportCount-03417# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@---     of the pipeline------ -   #VUID-vkCmdDrawIndexed-scissorCount-03418# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@---     of the pipeline------ -   #VUID-vkCmdDrawIndexed-viewportCount-03419# If the bound graphics---     pipeline state was created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic states enabled then both---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     and---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'------ -   #VUID-vkCmdDrawIndexed-viewportCount-04137# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexed-viewportCount-04138# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexed-viewportCount-04139# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexed-viewportCount-04140# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141# If the---     bound graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142# If the---     bound graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexed-primitiveTopology-03420# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @primitiveTopology@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ be of the same---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>---     as the pipeline---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@---     state------ -   #VUID-vkCmdDrawIndexed-None-04875# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexed-None-04876# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexed-None-04877# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-04879# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexed-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_EXT'---     dynamic state enabled, and any of the shader stages of the bound---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,---     then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ be @1@------ -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-rasterizationSamples-04740# If rasterization---     is not disabled in the bound graphics pipeline, and neither the---     @VK_AMD_mixed_attachment_samples@ nor the---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@---     /must/ be the same as the current subpass color and\/or---     depth\/stencil attachments------ -   #VUID-vkCmdDrawIndexed-None-04912# If the bound graphics pipeline---     was created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic states enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDrawIndexed-pStrides-04913# If the bound graphics---     pipeline was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ have been called in the current command buffer prior to this---     draw command, and the @pStrides@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ not be @NULL@------ -   #VUID-vkCmdDrawIndexed-None-04914# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a---     protected command buffer, any resource written to by the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not be an unprotected resource------ -   #VUID-vkCmdDrawIndexed-commandBuffer-02713# If @commandBuffer@ is a---     protected command buffer, pipeline stages other than the---     framebuffer-space and compute stages in the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not write to any resource------ -   #VUID-vkCmdDrawIndexed-commandBuffer-04617# If any of the shader---     stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline---     bind point used by this command uses the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>---     capability, then @commandBuffer@ /must/ not be a protected command---     buffer------ -   #VUID-vkCmdDrawIndexed-None-04007# All vertex input bindings---     accessed via vertex input variables declared in the vertex shader---     entry point’s interface /must/ have either valid or---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound------ -   #VUID-vkCmdDrawIndexed-None-04008# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>---     feature is not enabled, all vertex input bindings accessed via---     vertex input variables declared in the vertex shader entry point’s---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdDrawIndexed-None-02721# For a given vertex buffer---     binding, any attribute data fetched /must/ be entirely contained---     within the corresponding vertex buffer binding, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>------ -   #VUID-vkCmdDrawIndexed-firstIndex-04932# (@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'------ == Valid Usage (Implicit)------ -   #VUID-vkCmdDrawIndexed-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdDrawIndexed-renderpass# This command /must/ only be---     called inside of a render pass instance------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdDrawIndexed :: forall io-                . (MonadIO io)-               => -- | @commandBuffer@ is the command buffer into which the command is-                  -- recorded.-                  CommandBuffer-               -> -- | @indexCount@ is the number of vertices to draw.-                  ("indexCount" ::: Word32)-               -> -- | @instanceCount@ is the number of instances to draw.-                  ("instanceCount" ::: Word32)-               -> -- | @firstIndex@ is the base index within the index buffer.-                  ("firstIndex" ::: Word32)-               -> -- | @vertexOffset@ is the value added to the vertex index before indexing-                  -- into the vertex buffer.-                  ("vertexOffset" ::: Int32)-               -> -- | @firstInstance@ is the instance ID of the first instance to draw.-                  ("firstInstance" ::: Word32)-               -> io ()-cmdDrawIndexed commandBuffer indexCount instanceCount firstIndex vertexOffset firstInstance = liftIO $ do-  let vkCmdDrawIndexedPtr = pVkCmdDrawIndexed (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdDrawIndexedPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexed is null" Nothing Nothing-  let vkCmdDrawIndexed' = mkVkCmdDrawIndexed vkCmdDrawIndexedPtr-  traceAroundEvent "vkCmdDrawIndexed" (vkCmdDrawIndexed' (commandBufferHandle (commandBuffer)) (indexCount) (instanceCount) (firstIndex) (vertexOffset) (firstInstance))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdDrawIndirect-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()---- | vkCmdDrawIndirect - Draw primitives with indirect parameters------ = Description------ 'cmdDrawIndirect' behaves similarly to 'cmdDraw' except that the--- parameters are read by the device from a buffer during execution.--- @drawCount@ draws are executed by the command, with parameters taken--- from @buffer@ starting at @offset@ and increasing by @stride@ bytes for--- each successive draw. The parameters of each draw are encoded in an--- array of 'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures. If--- @drawCount@ is less than or equal to one, @stride@ is ignored.------ == Valid Usage------ -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdDrawIndirect-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndirect-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-OpTypeImage-06423# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being written as a storage image---     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDrawIndirect-OpTypeImage-06424# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or---     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02699# Descriptors in each bound---     descriptor set, specified via '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------ -   #VUID-vkCmdDrawIndirect-None-02700# A valid pipeline /must/ be bound---     to the pipeline bind point used by this command------ -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDrawIndirect-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDrawIndirect-commandBuffer-02707# If @commandBuffer@ is---     an unprotected command buffer, 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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02686# Every input attachment used by---     the current subpass /must/ be bound to the pipeline via a descriptor---     set------ -   #VUID-vkCmdDrawIndirect-None-04584# Image subresources used as---     attachments in the current render pass /must/ not be accessed in any---     way other than as an attachment by this command, except for cases---     involving read-only access to depth\/stencil attachments as---     described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>---     chapter------ -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-viewportCount-03417# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@---     of the pipeline------ -   #VUID-vkCmdDrawIndirect-scissorCount-03418# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@---     of the pipeline------ -   #VUID-vkCmdDrawIndirect-viewportCount-03419# If the bound graphics---     pipeline state was created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic states enabled then both---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     and---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'------ -   #VUID-vkCmdDrawIndirect-viewportCount-04137# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndirect-viewportCount-04138# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndirect-viewportCount-04139# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndirect-viewportCount-04140# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141# If the---     bound graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142# If the---     bound graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndirect-primitiveTopology-03420# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @primitiveTopology@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ be of the same---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>---     as the pipeline---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@---     state------ -   #VUID-vkCmdDrawIndirect-None-04875# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndirect-None-04876# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndirect-None-04877# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-04879# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndirect-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_EXT'---     dynamic state enabled, and any of the shader stages of the bound---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,---     then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ be @1@------ -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-rasterizationSamples-04740# If rasterization---     is not disabled in the bound graphics pipeline, and neither the---     @VK_AMD_mixed_attachment_samples@ nor the---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@---     /must/ be the same as the current subpass color and\/or---     depth\/stencil attachments------ -   #VUID-vkCmdDrawIndirect-None-04912# If the bound graphics pipeline---     was created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic states enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDrawIndirect-pStrides-04913# If the bound graphics---     pipeline was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ have been called in the current command buffer prior to this---     draw command, and the @pStrides@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ not be @NULL@------ -   #VUID-vkCmdDrawIndirect-None-04914# If the bound graphics pipeline---     state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDrawIndirect-None-04007# All vertex input bindings---     accessed via vertex input variables declared in the vertex shader---     entry point’s interface /must/ have either valid or---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound------ -   #VUID-vkCmdDrawIndirect-None-04008# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>---     feature is not enabled, all vertex input bindings accessed via---     vertex input variables declared in the vertex shader entry point’s---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdDrawIndirect-None-02721# For a given vertex buffer---     binding, any attribute data fetched /must/ be entirely contained---     within the corresponding vertex buffer binding, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>------ -   #VUID-vkCmdDrawIndirect-buffer-02708# If @buffer@ is non-sparse then---     it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdDrawIndirect-buffer-02709# @buffer@ /must/ have been---     created with the---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'---     bit set------ -   #VUID-vkCmdDrawIndirect-offset-02710# @offset@ /must/ be a multiple---     of @4@------ -   #VUID-vkCmdDrawIndirect-commandBuffer-02711# @commandBuffer@ /must/---     not be a protected command buffer------ -   #VUID-vkCmdDrawIndirect-drawCount-02718# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>---     feature is not enabled, @drawCount@ /must/ be @0@ or @1@------ -   #VUID-vkCmdDrawIndirect-drawCount-02719# @drawCount@ /must/ be less---     than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@------ -   #VUID-vkCmdDrawIndirect-firstInstance-00478# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>---     feature is not enabled, all the @firstInstance@ members of the---     'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures accessed---     by this command /must/ be @0@------ -   #VUID-vkCmdDrawIndirect-drawCount-00476# If @drawCount@ is greater---     than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be greater---     than or equal to---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')------ -   #VUID-vkCmdDrawIndirect-drawCount-00487# If @drawCount@ is equal to---     @1@, (@offset@ +---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be---     less than or equal to the size of @buffer@------ -   #VUID-vkCmdDrawIndirect-drawCount-00488# If @drawCount@ is greater---     than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be---     less than or equal to the size of @buffer@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdDrawIndirect-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdDrawIndirect-buffer-parameter# @buffer@ /must/ be a valid---     'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdDrawIndirect-renderpass# This command /must/ only be---     called inside of a render pass instance------ -   #VUID-vkCmdDrawIndirect-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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdDrawIndirect :: 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)-                -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.-                   ("drawCount" ::: Word32)-                -> -- | @stride@ is the byte stride between successive sets of draw parameters.-                   ("stride" ::: Word32)-                -> io ()-cmdDrawIndirect commandBuffer buffer offset drawCount stride = liftIO $ do-  let vkCmdDrawIndirectPtr = pVkCmdDrawIndirect (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdDrawIndirectPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirect is null" Nothing Nothing-  let vkCmdDrawIndirect' = mkVkCmdDrawIndirect vkCmdDrawIndirectPtr-  traceAroundEvent "vkCmdDrawIndirect" (vkCmdDrawIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdDrawIndexedIndirect-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()---- | vkCmdDrawIndexedIndirect - Draw primitives with indirect parameters and--- indexed vertices------ = Description------ 'cmdDrawIndexedIndirect' behaves similarly to 'cmdDrawIndexed' except--- that the parameters are read by the device from a buffer during--- execution. @drawCount@ draws are executed by the command, with--- parameters taken from @buffer@ starting at @offset@ and increasing by--- @stride@ bytes for each successive draw. The parameters of each draw are--- encoded in an array of--- 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures. If--- @drawCount@ is less than or equal to one, @stride@ is ignored.------ == Valid Usage------ -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdDrawIndexedIndirect-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-OpTypeImage-06423# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being written as a storage image---     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06424# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or---     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02699# Descriptors in each bound---     descriptor set, specified via '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------ -   #VUID-vkCmdDrawIndexedIndirect-None-02700# A valid pipeline /must/---     be bound to the pipeline bind point used by this command------ -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDrawIndexedIndirect-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707# If---     @commandBuffer@ is an unprotected command buffer, 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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02686# Every input attachment---     used by the current subpass /must/ be bound to the pipeline via a---     descriptor set------ -   #VUID-vkCmdDrawIndexedIndirect-None-04584# Image subresources used---     as attachments in the current render pass /must/ not be accessed in---     any way other than as an attachment by this command, except for---     cases involving read-only access to depth\/stencil attachments as---     described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>---     chapter------ -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-viewportCount-03417# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@---     of the pipeline------ -   #VUID-vkCmdDrawIndexedIndirect-scissorCount-03418# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ match the---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@---     of the pipeline------ -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-03419# If the bound---     graphics pipeline state was created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic states enabled then both---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     and---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ match the @scissorCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'------ -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04137# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04138# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04139# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04140# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141# If---     the bound graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142# If---     the bound graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'------ -   #VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420# If the bound---     graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @primitiveTopology@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'---     /must/ be of the same---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>---     as the pipeline---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@---     state------ -   #VUID-vkCmdDrawIndexedIndirect-None-04875# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexedIndirect-None-04876# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexedIndirect-None-04877# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-04879# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'---     dynamic state enabled then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command------ -   #VUID-vkCmdDrawIndexedIndirect-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_EXT'---     dynamic state enabled, and any of the shader stages of the bound---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,---     then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ have been called in the current command buffer prior to this---     drawing command, and the @viewportCount@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'---     /must/ be @1@------ -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-rasterizationSamples-04740# If---     rasterization is not disabled in the bound graphics pipeline, and---     neither the @VK_AMD_mixed_attachment_samples@ nor the---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@---     /must/ be the same as the current subpass color and\/or---     depth\/stencil attachments------ -   #VUID-vkCmdDrawIndexedIndirect-None-04912# If the bound graphics---     pipeline was created with both the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic states enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDrawIndexedIndirect-pStrides-04913# If the bound graphics---     pipeline was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'---     dynamic state enabled, but not the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ have been called in the current command buffer prior to this---     draw command, and the @pStrides@ parameter of---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'---     /must/ not be @NULL@------ -   #VUID-vkCmdDrawIndexedIndirect-None-04914# If the bound graphics---     pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'---     dynamic state enabled, then---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'---     /must/ have been called in the current command buffer prior to this---     draw command------ -   #VUID-vkCmdDrawIndexedIndirect-None-04007# All vertex input bindings---     accessed via vertex input variables declared in the vertex shader---     entry point’s interface /must/ have either valid or---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound------ -   #VUID-vkCmdDrawIndexedIndirect-None-04008# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>---     feature is not enabled, all vertex input bindings accessed via---     vertex input variables declared in the vertex shader entry point’s---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdDrawIndexedIndirect-None-02721# For a given vertex buffer---     binding, any attribute data fetched /must/ be entirely contained---     within the corresponding vertex buffer binding, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>------ -   #VUID-vkCmdDrawIndexedIndirect-buffer-02708# If @buffer@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdDrawIndexedIndirect-buffer-02709# @buffer@ /must/ have---     been created with the---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'---     bit set------ -   #VUID-vkCmdDrawIndexedIndirect-offset-02710# @offset@ /must/ be a---     multiple of @4@------ -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711# @commandBuffer@---     /must/ not be a protected command buffer------ -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02718# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>---     feature is not enabled, @drawCount@ /must/ be @0@ or @1@------ -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02719# @drawCount@ /must/---     be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@------ -   #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---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')------ -   #VUID-vkCmdDrawIndexedIndirect-firstInstance-00530# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>---     feature is not enabled, all the @firstInstance@ members of the---     'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures---     accessed by this command /must/ be @0@------ -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00539# If @drawCount@ is---     equal to @1@, (@offset@ +---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))---     /must/ be less than or equal to the size of @buffer@------ -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00540# If @drawCount@ is---     greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))---     /must/ be less than or equal to the size of @buffer@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdDrawIndexedIndirect-buffer-parameter# @buffer@ /must/ be---     a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdDrawIndexedIndirect-renderpass# This command /must/ only---     be called inside of a render pass instance------ -   #VUID-vkCmdDrawIndexedIndirect-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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdDrawIndexedIndirect :: 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)-                       -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.-                          ("drawCount" ::: Word32)-                       -> -- | @stride@ is the byte stride between successive sets of draw parameters.-                          ("stride" ::: Word32)-                       -> io ()-cmdDrawIndexedIndirect commandBuffer buffer offset drawCount stride = liftIO $ do-  let vkCmdDrawIndexedIndirectPtr = pVkCmdDrawIndexedIndirect (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdDrawIndexedIndirectPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexedIndirect is null" Nothing Nothing-  let vkCmdDrawIndexedIndirect' = mkVkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirectPtr-  traceAroundEvent "vkCmdDrawIndexedIndirect" (vkCmdDrawIndexedIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdDispatch-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()---- | vkCmdDispatch - Dispatch compute work items------ = Description------ When the command is executed, a global workgroup consisting of--- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is--- assembled.------ == Valid Usage------ -   #VUID-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdDispatch-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatch-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatch-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-vkCmdDispatch-OpTypeImage-06423# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being written as a storage image---     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDispatch-OpTypeImage-06424# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or---     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-None-02699# Descriptors in each bound descriptor---     set, specified via '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------ -   #VUID-vkCmdDispatch-None-02700# A valid pipeline /must/ be bound to---     the pipeline bind point used by this command------ -   #VUID-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDispatch-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDispatch-commandBuffer-02707# If @commandBuffer@ is an---     unprotected command buffer, 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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-commandBuffer-02712# If @commandBuffer@ is a---     protected command buffer, any resource written to by the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not be an unprotected resource------ -   #VUID-vkCmdDispatch-commandBuffer-02713# If @commandBuffer@ is a---     protected command buffer, pipeline stages other than the---     framebuffer-space and compute stages in the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not write to any resource------ -   #VUID-vkCmdDispatch-commandBuffer-04617# If any of the shader stages---     of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind---     point used by this command uses the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>---     capability, then @commandBuffer@ /must/ not be a protected command---     buffer------ -   #VUID-vkCmdDispatch-groupCountX-00386# @groupCountX@ /must/ be less---     than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]------ -   #VUID-vkCmdDispatch-groupCountY-00387# @groupCountY@ /must/ be less---     than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]------ -   #VUID-vkCmdDispatch-groupCountZ-00388# @groupCountZ@ /must/ be less---     than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]------ == Valid Usage (Implicit)------ -   #VUID-vkCmdDispatch-commandBuffer-parameter# @commandBuffer@ /must/---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdDispatch-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-vkCmdDispatch-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdDispatch-renderpass# This command /must/ only be called---     outside of a render pass instance------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdDispatch :: 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 ()-cmdDispatch commandBuffer groupCountX groupCountY groupCountZ = liftIO $ do-  let vkCmdDispatchPtr = pVkCmdDispatch (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdDispatchPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatch is null" Nothing Nothing-  let vkCmdDispatch' = mkVkCmdDispatch vkCmdDispatchPtr-  traceAroundEvent "vkCmdDispatch" (vkCmdDispatch' (commandBufferHandle (commandBuffer)) (groupCountX) (groupCountY) (groupCountZ))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdDispatchIndirect-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()---- | vkCmdDispatchIndirect - Dispatch compute work items with indirect--- parameters------ = Description------ 'cmdDispatchIndirect' behaves similarly to 'cmdDispatch' 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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdDispatchIndirect-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatchIndirect-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-OpTypeImage-06423# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being written as a storage image---     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDispatchIndirect-OpTypeImage-06424# Any---     'Vulkan.Core10.Handles.ImageView' or---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or---     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'------ -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-None-02699# Descriptors in each bound---     descriptor set, specified via '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------ -   #VUID-vkCmdDispatchIndirect-None-02700# A valid pipeline /must/ be---     bound to the pipeline bind point used by this command------ -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDispatchIndirect-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdDispatchIndirect-commandBuffer-02707# If @commandBuffer@---     is an unprotected command buffer, 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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-buffer-02708# If @buffer@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdDispatchIndirect-buffer-02709# @buffer@ /must/ have been---     created with the---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'---     bit set------ -   #VUID-vkCmdDispatchIndirect-offset-02710# @offset@ /must/ be a---     multiple of @4@------ -   #VUID-vkCmdDispatchIndirect-commandBuffer-02711# @commandBuffer@---     /must/ not be a protected command buffer------ -   #VUID-vkCmdDispatchIndirect-offset-00407# The sum of @offset@ and---     the size of 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'---     /must/ be less than or equal to the size of @buffer@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdDispatchIndirect-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdDispatchIndirect-buffer-parameter# @buffer@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdDispatchIndirect-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdDispatchIndirect-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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdDispatchIndirect :: forall io-                     . (MonadIO io)-                    => -- | @commandBuffer@ is the command buffer into which the command will be-                       -- recorded.-                       CommandBuffer-                    -> -- | @buffer@ is the buffer containing dispatch parameters.-                       Buffer-                    -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.-                       ("offset" ::: DeviceSize)-                    -> io ()-cmdDispatchIndirect commandBuffer buffer offset = liftIO $ do-  let vkCmdDispatchIndirectPtr = pVkCmdDispatchIndirect (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdDispatchIndirectPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchIndirect is null" Nothing Nothing-  let vkCmdDispatchIndirect' = mkVkCmdDispatchIndirect vkCmdDispatchIndirectPtr-  traceAroundEvent "vkCmdDispatchIndirect" (vkCmdDispatchIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyBuffer-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()---- | vkCmdCopyBuffer - Copy data between buffer regions------ = Description------ Each region in @pRegions@ is copied from the source buffer to the same--- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be--- the same buffer or alias the same memory, but the resulting values are--- undefined if the copy regions overlap in memory.------ == Valid Usage------ -   #VUID-vkCmdCopyBuffer-commandBuffer-01822# If @commandBuffer@ is an---     unprotected command buffer, then @srcBuffer@ /must/ not be a---     protected buffer------ -   #VUID-vkCmdCopyBuffer-commandBuffer-01823# If @commandBuffer@ is an---     unprotected command buffer, then @dstBuffer@ /must/ not be a---     protected buffer------ -   #VUID-vkCmdCopyBuffer-commandBuffer-01824# If @commandBuffer@ is a---     protected command buffer, then @dstBuffer@ /must/ not be an---     unprotected buffer------ -   #VUID-vkCmdCopyBuffer-srcOffset-00113# The @srcOffset@ member of---     each element of @pRegions@ /must/ be less than the size of---     @srcBuffer@------ -   #VUID-vkCmdCopyBuffer-dstOffset-00114# The @dstOffset@ member of---     each element of @pRegions@ /must/ be less than the size of---     @dstBuffer@------ -   #VUID-vkCmdCopyBuffer-size-00115# The @size@ member of each element---     of @pRegions@ /must/ be less than or equal to the size of---     @srcBuffer@ minus @srcOffset@------ -   #VUID-vkCmdCopyBuffer-size-00116# The @size@ member of each element---     of @pRegions@ /must/ be less than or equal to the size of---     @dstBuffer@ minus @dstOffset@------ -   #VUID-vkCmdCopyBuffer-pRegions-00117# The union of the source---     regions, and the union of the destination regions, specified by the---     elements of @pRegions@, /must/ not overlap in memory------ -   #VUID-vkCmdCopyBuffer-srcBuffer-00118# @srcBuffer@ /must/ have been---     created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'---     usage flag------ -   #VUID-vkCmdCopyBuffer-srcBuffer-00119# If @srcBuffer@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyBuffer-dstBuffer-00120# @dstBuffer@ /must/ have been---     created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdCopyBuffer-dstBuffer-00121# If @dstBuffer@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyBuffer-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyBuffer-srcBuffer-parameter# @srcBuffer@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdCopyBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdCopyBuffer-pRegions-parameter# @pRegions@ /must/ be a---     valid pointer to an array of @regionCount@ valid 'BufferCopy'---     structures------ -   #VUID-vkCmdCopyBuffer-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-vkCmdCopyBuffer-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics, or compute---     operations------ -   #VUID-vkCmdCopyBuffer-renderpass# This command /must/ only be called---     outside of a render pass instance------ -   #VUID-vkCmdCopyBuffer-regionCount-arraylength# @regionCount@ /must/---     be greater than @0@------ -   #VUID-vkCmdCopyBuffer-commonparent# Each of @commandBuffer@,---     @dstBuffer@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'BufferCopy',--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdCopyBuffer :: forall io-               . (MonadIO io)-              => -- | @commandBuffer@ is the command buffer into which the command will be-                 -- recorded.-                 CommandBuffer-              -> -- | @srcBuffer@ is the source buffer.-                 ("srcBuffer" ::: Buffer)-              -> -- | @dstBuffer@ is the destination buffer.-                 ("dstBuffer" ::: Buffer)-              -> -- | @pRegions@ is a pointer to an array of 'BufferCopy' structures-                 -- specifying the regions to copy.-                 ("regions" ::: Vector BufferCopy)-              -> io ()-cmdCopyBuffer commandBuffer srcBuffer dstBuffer regions = liftIO . evalContT $ do-  let vkCmdCopyBufferPtr = pVkCmdCopyBuffer (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdCopyBufferPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBuffer is null" Nothing Nothing-  let vkCmdCopyBuffer' = mkVkCmdCopyBuffer vkCmdCopyBufferPtr-  pPRegions <- ContT $ allocaBytes @BufferCopy ((Data.Vector.length (regions)) * 24)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (24 * (i)) :: Ptr BufferCopy) (e)) (regions)-  lift $ traceAroundEvent "vkCmdCopyBuffer" (vkCmdCopyBuffer' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyImage-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()---- | vkCmdCopyImage - Copy data between images------ = Description------ Each region in @pRegions@ is copied from the source image to the same--- region of the destination image. @srcImage@ and @dstImage@ /can/ be the--- same image or alias the same memory.------ The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats--- are compatible if they share the same class, as shown in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>--- table. Depth\/stencil formats /must/ match exactly.------ If either @srcImage@ or @dstImage@ has a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,--- regions of each plane to be copied /must/ be specified separately using--- the @srcSubresource@ and @dstSubresource@ members of the 'ImageCopy'--- structure. In this case, the @aspectMask@ of the @srcSubresource@ or--- @dstSubresource@ that refers to the multi-planar image /must/ be--- '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'. For--- the purposes of 'cmdCopyImage', each plane of a multi-planar image is--- treated as having the format listed in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>--- for the plane identified by the @aspectMask@ of the corresponding--- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'--- and to coordinates used in the copy, which correspond to texels in the--- /plane/ rather than how these texels map to coordinates in the image as--- a whole.------ Note------ For example, the--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' plane--- of a 'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_420_UNORM' image--- is compatible with an image of format--- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM' and (less usefully) with--- the 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- plane of an image of format--- 'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16',--- as each texel is 2 bytes in size.------ 'cmdCopyImage' allows copying between /size-compatible/ compressed and--- uncompressed internal formats. Formats are size-compatible if the texel--- block size of the uncompressed format is equal to the texel block size--- of the compressed format. Such a copy does not perform on-the-fly--- compression or decompression. When copying from an uncompressed format--- to a compressed format, each texel of uncompressed data of the source--- image is copied as a raw value to the corresponding compressed texel--- block of the destination image. When copying from a compressed format to--- an uncompressed format, each compressed texel block of the source image--- is copied as a raw value to the corresponding texel of uncompressed data--- in the destination image. Thus, for example, it is legal to copy between--- a 128-bit uncompressed format and a compressed format which has a--- 128-bit sized compressed texel block representing 4×4 texels (using 8--- bits per texel), or between a 64-bit uncompressed format and a--- compressed format which has a 64-bit sized compressed texel block--- representing 4×4 texels (using 4 bits per texel).------ When copying between compressed and uncompressed formats the @extent@--- members represent the texel dimensions of the source image and not the--- destination. When copying from a compressed image to an uncompressed--- image the image texel dimensions written to the uncompressed image will--- be source extent divided by the compressed texel block dimensions. When--- copying from an uncompressed image to a compressed image the image texel--- dimensions written to the compressed image will be the source extent--- multiplied by the compressed texel block dimensions. In both cases the--- number of bytes read and the number of bytes written will be identical.------ Copying to or from block-compressed images is typically done in--- multiples of the compressed texel block size. For this reason the--- @extent@ /must/ be a multiple of the compressed texel block dimension.--- There is one exception to this rule which is /required/ to handle--- compressed images created with dimensions that are not a multiple of the--- compressed texel block dimensions: if the @srcImage@ is compressed,--- then:------ -   If @extent.width@ is not a multiple of the compressed texel block---     width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image---     subresource width.------ -   If @extent.height@ is not a multiple of the compressed texel block---     height, then (@extent.height@ + @srcOffset.y@) /must/ equal the---     image subresource height.------ -   If @extent.depth@ is not a multiple of the compressed texel block---     depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image---     subresource depth.------ Similarly, if the @dstImage@ is compressed, then:------ -   If @extent.width@ is not a multiple of the compressed texel block---     width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image---     subresource width.------ -   If @extent.height@ is not a multiple of the compressed texel block---     height, then (@extent.height@ + @dstOffset.y@) /must/ equal the---     image subresource height.------ -   If @extent.depth@ is not a multiple of the compressed texel block---     depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image---     subresource depth.------ This allows the last compressed texel block of the image in each--- non-multiple dimension to be included as a source or destination of the--- copy.------ “@_422@” image formats that are not--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>--- are treated as having a 2×1 compressed texel block for the purposes of--- these rules.------ 'cmdCopyImage' /can/ be used to copy image data between multisample--- images, but both images /must/ have the same number of samples.------ == Valid Usage------ -   #VUID-vkCmdCopyImage-commandBuffer-01825# If @commandBuffer@ is an---     unprotected command buffer, then @srcImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdCopyImage-commandBuffer-01826# If @commandBuffer@ is an---     unprotected command buffer, then @dstImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdCopyImage-commandBuffer-01827# If @commandBuffer@ is a---     protected command buffer, then @dstImage@ /must/ not be an---     unprotected image------ -   #VUID-vkCmdCopyImage-pRegions-00124# The union of all source---     regions, and the union of all destination regions, specified by the---     elements of @pRegions@, /must/ not overlap in memory------ -   #VUID-vkCmdCopyImage-srcImage-01995# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @srcImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'------ -   #VUID-vkCmdCopyImage-srcImage-00126# @srcImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'---     usage flag------ -   #VUID-vkCmdCopyImage-srcImage-01546# If @srcImage@ is non-sparse---     then the image or /disjoint/ plane to be copied /must/ be bound---     completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyImage-srcImageLayout-00128# @srcImageLayout@ /must/---     specify the layout of the image subresources of @srcImage@ specified---     in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdCopyImage-srcImageLayout-01917# @srcImageLayout@ /must/---     be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'------ -   #VUID-vkCmdCopyImage-dstImage-01996# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @dstImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'------ -   #VUID-vkCmdCopyImage-dstImage-00131# @dstImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdCopyImage-dstImage-01547# If @dstImage@ is non-sparse---     then the image or /disjoint/ plane that is the destination of the---     copy /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyImage-dstImageLayout-00133# @dstImageLayout@ /must/---     specify the layout of the image subresources of @dstImage@ specified---     in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdCopyImage-dstImageLayout-01395# @dstImageLayout@ /must/---     be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'------ -   #VUID-vkCmdCopyImage-srcImage-01548# If the---     'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and---     @dstImage@ is not a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,---     the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and---     @dstImage@ /must/ be compatible, as defined---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibility above>------ -   #VUID-vkCmdCopyImage-None-01549# In a copy to or from a plane of a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image>,---     the 'Vulkan.Core10.Enums.Format.Format' of the image and plane---     /must/ be compatible according to---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes>---     for the plane being copied------ -   #VUID-vkCmdCopyImage-srcImage-00136# The sample count of @srcImage@---     and @dstImage@ /must/ match------ -   #VUID-vkCmdCopyImage-srcSubresource-01696# The---     @srcSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created------ -   #VUID-vkCmdCopyImage-dstSubresource-01697# The---     @dstSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created------ -   #VUID-vkCmdCopyImage-srcSubresource-01698# The---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @srcImage@ was created------ -   #VUID-vkCmdCopyImage-dstSubresource-01699# The---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @dstImage@ was created------ -   #VUID-vkCmdCopyImage-srcOffset-01783# The @srcOffset@ and @extent@---     members of each element of @pRegions@ /must/ respect the image---     transfer granularity requirements of @commandBuffer@’s command---     pool’s queue family, as described in---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'------ -   #VUID-vkCmdCopyImage-dstOffset-01784# The @dstOffset@ and @extent@---     members of each element of @pRegions@ /must/ respect the image---     transfer granularity requirements of @commandBuffer@’s command---     pool’s queue family, as described in---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'------ -   #VUID-vkCmdCopyImage-dstImage-02542# @dstImage@ and @srcImage@---     /must/ not have been created with @flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'------ -   #VUID-vkCmdCopyImage-srcImage-01551# If neither @srcImage@ nor---     @dstImage@ has a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>---     then for each element of @pRegions@, @srcSubresource.aspectMask@ and---     @dstSubresource.aspectMask@ /must/ match------ -   #VUID-vkCmdCopyImage-srcImage-01552# If @srcImage@ has a---     'Vulkan.Core10.Enums.Format.Format' with---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>---     then for each element of @pRegions@, @srcSubresource.aspectMask@---     /must/ be---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'---     or---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'------ -   #VUID-vkCmdCopyImage-srcImage-01553# If @srcImage@ has a---     'Vulkan.Core10.Enums.Format.Format' with---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>---     then for each element of @pRegions@, @srcSubresource.aspectMask@---     /must/ be---     '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'------ -   #VUID-vkCmdCopyImage-dstImage-01554# If @dstImage@ has a---     'Vulkan.Core10.Enums.Format.Format' with---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>---     then for each element of @pRegions@, @dstSubresource.aspectMask@---     /must/ be---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'---     or---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'------ -   #VUID-vkCmdCopyImage-dstImage-01555# If @dstImage@ has a---     'Vulkan.Core10.Enums.Format.Format' with---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>---     then for each element of @pRegions@, @dstSubresource.aspectMask@---     /must/ be---     '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'------ -   #VUID-vkCmdCopyImage-srcImage-01556# If @srcImage@ has a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>---     and the @dstImage@ does not have a multi-planar image format, then---     for each element of @pRegions@, @dstSubresource.aspectMask@ /must/---     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'------ -   #VUID-vkCmdCopyImage-dstImage-01557# If @dstImage@ has a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>---     and the @srcImage@ does not have a multi-planar image format, then---     for each element of @pRegions@, @srcSubresource.aspectMask@ /must/---     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'------ -   #VUID-vkCmdCopyImage-srcImage-04443# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and---     @srcSubresource.layerCount@ /must/ be @1@------ -   #VUID-vkCmdCopyImage-dstImage-04444# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and---     @dstSubresource.layerCount@ /must/ be @1@------ -   #VUID-vkCmdCopyImage-aspectMask-00142# For each element of---     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects---     present in @srcImage@------ -   #VUID-vkCmdCopyImage-aspectMask-00143# For each element of---     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects---     present in @dstImage@------ -   #VUID-vkCmdCopyImage-srcOffset-00144# For each element of---     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the width of the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImage-srcOffset-00145# For each element of---     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the height of the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImage-srcImage-00146# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@---     /must/ be @1@------ -   #VUID-vkCmdCopyImage-srcOffset-00147# For each element of---     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the depth of the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImage-srcImage-01785# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/---     be @1@------ -   #VUID-vkCmdCopyImage-dstImage-01786# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/---     be @1@------ -   #VUID-vkCmdCopyImage-srcImage-01787# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @srcOffset.z@ /must/ be @0@------ -   #VUID-vkCmdCopyImage-dstImage-01788# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @dstOffset.z@ /must/ be @0@------ -   #VUID-vkCmdCopyImage-srcImage-01790# If @srcImage@ and @dstImage@---     are both of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then---     for each element of @pRegions@, @extent.depth@ /must/ be @1@------ -   #VUID-vkCmdCopyImage-srcImage-01791# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @dstImage@ is of---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each---     element of @pRegions@, @extent.depth@ /must/ equal---     @srcSubresource.layerCount@------ -   #VUID-vkCmdCopyImage-dstImage-01792# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @srcImage@ is of---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each---     element of @pRegions@, @extent.depth@ /must/ equal---     @dstSubresource.layerCount@------ -   #VUID-vkCmdCopyImage-dstOffset-00150# For each element of---     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the width of the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyImage-dstOffset-00151# For each element of---     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the height of the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyImage-dstImage-00152# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@---     /must/ be @1@------ -   #VUID-vkCmdCopyImage-dstOffset-00153# For each element of---     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the depth of the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyImage-srcImage-01727# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, all members of @srcOffset@---     /must/ be a multiple of the corresponding dimensions of the---     compressed texel block------ -   #VUID-vkCmdCopyImage-srcImage-01728# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, @extent.width@ /must/ be a---     multiple of the compressed texel block width or (@extent.width@ +---     @srcOffset.x@) /must/ equal the width of the specified---     @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImage-srcImage-01729# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, @extent.height@ /must/ be a---     multiple of the compressed texel block height or (@extent.height@ +---     @srcOffset.y@) /must/ equal the height of the specified---     @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImage-srcImage-01730# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, @extent.depth@ /must/ be a---     multiple of the compressed texel block depth or (@extent.depth@ +---     @srcOffset.z@) /must/ equal the depth of the specified---     @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImage-dstImage-01731# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, all members of @dstOffset@---     /must/ be a multiple of the corresponding dimensions of the---     compressed texel block------ -   #VUID-vkCmdCopyImage-dstImage-01732# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, @extent.width@ /must/ be a---     multiple of the compressed texel block width or (@extent.width@ +---     @dstOffset.x@) /must/ equal the width of the specified---     @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyImage-dstImage-01733# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, @extent.height@ /must/ be a---     multiple of the compressed texel block height or (@extent.height@ +---     @dstOffset.y@) /must/ equal the height of the specified---     @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyImage-dstImage-01734# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     then for each element of @pRegions@, @extent.depth@ /must/ be a---     multiple of the compressed texel block depth or (@extent.depth@ +---     @dstOffset.z@) /must/ equal the depth of the specified---     @dstSubresource@ of @dstImage@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyImage-commandBuffer-parameter# @commandBuffer@ /must/---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyImage-srcImage-parameter# @srcImage@ /must/ be a---     valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdCopyImage-srcImageLayout-parameter# @srcImageLayout@---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'---     value------ -   #VUID-vkCmdCopyImage-dstImage-parameter# @dstImage@ /must/ be a---     valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdCopyImage-dstImageLayout-parameter# @dstImageLayout@---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'---     value------ -   #VUID-vkCmdCopyImage-pRegions-parameter# @pRegions@ /must/ be a---     valid pointer to an array of @regionCount@ valid 'ImageCopy'---     structures------ -   #VUID-vkCmdCopyImage-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-vkCmdCopyImage-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics, or compute---     operations------ -   #VUID-vkCmdCopyImage-renderpass# This command /must/ only be called---     outside of a render pass instance------ -   #VUID-vkCmdCopyImage-regionCount-arraylength# @regionCount@ /must/---     be greater than @0@------ -   #VUID-vkCmdCopyImage-commonparent# Each of @commandBuffer@,---     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',--- 'ImageCopy', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'-cmdCopyImage :: forall io-              . (MonadIO io)-             => -- | @commandBuffer@ is the command buffer into which the command will be-                -- recorded.-                CommandBuffer-             -> -- | @srcImage@ is the source image.-                ("srcImage" ::: Image)-             -> -- | @srcImageLayout@ is the current layout of the source image subresource.-                ("srcImageLayout" ::: ImageLayout)-             -> -- | @dstImage@ is the destination image.-                ("dstImage" ::: Image)-             -> -- | @dstImageLayout@ is the current layout of the destination image-                -- subresource.-                ("dstImageLayout" ::: ImageLayout)-             -> -- | @pRegions@ is a pointer to an array of 'ImageCopy' structures specifying-                -- the regions to copy.-                ("regions" ::: Vector ImageCopy)-             -> io ()-cmdCopyImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do-  let vkCmdCopyImagePtr = pVkCmdCopyImage (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdCopyImagePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImage is null" Nothing Nothing-  let vkCmdCopyImage' = mkVkCmdCopyImage vkCmdCopyImagePtr-  pPRegions <- ContT $ allocaBytes @ImageCopy ((Data.Vector.length (regions)) * 68)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageCopy) (e)) (regions)-  lift $ traceAroundEvent "vkCmdCopyImage" (vkCmdCopyImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBlitImage-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()---- | vkCmdBlitImage - Copy regions of an image, potentially performing format--- conversion,------ = Description------ 'cmdBlitImage' /must/ not be used for multisampled source or destination--- images. Use 'cmdResolveImage' for this purpose.------ As the sizes of the source and destination extents /can/ differ in any--- dimension, texels in the source extent are scaled and filtered to the--- destination extent. Scaling occurs via the following operations:------ -   For each destination texel, the integer coordinate of that texel is---     converted to an unnormalized texture coordinate, using the effective---     inverse of the equations described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer unnormalized to integer conversion>:------     -   ubase = i + ½------     -   vbase = j + ½------     -   wbase = k + ½------ -   These base coordinates are then offset by the first destination---     offset:------     -   uoffset = ubase - xdst0------     -   voffset = vbase - ydst0------     -   woffset = wbase - zdst0------     -   aoffset = a - @baseArrayCount@dst------ -   The scale is determined from the source and destination regions, and---     applied to the offset coordinates:------     -   scaleu = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)------     -   scalev = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)------     -   scalew = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)------     -   uscaled = uoffset × scaleu------     -   vscaled = voffset × scalev------     -   wscaled = woffset × scalew------ -   Finally the source offset is added to the scaled coordinates, to---     determine the final unnormalized coordinates used to sample from---     @srcImage@:------     -   u = uscaled + xsrc0------     -   v = vscaled + ysrc0------     -   w = wscaled + zsrc0------     -   q = @mipLevel@------     -   a = aoffset + @baseArrayCount@src------ These coordinates are used to sample from the source image, as described--- in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations chapter>,--- with the filter mode equal to that of @filter@, a mipmap mode of--- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST' and--- an address mode of--- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.--- Implementations /must/ clamp at the edge of the source image, and /may/--- additionally clamp to the edge of the source region.------ Note------ Due to allowable rounding errors in the generation of the source texture--- coordinates, it is not always possible to guarantee exactly which source--- texels will be sampled for a given blit. As rounding errors are--- implementation-dependent, the exact results of a blitting operation are--- also implementation-dependent.------ Blits are done layer by layer starting with the @baseArrayLayer@ member--- of @srcSubresource@ for the source and @dstSubresource@ for the--- destination. @layerCount@ layers are blitted to the destination image.------ When blitting 3D textures, slices in the destination region bounded by--- @dstOffsets@[0].z and @dstOffsets@[1].z are sampled from slices in the--- source region bounded by @srcOffsets@[0].z and @srcOffsets@[1].z. If the--- @filter@ parameter is 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' then--- the value sampled from the source image is taken by doing linear--- filtering using the interpolated __z__ coordinate represented by __w__--- in the previous equations. If the @filter@ parameter is--- 'Vulkan.Core10.Enums.Filter.FILTER_NEAREST' then the value sampled from--- the source image is taken from the single nearest slice, with an--- implementation-dependent arithmetic rounding mode.------ The following filtering and conversion rules apply:------ -   Integer formats /can/ only be converted to other integer formats---     with the same signedness.------ -   No format conversion is supported between depth\/stencil images. The---     formats /must/ match.------ -   Format conversions on unorm, snorm, unscaled and packed float---     formats of the copied aspect of the image are performed by first---     converting the pixels to float values.------ -   For sRGB source formats, nonlinear RGB values are converted to---     linear representation prior to filtering.------ -   After filtering, the float values are first clamped and then cast to---     the destination image format. In case of sRGB destination format,---     linear RGB values are converted to nonlinear representation before---     writing the pixel to the image.------ Signed and unsigned integers are converted by first clamping to the--- representable range of the destination format, then casting the value.------ == Valid Usage------ -   #VUID-vkCmdBlitImage-commandBuffer-01834# If @commandBuffer@ is an---     unprotected command buffer, then @srcImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdBlitImage-commandBuffer-01835# If @commandBuffer@ is an---     unprotected command buffer, then @dstImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdBlitImage-commandBuffer-01836# If @commandBuffer@ is a---     protected command buffer, then @dstImage@ /must/ not be an---     unprotected image------ -   #VUID-vkCmdBlitImage-pRegions-00215# The source region specified by---     each element of @pRegions@ /must/ be a region that is contained---     within @srcImage@------ -   #VUID-vkCmdBlitImage-pRegions-00216# The destination region---     specified by each element of @pRegions@ /must/ be a region that is---     contained within @dstImage@------ -   #VUID-vkCmdBlitImage-pRegions-00217# The union of all destination---     regions, specified by the elements of @pRegions@, /must/ not overlap---     in memory with any texel that /may/ be sampled during the blit---     operation------ -   #VUID-vkCmdBlitImage-srcImage-01999# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @srcImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'------ -   #VUID-vkCmdBlitImage-srcImage-06421# @srcImage@ /must/ not use a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>------ -   #VUID-vkCmdBlitImage-srcImage-00219# @srcImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'---     usage flag------ -   #VUID-vkCmdBlitImage-srcImage-00220# If @srcImage@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdBlitImage-srcImageLayout-00221# @srcImageLayout@ /must/---     specify the layout of the image subresources of @srcImage@ specified---     in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdBlitImage-srcImageLayout-01398# @srcImageLayout@ /must/---     be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'------ -   #VUID-vkCmdBlitImage-dstImage-02000# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @dstImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'------ -   #VUID-vkCmdBlitImage-dstImage-06422# @dstImage@ /must/ not use a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>------ -   #VUID-vkCmdBlitImage-dstImage-00224# @dstImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdBlitImage-dstImage-00225# If @dstImage@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdBlitImage-dstImageLayout-00226# @dstImageLayout@ /must/---     specify the layout of the image subresources of @dstImage@ specified---     in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdBlitImage-dstImageLayout-01399# @dstImageLayout@ /must/---     be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'------ -   #VUID-vkCmdBlitImage-srcImage-00229# If either of @srcImage@ or---     @dstImage@ was created with a signed integer---     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been---     created with a signed integer 'Vulkan.Core10.Enums.Format.Format'------ -   #VUID-vkCmdBlitImage-srcImage-00230# If either of @srcImage@ or---     @dstImage@ was created with an unsigned integer---     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been---     created with an unsigned integer 'Vulkan.Core10.Enums.Format.Format'------ -   #VUID-vkCmdBlitImage-srcImage-00231# If either of @srcImage@ or---     @dstImage@ was created with a depth\/stencil format, the other---     /must/ have exactly the same format------ -   #VUID-vkCmdBlitImage-srcImage-00232# If @srcImage@ was created with---     a depth\/stencil format, @filter@ /must/ be---     'Vulkan.Core10.Enums.Filter.FILTER_NEAREST'------ -   #VUID-vkCmdBlitImage-srcImage-00233# @srcImage@ /must/ have been---     created with a @samples@ value of---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'------ -   #VUID-vkCmdBlitImage-dstImage-00234# @dstImage@ /must/ have been---     created with a @samples@ value of---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'------ -   #VUID-vkCmdBlitImage-filter-02001# If @filter@ is---     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @srcImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'------ -   #VUID-vkCmdBlitImage-filter-02002# If @filter@ is---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', then the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @srcImage@ /must/ contain---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdBlitImage-filter-00237# If @filter@ is---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', @srcImage@---     /must/ be of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'------ -   #VUID-vkCmdBlitImage-srcSubresource-01705# The---     @srcSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created------ -   #VUID-vkCmdBlitImage-dstSubresource-01706# The---     @dstSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created------ -   #VUID-vkCmdBlitImage-srcSubresource-01707# The---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @srcImage@ was created------ -   #VUID-vkCmdBlitImage-dstSubresource-01708# The---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @dstImage@ was created------ -   #VUID-vkCmdBlitImage-dstImage-02545# @dstImage@ and @srcImage@---     /must/ not have been created with @flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'------ -   #VUID-vkCmdBlitImage-srcImage-00240# If either @srcImage@ or---     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',---     then for each element of @pRegions@, @srcSubresource.baseArrayLayer@---     and @dstSubresource.baseArrayLayer@ /must/ each be @0@, and---     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/---     each be @1@------ -   #VUID-vkCmdBlitImage-aspectMask-00241# For each element of---     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects---     present in @srcImage@------ -   #VUID-vkCmdBlitImage-aspectMask-00242# For each element of---     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects---     present in @dstImage@------ -   #VUID-vkCmdBlitImage-srcOffset-00243# For each element of---     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be---     greater than or equal to @0@ and less than or equal to the width of---     the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdBlitImage-srcOffset-00244# For each element of---     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be---     greater than or equal to @0@ and less than or equal to the height of---     the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdBlitImage-srcImage-00245# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y---     /must/ be @1@------ -   #VUID-vkCmdBlitImage-srcOffset-00246# For each element of---     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be---     greater than or equal to @0@ and less than or equal to the depth of---     the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdBlitImage-srcImage-00247# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z---     /must/ be @1@------ -   #VUID-vkCmdBlitImage-dstOffset-00248# For each element of---     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be---     greater than or equal to @0@ and less than or equal to the width of---     the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdBlitImage-dstOffset-00249# For each element of---     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be---     greater than or equal to @0@ and less than or equal to the height of---     the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdBlitImage-dstImage-00250# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y---     /must/ be @1@------ -   #VUID-vkCmdBlitImage-dstOffset-00251# For each element of---     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be---     greater than or equal to @0@ and less than or equal to the depth of---     the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdBlitImage-dstImage-00252# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z---     /must/ be @1@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBlitImage-commandBuffer-parameter# @commandBuffer@ /must/---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBlitImage-srcImage-parameter# @srcImage@ /must/ be a---     valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdBlitImage-srcImageLayout-parameter# @srcImageLayout@---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'---     value------ -   #VUID-vkCmdBlitImage-dstImage-parameter# @dstImage@ /must/ be a---     valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdBlitImage-dstImageLayout-parameter# @dstImageLayout@---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'---     value------ -   #VUID-vkCmdBlitImage-pRegions-parameter# @pRegions@ /must/ be a---     valid pointer to an array of @regionCount@ valid 'ImageBlit'---     structures------ -   #VUID-vkCmdBlitImage-filter-parameter# @filter@ /must/ be a valid---     'Vulkan.Core10.Enums.Filter.Filter' value------ -   #VUID-vkCmdBlitImage-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-vkCmdBlitImage-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdBlitImage-renderpass# This command /must/ only be called---     outside of a render pass instance------ -   #VUID-vkCmdBlitImage-regionCount-arraylength# @regionCount@ /must/---     be greater than @0@------ -   #VUID-vkCmdBlitImage-commonparent# Each of @commandBuffer@,---     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.Filter.Filter', 'Vulkan.Core10.Handles.Image',--- 'ImageBlit', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'-cmdBlitImage :: forall io-              . (MonadIO io)-             => -- | @commandBuffer@ is the command buffer into which the command will be-                -- recorded.-                CommandBuffer-             -> -- | @srcImage@ is the source image.-                ("srcImage" ::: Image)-             -> -- | @srcImageLayout@ is the layout of the source image subresources for the-                -- blit.-                ("srcImageLayout" ::: ImageLayout)-             -> -- | @dstImage@ is the destination image.-                ("dstImage" ::: Image)-             -> -- | @dstImageLayout@ is the layout of the destination image subresources for-                -- the blit.-                ("dstImageLayout" ::: ImageLayout)-             -> -- | @pRegions@ is a pointer to an array of 'ImageBlit' structures specifying-                -- the regions to blit.-                ("regions" ::: Vector ImageBlit)-             -> -- | @filter@ is a 'Vulkan.Core10.Enums.Filter.Filter' specifying the filter-                -- to apply if the blits require scaling.-                Filter-             -> io ()-cmdBlitImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions filter' = liftIO . evalContT $ do-  let vkCmdBlitImagePtr = pVkCmdBlitImage (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdBlitImagePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBlitImage is null" Nothing Nothing-  let vkCmdBlitImage' = mkVkCmdBlitImage vkCmdBlitImagePtr-  pPRegions <- ContT $ allocaBytes @ImageBlit ((Data.Vector.length (regions)) * 80)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (80 * (i)) :: Ptr ImageBlit) (e)) (regions)-  lift $ traceAroundEvent "vkCmdBlitImage" (vkCmdBlitImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions) (filter'))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyBufferToImage-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()---- | vkCmdCopyBufferToImage - Copy data from a buffer into an image------ = Description------ Each region in @pRegions@ is copied from the specified region of the--- source buffer to the specified region of the destination image.------ 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>,--- regions of each plane to be a target of a copy /must/ be specified--- separately using the @pRegions@ member of the 'BufferImageCopy'--- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/--- be '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'. For--- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar--- image is treated as having the format listed in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>--- for the plane identified by the @aspectMask@ of the corresponding--- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'--- and to coordinates used in the copy, which correspond to texels in the--- /plane/ rather than how these texels map to coordinates in the image as--- a whole.------ == Valid Usage------ -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01828# If @commandBuffer@---     is an unprotected command buffer, then @srcBuffer@ /must/ not be a---     protected buffer------ -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01829# If @commandBuffer@---     is an unprotected command buffer, then @dstImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01830# If @commandBuffer@---     is a protected command buffer, then @dstImage@ /must/ not be an---     unprotected image------ -   #VUID-vkCmdCopyBufferToImage-pRegions-06217# The image region---     specified by each element of @pRegions@ /must/ be contained within---     the specified @imageSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyBufferToImage-pRegions-00171# @srcBuffer@ /must/ be---     large enough to contain all buffer locations that are accessed---     according to---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,---     for each element of @pRegions@------ -   #VUID-vkCmdCopyBufferToImage-pRegions-00173# The union of all source---     regions, and the union of all destination regions, specified by the---     elements of @pRegions@, /must/ not overlap in memory------ -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00174# @srcBuffer@ /must/---     have been created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'---     usage flag------ -   #VUID-vkCmdCopyBufferToImage-dstImage-01997# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @dstImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'------ -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00176# If @srcBuffer@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyBufferToImage-dstImage-00177# @dstImage@ /must/ have---     been created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdCopyBufferToImage-dstImage-00178# If @dstImage@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyBufferToImage-dstImage-00179# @dstImage@ /must/ have---     a sample count equal to---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'------ -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-00180# @dstImageLayout@---     /must/ specify the layout of the image subresources of @dstImage@---     specified in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-01396# @dstImageLayout@---     /must/ be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'------ -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01701# The---     @imageSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created------ -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01702# The---     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @dstImage@ was created------ -   #VUID-vkCmdCopyBufferToImage-imageOffset-01793# The @imageOffset@---     and @imageExtent@ members of each element of @pRegions@ /must/---     respect the image transfer granularity requirements of---     @commandBuffer@’s command pool’s queue family, as described in---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'------ -   #VUID-vkCmdCopyBufferToImage-dstImage-02543# @dstImage@ /must/ not---     have been created with @flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'------ -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04477# If the queue---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which---     @commandBuffer@ was allocated from does not support---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each---     element of @pRegions@, the @aspectMask@ member of @imageSubresource@---     /must/ not be---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'------ -   #VUID-vkCmdCopyBufferToImage-pRegions-06218# For each element of---     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ +---     @imageOffset.x@) /must/ both be greater than or equal to @0@ and---     less than or equal to the width of the specified @imageSubresource@---     of @dstImage@------ -   #VUID-vkCmdCopyBufferToImage-pRegions-06219# For each element of---     @pRegions@, @imageOffset.y@ and (@imageExtent.height@ +---     @imageOffset.y@) /must/ both be greater than or equal to @0@ and---     less than or equal to the height of the specified @imageSubresource@---     of @dstImage@------ -   #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---     @imageExtent.height@ /must/ be @1@------ -   #VUID-vkCmdCopyBufferToImage-imageOffset-00200# For each element of---     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +---     @imageOffset.z@) /must/ both be greater than or equal to @0@ and---     less than or equal to the depth of the specified @imageSubresource@---     of @dstImage@------ -   #VUID-vkCmdCopyBufferToImage-srcImage-00201# If @dstImage@ is of---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@---     /must/ be @1@------ -   #VUID-vkCmdCopyBufferToImage-bufferRowLength-00203# If @dstImage@ is---     a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferRowLength@ /must/ be a---     multiple of the compressed texel block width------ -   #VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204# If @dstImage@---     is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferImageHeight@ /must/ be a---     multiple of the compressed texel block height------ -   #VUID-vkCmdCopyBufferToImage-imageOffset-00205# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, all members of @imageOffset@ /must/---     be a multiple of the corresponding dimensions of the compressed---     texel block------ -   #VUID-vkCmdCopyBufferToImage-bufferOffset-00206# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple---     of the compressed texel block size in bytes------ -   #VUID-vkCmdCopyBufferToImage-imageExtent-00207# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @imageExtent.width@ /must/ be a---     multiple of the compressed texel block width or (@imageExtent.width@---     + @imageOffset.x@) /must/ equal the width of the specified---     @imageSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyBufferToImage-imageExtent-00208# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @imageExtent.height@ /must/ be a---     multiple of the compressed texel block height or---     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of---     the specified @imageSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyBufferToImage-imageExtent-00209# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @imageExtent.depth@ /must/ be a---     multiple of the compressed texel block depth or (@imageExtent.depth@---     + @imageOffset.z@) /must/ equal the depth of the specified---     @imageSubresource@ of @dstImage@------ -   #VUID-vkCmdCopyBufferToImage-aspectMask-00211# For each element of---     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects---     present in @dstImage@------ -   #VUID-vkCmdCopyBufferToImage-aspectMask-01560# 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@, @imageSubresource.aspectMask@---     /must/ be---     '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'---     (with---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'---     valid only for image formats with three planes)------ -   #VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213# If @dstImage@ is---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each---     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be---     @0@ and @imageSubresource.layerCount@ /must/ be @1@------ -   #VUID-vkCmdCopyBufferToImage-pRegions-04725# If @dstImage@ is not a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferRowLength@ multiplied by the---     texel block size of @dstImage@ /must/ be less than or equal to 231-1------ -   #VUID-vkCmdCopyBufferToImage-pRegions-04726# If @dstImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferRowLength@ divided by the---     compressed texel block width and then multiplied by the texel block---     size of @dstImage@ /must/ be less than or equal to 231-1------ -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04052# If the queue---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which---     @commandBuffer@ was allocated from does not support---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the---     @bufferOffset@ member of any element of @pRegions@ /must/ be a---     multiple of @4@------ -   #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@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyBufferToImage-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyBufferToImage-srcBuffer-parameter# @srcBuffer@ /must/---     be a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdCopyBufferToImage-dstImage-parameter# @dstImage@ /must/---     be a valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter#---     @dstImageLayout@ /must/ be a valid---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value------ -   #VUID-vkCmdCopyBufferToImage-pRegions-parameter# @pRegions@ /must/---     be a valid pointer to an array of @regionCount@ valid---     'BufferImageCopy' structures------ -   #VUID-vkCmdCopyBufferToImage-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-vkCmdCopyBufferToImage-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics, or compute---     operations------ -   #VUID-vkCmdCopyBufferToImage-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdCopyBufferToImage-regionCount-arraylength# @regionCount@---     /must/ be greater than @0@------ -   #VUID-vkCmdCopyBufferToImage-commonparent# Each of @commandBuffer@,---     @dstImage@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'-cmdCopyBufferToImage :: forall io-                      . (MonadIO io)-                     => -- | @commandBuffer@ is the command buffer into which the command will be-                        -- recorded.-                        CommandBuffer-                     -> -- | @srcBuffer@ is the source buffer.-                        ("srcBuffer" ::: Buffer)-                     -> -- | @dstImage@ is the destination image.-                        ("dstImage" ::: Image)-                     -> -- | @dstImageLayout@ is the layout of the destination image subresources for-                        -- the copy.-                        ("dstImageLayout" ::: ImageLayout)-                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures-                        -- specifying the regions to copy.-                        ("regions" ::: Vector BufferImageCopy)-                     -> io ()-cmdCopyBufferToImage commandBuffer srcBuffer dstImage dstImageLayout regions = liftIO . evalContT $ do-  let vkCmdCopyBufferToImagePtr = pVkCmdCopyBufferToImage (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdCopyBufferToImagePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBufferToImage is null" Nothing Nothing-  let vkCmdCopyBufferToImage' = mkVkCmdCopyBufferToImage vkCmdCopyBufferToImagePtr-  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)-  lift $ traceAroundEvent "vkCmdCopyBufferToImage" (vkCmdCopyBufferToImage' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyImageToBuffer-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()---- | vkCmdCopyImageToBuffer - Copy image data into a buffer------ = Description------ Each region in @pRegions@ is copied from the specified region of the--- source image to the specified region of the destination buffer.------ 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>,--- regions of each plane to be a source of a copy /must/ be specified--- separately using the @pRegions@ member of the 'BufferImageCopy'--- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/--- be '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'. For--- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar--- image is treated as having the format listed in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>--- for the plane identified by the @aspectMask@ of the corresponding--- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'--- and to coordinates used in the copy, which correspond to texels in the--- /plane/ rather than how these texels map to coordinates in the image as--- a whole.------ == Valid Usage------ -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01831# If @commandBuffer@---     is an unprotected command buffer, then @srcImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01832# If @commandBuffer@---     is an unprotected command buffer, then @dstBuffer@ /must/ not be a---     protected buffer------ -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01833# If @commandBuffer@---     is a protected command buffer, then @dstBuffer@ /must/ not be an---     unprotected buffer------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-06220# The image region---     specified by each element of @pRegions@ /must/ be contained within---     the specified @imageSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-00183# @dstBuffer@ /must/ be---     large enough to contain all buffer locations that are accessed---     according to---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,---     for each element of @pRegions@------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-00184# The union of all source---     regions, and the union of all destination regions, specified by the---     elements of @pRegions@, /must/ not overlap in memory------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-00186# @srcImage@ /must/ have---     been created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'---     usage flag------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-01998# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @srcImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-00187# If @srcImage@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00191# @dstBuffer@ /must/---     have been created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00192# If @dstBuffer@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-00188# @srcImage@ /must/ have---     a sample count equal to---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'------ -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189# @srcImageLayout@---     /must/ specify the layout of the image subresources of @srcImage@---     specified in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397# @srcImageLayout@---     /must/ be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'------ -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01703# The---     @imageSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created------ -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01704# The---     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @srcImage@ was created------ -   #VUID-vkCmdCopyImageToBuffer-imageOffset-01794# The @imageOffset@---     and @imageExtent@ members of each element of @pRegions@ /must/---     respect the image transfer granularity requirements of---     @commandBuffer@’s command pool’s queue family, as described in---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-02544# @srcImage@ /must/ not---     have been created with @flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-06221# For each element of---     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ +---     @imageOffset.x@) /must/ both be greater than or equal to @0@ and---     less than or equal to the width of the specified @imageSubresource@---     of @srcImage@------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-06222# For each element of---     @pRegions@, @imageOffset.y@ and (imageExtent.height +---     @imageOffset.y@) /must/ both be greater than or equal to @0@ and---     less than or equal to the height of the specified @imageSubresource@---     of @srcImage@------ -   #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---     @imageExtent.height@ /must/ be @1@------ -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00200# For each element of---     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +---     @imageOffset.z@) /must/ both be greater than or equal to @0@ and---     less than or equal to the depth of the specified @imageSubresource@---     of @srcImage@------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-00201# If @srcImage@ is of---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@---     /must/ be @1@------ -   #VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203# If @srcImage@ is---     a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferRowLength@ /must/ be a---     multiple of the compressed texel block width------ -   #VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204# If @srcImage@---     is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferImageHeight@ /must/ be a---     multiple of the compressed texel block height------ -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00205# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, all members of @imageOffset@ /must/---     be a multiple of the corresponding dimensions of the compressed---     texel block------ -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-00206# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple---     of the compressed texel block size in bytes------ -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00207# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @imageExtent.width@ /must/ be a---     multiple of the compressed texel block width or (@imageExtent.width@---     + @imageOffset.x@) /must/ equal the width of the specified---     @imageSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00208# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @imageExtent.height@ /must/ be a---     multiple of the compressed texel block height or---     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of---     the specified @imageSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00209# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @imageExtent.depth@ /must/ be a---     multiple of the compressed texel block depth or (@imageExtent.depth@---     + @imageOffset.z@) /must/ equal the depth of the specified---     @imageSubresource@ of @srcImage@------ -   #VUID-vkCmdCopyImageToBuffer-aspectMask-00211# For each element of---     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects---     present in @srcImage@------ -   #VUID-vkCmdCopyImageToBuffer-aspectMask-01560# 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@, @imageSubresource.aspectMask@---     /must/ be---     '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'---     (with---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'---     valid only for image formats with three planes)------ -   #VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213# If @srcImage@ is---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each---     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be---     @0@ and @imageSubresource.layerCount@ /must/ be @1@------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-04725# If @srcImage@ is not a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferRowLength@ multiplied by the---     texel block size of @srcImage@ /must/ be less than or equal to 231-1------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-04726# If @srcImage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,---     for each element of @pRegions@, @bufferRowLength@ divided by the---     compressed texel block width and then multiplied by the texel block---     size of @srcImage@ /must/ be less than or equal to 231-1------ -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-04052# If the queue---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which---     @commandBuffer@ was allocated from does not support---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the---     @bufferOffset@ member of any element of @pRegions@ /must/ be a---     multiple of @4@------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-04053# If @srcImage@ has a---     depth\/stencil format, the @bufferOffset@ member of any element of---     @pRegions@ /must/ be a multiple of @4@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyImageToBuffer-srcImage-parameter# @srcImage@ /must/---     be a valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter#---     @srcImageLayout@ /must/ be a valid---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value------ -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter# @dstBuffer@ /must/---     be a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdCopyImageToBuffer-pRegions-parameter# @pRegions@ /must/---     be a valid pointer to an array of @regionCount@ valid---     'BufferImageCopy' structures------ -   #VUID-vkCmdCopyImageToBuffer-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-vkCmdCopyImageToBuffer-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics, or compute---     operations------ -   #VUID-vkCmdCopyImageToBuffer-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdCopyImageToBuffer-regionCount-arraylength# @regionCount@---     /must/ be greater than @0@------ -   #VUID-vkCmdCopyImageToBuffer-commonparent# Each of @commandBuffer@,---     @dstBuffer@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'-cmdCopyImageToBuffer :: forall io-                      . (MonadIO io)-                     => -- | @commandBuffer@ is the command buffer into which the command will be-                        -- recorded.-                        CommandBuffer-                     -> -- | @srcImage@ is the source image.-                        ("srcImage" ::: Image)-                     -> -- | @srcImageLayout@ is the layout of the source image subresources for the-                        -- copy.-                        ("srcImageLayout" ::: ImageLayout)-                     -> -- | @dstBuffer@ is the destination buffer.-                        ("dstBuffer" ::: Buffer)-                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures-                        -- specifying the regions to copy.-                        ("regions" ::: Vector BufferImageCopy)-                     -> io ()-cmdCopyImageToBuffer commandBuffer srcImage srcImageLayout dstBuffer regions = liftIO . evalContT $ do-  let vkCmdCopyImageToBufferPtr = pVkCmdCopyImageToBuffer (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdCopyImageToBufferPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImageToBuffer is null" Nothing Nothing-  let vkCmdCopyImageToBuffer' = mkVkCmdCopyImageToBuffer vkCmdCopyImageToBufferPtr-  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)-  lift $ traceAroundEvent "vkCmdCopyImageToBuffer" (vkCmdCopyImageToBuffer' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdUpdateBuffer-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()---- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory------ = Description------ @dataSize@ /must/ be less than or equal to 65536 bytes. For larger--- updates, applications /can/ use buffer to buffer--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers copies>.------ Note------ Buffer updates performed with 'cmdUpdateBuffer' first copy the data into--- command buffer memory when the command is recorded (which requires--- additional storage and may incur an additional allocation), and then--- copy the data from the command buffer into @dstBuffer@ when the command--- is executed on a device.------ The additional cost of this functionality compared to--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers buffer to buffer copies>--- means it is only recommended for very small amounts of data, and is why--- it is limited to only 65536 bytes.------ Applications /can/ work around this by issuing multiple--- 'cmdUpdateBuffer' commands to different ranges of the same buffer, but--- it is strongly recommended that they /should/ not.------ The source data is copied from the user pointer to the command buffer--- when the command is called.------ 'cmdUpdateBuffer' is only allowed outside of a render pass. This command--- is treated as “transfer” operation, for the purposes of synchronization--- barriers. The--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'--- /must/ be specified in @usage@ of--- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be--- compatible with 'cmdUpdateBuffer'.------ == Valid Usage------ -   #VUID-vkCmdUpdateBuffer-dstOffset-00032# @dstOffset@ /must/ be less---     than the size of @dstBuffer@------ -   #VUID-vkCmdUpdateBuffer-dataSize-00033# @dataSize@ /must/ be less---     than or equal to the size of @dstBuffer@ minus @dstOffset@------ -   #VUID-vkCmdUpdateBuffer-dstBuffer-00034# @dstBuffer@ /must/ have---     been created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdUpdateBuffer-dstBuffer-00035# If @dstBuffer@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdUpdateBuffer-dstOffset-00036# @dstOffset@ /must/ be a---     multiple of @4@------ -   #VUID-vkCmdUpdateBuffer-dataSize-00037# @dataSize@ /must/ be less---     than or equal to @65536@------ -   #VUID-vkCmdUpdateBuffer-dataSize-00038# @dataSize@ /must/ be a---     multiple of @4@------ -   #VUID-vkCmdUpdateBuffer-commandBuffer-01813# If @commandBuffer@ is---     an unprotected command buffer, then @dstBuffer@ /must/ not be a---     protected buffer------ -   #VUID-vkCmdUpdateBuffer-commandBuffer-01814# If @commandBuffer@ is a---     protected command buffer, then @dstBuffer@ /must/ not be an---     unprotected buffer------ == Valid Usage (Implicit)------ -   #VUID-vkCmdUpdateBuffer-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdUpdateBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdUpdateBuffer-pData-parameter# @pData@ /must/ be a valid---     pointer to an array of @dataSize@ bytes------ -   #VUID-vkCmdUpdateBuffer-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-vkCmdUpdateBuffer-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics, or compute---     operations------ -   #VUID-vkCmdUpdateBuffer-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdUpdateBuffer-dataSize-arraylength# @dataSize@ /must/ be---     greater than @0@------ -   #VUID-vkCmdUpdateBuffer-commonparent# Both of @commandBuffer@, and---     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdUpdateBuffer :: forall io-                 . (MonadIO io)-                => -- | @commandBuffer@ is the command buffer into which the command will be-                   -- recorded.-                   CommandBuffer-                -> -- | @dstBuffer@ is a handle to the buffer to be updated.-                   ("dstBuffer" ::: Buffer)-                -> -- | @dstOffset@ is the byte offset into the buffer to start updating, and-                   -- /must/ be a multiple of 4.-                   ("dstOffset" ::: DeviceSize)-                -> -- | @dataSize@ is the number of bytes to update, and /must/ be a multiple of-                   -- 4.-                   ("dataSize" ::: DeviceSize)-                -> -- | @pData@ is a pointer to the source data for the buffer update, and-                   -- /must/ be at least @dataSize@ bytes in size.-                   ("data" ::: Ptr ())-                -> io ()-cmdUpdateBuffer commandBuffer dstBuffer dstOffset dataSize data' = liftIO $ do-  let vkCmdUpdateBufferPtr = pVkCmdUpdateBuffer (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdUpdateBufferPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdUpdateBuffer is null" Nothing Nothing-  let vkCmdUpdateBuffer' = mkVkCmdUpdateBuffer vkCmdUpdateBufferPtr-  traceAroundEvent "vkCmdUpdateBuffer" (vkCmdUpdateBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (dataSize) (data'))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdFillBuffer-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()---- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value------ = Description------ 'cmdFillBuffer' is treated as “transfer” operation for the purposes of--- synchronization barriers. The--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'--- /must/ be specified in @usage@ of--- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be--- compatible with 'cmdFillBuffer'.------ == Valid Usage------ -   #VUID-vkCmdFillBuffer-dstOffset-00024# @dstOffset@ /must/ be less---     than the size of @dstBuffer@------ -   #VUID-vkCmdFillBuffer-dstOffset-00025# @dstOffset@ /must/ be a---     multiple of @4@------ -   #VUID-vkCmdFillBuffer-size-00026# If @size@ is not equal to---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater---     than @0@------ -   #VUID-vkCmdFillBuffer-size-00027# If @size@ is not equal to---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less than---     or equal to the size of @dstBuffer@ minus @dstOffset@------ -   #VUID-vkCmdFillBuffer-size-00028# If @size@ is not equal to---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a multiple---     of @4@------ -   #VUID-vkCmdFillBuffer-dstBuffer-00029# @dstBuffer@ /must/ have been---     created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdFillBuffer-dstBuffer-00031# If @dstBuffer@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdFillBuffer-commandBuffer-01811# If @commandBuffer@ is an---     unprotected command buffer, then @dstBuffer@ /must/ not be a---     protected buffer------ -   #VUID-vkCmdFillBuffer-commandBuffer-01812# If @commandBuffer@ is a---     protected command buffer, then @dstBuffer@ /must/ not be an---     unprotected buffer------ == Valid Usage (Implicit)------ -   #VUID-vkCmdFillBuffer-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdFillBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdFillBuffer-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-vkCmdFillBuffer-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics or compute---     operations------ -   #VUID-vkCmdFillBuffer-renderpass# This command /must/ only be called---     outside of a render pass instance------ -   #VUID-vkCmdFillBuffer-commonparent# Both of @commandBuffer@, and---     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdFillBuffer :: forall io-               . (MonadIO io)-              => -- | @commandBuffer@ is the command buffer into which the command will be-                 -- recorded.-                 CommandBuffer-              -> -- | @dstBuffer@ is the buffer to be filled.-                 ("dstBuffer" ::: Buffer)-              -> -- | @dstOffset@ is the byte offset into the buffer at which to start-                 -- filling, and /must/ be a multiple of 4.-                 ("dstOffset" ::: DeviceSize)-              -> -- | @size@ is the number of bytes to fill, and /must/ be either a multiple-                 -- of 4, or 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to fill the range from-                 -- @offset@ to the end of the buffer. If-                 -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE' is used and the remaining size-                 -- of the buffer is not a multiple of 4, then the nearest smaller multiple-                 -- is used.-                 DeviceSize-              -> -- | @data@ is the 4-byte word written repeatedly to the buffer to fill-                 -- @size@ bytes of data. The data word is written to memory according to-                 -- the host endianness.-                 ("data" ::: Word32)-              -> io ()-cmdFillBuffer commandBuffer dstBuffer dstOffset size data' = liftIO $ do-  let vkCmdFillBufferPtr = pVkCmdFillBuffer (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdFillBufferPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdFillBuffer is null" Nothing Nothing-  let vkCmdFillBuffer' = mkVkCmdFillBuffer vkCmdFillBufferPtr-  traceAroundEvent "vkCmdFillBuffer" (vkCmdFillBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (size) (data'))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdClearColorImage-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()---- | vkCmdClearColorImage - Clear regions of a color image------ = Description------ Each specified range in @pRanges@ is cleared to the value specified by--- @pColor@.------ == Valid Usage------ -   #VUID-vkCmdClearColorImage-image-01993# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @image@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'------ -   #VUID-vkCmdClearColorImage-image-00002# @image@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdClearColorImage-image-01545# @image@ /must/ not use any---     of the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>------ -   #VUID-vkCmdClearColorImage-image-00003# If @image@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdClearColorImage-imageLayout-00004# @imageLayout@ /must/---     specify the layout of the image subresource ranges of @image@---     specified in @pRanges@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdClearColorImage-imageLayout-01394# @imageLayout@ /must/---     be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'------ -   #VUID-vkCmdClearColorImage-aspectMask-02498# The---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@---     members of the elements of the @pRanges@ array /must/ each only---     include---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'------ -   #VUID-vkCmdClearColorImage-baseMipLevel-01470# The---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@---     members of the elements of the @pRanges@ array /must/ each be less---     than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ -   #VUID-vkCmdClearColorImage-pRanges-01692# For each---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of---     @pRanges@, if the @levelCount@ member is not---     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then---     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was---     created------ -   #VUID-vkCmdClearColorImage-baseArrayLayer-01472# The---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@---     members of the elements of the @pRanges@ array /must/ each be less---     than the @arrayLayers@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ -   #VUID-vkCmdClearColorImage-pRanges-01693# For each---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of---     @pRanges@, if the @layerCount@ member is not---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then---     @baseArrayLayer@ + @layerCount@ /must/ be less than the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @image@ was created------ -   #VUID-vkCmdClearColorImage-image-00007# @image@ /must/ not have a---     compressed or depth\/stencil format------ -   #VUID-vkCmdClearColorImage-pColor-04961# @pColor@ /must/ be a valid---     pointer to a 'ClearColorValue' union------ -   #VUID-vkCmdClearColorImage-commandBuffer-01805# If @commandBuffer@---     is an unprotected command buffer, then @image@ /must/ not be a---     protected image------ -   #VUID-vkCmdClearColorImage-commandBuffer-01806# If @commandBuffer@---     is a protected command buffer, then @image@ /must/ not be an---     unprotected image------ == Valid Usage (Implicit)------ -   #VUID-vkCmdClearColorImage-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdClearColorImage-image-parameter# @image@ /must/ be a---     valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdClearColorImage-imageLayout-parameter# @imageLayout@---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'---     value------ -   #VUID-vkCmdClearColorImage-pRanges-parameter# @pRanges@ /must/ be a---     valid pointer to an array of @rangeCount@ valid---     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures------ -   #VUID-vkCmdClearColorImage-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-vkCmdClearColorImage-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdClearColorImage-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdClearColorImage-rangeCount-arraylength# @rangeCount@---     /must/ be greater than @0@------ -   #VUID-vkCmdClearColorImage-commonparent# Both of @commandBuffer@,---     and @image@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'ClearColorValue', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Handles.Image',--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',--- 'Vulkan.Core10.ImageView.ImageSubresourceRange'-cmdClearColorImage :: forall io-                    . (MonadIO io)-                   => -- | @commandBuffer@ is the command buffer into which the command will be-                      -- recorded.-                      CommandBuffer-                   -> -- | @image@ is the image to be cleared.-                      Image-                   -> -- | @imageLayout@ specifies the current layout of the image subresource-                      -- ranges to be cleared, and /must/ be-                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',-                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or-                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.-                      ImageLayout-                   -> -- | @pColor@ is a pointer to a 'ClearColorValue' structure containing the-                      -- values that the image subresource ranges will be cleared to (see-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>-                      -- below).-                      ClearColorValue-                   -> -- | @pRanges@ is a pointer to an array of-                      -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a-                      -- range of mipmap levels, array layers, and aspects to be cleared, as-                      -- described in-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.-                      ("ranges" ::: Vector ImageSubresourceRange)-                   -> io ()-cmdClearColorImage commandBuffer image imageLayout color ranges = liftIO . evalContT $ do-  let vkCmdClearColorImagePtr = pVkCmdClearColorImage (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdClearColorImagePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearColorImage is null" Nothing Nothing-  let vkCmdClearColorImage' = mkVkCmdClearColorImage vkCmdClearColorImagePtr-  pColor <- ContT $ withCStruct (color)-  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)-  lift $ traceAroundEvent "vkCmdClearColorImage" (vkCmdClearColorImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pColor ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdClearDepthStencilImage-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()---- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil--- image------ == Valid Usage------ -   #VUID-vkCmdClearDepthStencilImage-image-01994# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @image@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'------ -   #VUID-vkCmdClearDepthStencilImage-pRanges-02658# If the @aspect@---     member of any element of @pRanges@ includes---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',---     and @image@ was created with---     <VkImageStencilUsageCreateInfo.html separate stencil usage>,---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     /must/ have been included in the---     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@---     used to create @image@------ -   #VUID-vkCmdClearDepthStencilImage-pRanges-02659# If the @aspect@---     member of any element of @pRanges@ includes---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',---     and @image@ was not created with---     <VkImageStencilUsageCreateInfo.html separate stencil usage>,---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     /must/ have been included in the---     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create---     @image@------ -   #VUID-vkCmdClearDepthStencilImage-pRanges-02660# If the @aspect@---     member of any element of @pRanges@ includes---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     /must/ have been included in the---     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create---     @image@------ -   #VUID-vkCmdClearDepthStencilImage-image-00010# If @image@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00011# @imageLayout@---     /must/ specify the layout of the image subresource ranges of @image@---     specified in @pRanges@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00012# @imageLayout@---     /must/ be either of---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'------ -   #VUID-vkCmdClearDepthStencilImage-aspectMask-02824# The---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member---     of each element of the @pRanges@ array /must/ not include bits other---     than---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'------ -   #VUID-vkCmdClearDepthStencilImage-image-02825# If the @image@’s---     format does not have a stencil component, then the---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member---     of each element of the @pRanges@ array /must/ not include the---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'---     bit------ -   #VUID-vkCmdClearDepthStencilImage-image-02826# If the @image@’s---     format does not have a depth component, then the---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member---     of each element of the @pRanges@ array /must/ not include the---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' bit------ -   #VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474# The---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@---     members of the elements of the @pRanges@ array /must/ each be less---     than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ -   #VUID-vkCmdClearDepthStencilImage-pRanges-01694# For each---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of---     @pRanges@, if the @levelCount@ member is not---     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then---     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was---     created------ -   #VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476# The---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@---     members of the elements of the @pRanges@ array /must/ each be less---     than the @arrayLayers@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created------ -   #VUID-vkCmdClearDepthStencilImage-pRanges-01695# For each---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of---     @pRanges@, if the @layerCount@ member is not---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then---     @baseArrayLayer@ + @layerCount@ /must/ be less than the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @image@ was created------ -   #VUID-vkCmdClearDepthStencilImage-image-00014# @image@ /must/ have a---     depth\/stencil format------ -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01807# If---     @commandBuffer@ is an unprotected command buffer, then @image@---     /must/ not be a protected image------ -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01808# If---     @commandBuffer@ is a protected command buffer, then @image@ /must/---     not be an unprotected image------ == Valid Usage (Implicit)------ -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdClearDepthStencilImage-image-parameter# @image@ /must/ be---     a valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdClearDepthStencilImage-imageLayout-parameter#---     @imageLayout@ /must/ be a valid---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value------ -   #VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter#---     @pDepthStencil@ /must/ be a valid pointer to a valid---     'ClearDepthStencilValue' structure------ -   #VUID-vkCmdClearDepthStencilImage-pRanges-parameter# @pRanges@---     /must/ be a valid pointer to an array of @rangeCount@ valid---     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures------ -   #VUID-vkCmdClearDepthStencilImage-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-vkCmdClearDepthStencilImage-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdClearDepthStencilImage-renderpass# This command /must/---     only be called outside of a render pass instance------ -   #VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength#---     @rangeCount@ /must/ be greater than @0@------ -   #VUID-vkCmdClearDepthStencilImage-commonparent# Both of---     @commandBuffer@, and @image@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'ClearDepthStencilValue', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Handles.Image',--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',--- 'Vulkan.Core10.ImageView.ImageSubresourceRange'-cmdClearDepthStencilImage :: forall io-                           . (MonadIO io)-                          => -- | @commandBuffer@ is the command buffer into which the command will be-                             -- recorded.-                             CommandBuffer-                          -> -- | @image@ is the image to be cleared.-                             Image-                          -> -- | @imageLayout@ specifies the current layout of the image subresource-                             -- ranges to be cleared, and /must/ be-                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or-                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.-                             ImageLayout-                          -> -- | @pDepthStencil@ is a pointer to a 'ClearDepthStencilValue' structure-                             -- containing the values that the depth and stencil image subresource-                             -- ranges will be cleared to (see-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>-                             -- below).-                             ClearDepthStencilValue-                          -> -- | @pRanges@ is a pointer to an array of-                             -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a-                             -- range of mipmap levels, array layers, and aspects to be cleared, as-                             -- described in-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.-                             ("ranges" ::: Vector ImageSubresourceRange)-                          -> io ()-cmdClearDepthStencilImage commandBuffer image imageLayout depthStencil ranges = liftIO . evalContT $ do-  let vkCmdClearDepthStencilImagePtr = pVkCmdClearDepthStencilImage (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdClearDepthStencilImagePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearDepthStencilImage is null" Nothing Nothing-  let vkCmdClearDepthStencilImage' = mkVkCmdClearDepthStencilImage vkCmdClearDepthStencilImagePtr-  pDepthStencil <- ContT $ withCStruct (depthStencil)-  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)-  lift $ traceAroundEvent "vkCmdClearDepthStencilImage" (vkCmdClearDepthStencilImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pDepthStencil ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdClearAttachments-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()---- | vkCmdClearAttachments - Clear regions within bound framebuffer--- attachments------ = Description------ If the render pass has a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>,--- clears follow the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops operations of fragment density maps>--- as if each clear region was a primitive which generates fragments. The--- clear color is applied to all pixels inside each fragment’s area--- regardless if the pixels lie outside of the clear region. Clears /may/--- have a different set of supported fragment areas than draws.------ Unlike other--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,--- 'cmdClearAttachments' executes as a drawing command, rather than a--- transfer command, with writes performed by it executing in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order rasterization order>.--- Clears to color attachments are executed as color attachment writes, by--- the--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'--- stage. Clears to depth\/stencil attachments are executed as--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth writes>--- and--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil writes>--- by the--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'--- and--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'--- stages.------ 'cmdClearAttachments' is not affected by the bound pipeline state.------ Note------ It’s generally advised that attachments are cleared by using the--- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' load--- operation at the start of rendering, which will be more efficient on--- some implementations.------ == Valid Usage------ -   #VUID-vkCmdClearAttachments-aspectMask-02501# If the @aspectMask@---     member of any element of @pAttachments@ contains---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',---     then the @colorAttachment@ member of that element /must/ either---     refer to a color attachment which is---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ be a valid---     color attachment------ -   #VUID-vkCmdClearAttachments-aspectMask-02502# If the @aspectMask@---     member of any element of @pAttachments@ contains---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',---     then the current subpass\' depth\/stencil attachment /must/ either---     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a---     depth component------ -   #VUID-vkCmdClearAttachments-aspectMask-02503# If the @aspectMask@---     member of any element of @pAttachments@ contains---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',---     then the current subpass\' depth\/stencil attachment /must/ either---     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a---     stencil component------ -   #VUID-vkCmdClearAttachments-rect-02682# The @rect@ member of each---     element of @pRects@ /must/ have an @extent.width@ greater than @0@------ -   #VUID-vkCmdClearAttachments-rect-02683# The @rect@ member of each---     element of @pRects@ /must/ have an @extent.height@ greater than @0@------ -   #VUID-vkCmdClearAttachments-pRects-00016# The rectangular region---     specified by each element of @pRects@ /must/ be contained within the---     render area of the current render pass instance------ -   #VUID-vkCmdClearAttachments-pRects-00017# The layers specified by---     each element of @pRects@ /must/ be contained within every attachment---     that @pAttachments@ refers to------ -   #VUID-vkCmdClearAttachments-layerCount-01934# The @layerCount@---     member of each element of @pRects@ /must/ not be @0@------ -   #VUID-vkCmdClearAttachments-commandBuffer-02504# If @commandBuffer@---     is an unprotected command buffer, then each attachment to be cleared---     /must/ not be a protected image------ -   #VUID-vkCmdClearAttachments-commandBuffer-02505# If @commandBuffer@---     is a protected command buffer, then each attachment to be cleared---     /must/ not be an unprotected image------ -   #VUID-vkCmdClearAttachments-baseArrayLayer-00018# If the render pass---     instance this is recorded in uses multiview, then @baseArrayLayer@---     /must/ be zero and @layerCount@ /must/ be one------ == Valid Usage (Implicit)------ -   #VUID-vkCmdClearAttachments-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdClearAttachments-pAttachments-parameter# @pAttachments@---     /must/ be a valid pointer to an array of @attachmentCount@ valid---     'ClearAttachment' structures------ -   #VUID-vkCmdClearAttachments-pRects-parameter# @pRects@ /must/ be a---     valid pointer to an array of @rectCount@ 'ClearRect' structures------ -   #VUID-vkCmdClearAttachments-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-vkCmdClearAttachments-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdClearAttachments-renderpass# This command /must/ only be---     called inside of a render pass instance------ -   #VUID-vkCmdClearAttachments-attachmentCount-arraylength#---     @attachmentCount@ /must/ be greater than @0@------ -   #VUID-vkCmdClearAttachments-rectCount-arraylength# @rectCount@---     /must/ be greater than @0@------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'ClearAttachment', 'ClearRect', 'Vulkan.Core10.Handles.CommandBuffer'-cmdClearAttachments :: forall io-                     . (MonadIO io)-                    => -- | @commandBuffer@ is the command buffer into which the command will be-                       -- recorded.-                       CommandBuffer-                    -> -- | @pAttachments@ is a pointer to an array of 'ClearAttachment' structures-                       -- defining the attachments to clear and the clear values to use. If any-                       -- attachment index to be cleared is not backed by an image view, then the-                       -- clear has no effect.-                       ("attachments" ::: Vector ClearAttachment)-                    -> -- | @pRects@ is a pointer to an array of 'ClearRect' structures defining-                       -- regions within each selected attachment to clear.-                       ("rects" ::: Vector ClearRect)-                    -> io ()-cmdClearAttachments commandBuffer attachments rects = liftIO . evalContT $ do-  let vkCmdClearAttachmentsPtr = pVkCmdClearAttachments (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdClearAttachmentsPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearAttachments is null" Nothing Nothing-  let vkCmdClearAttachments' = mkVkCmdClearAttachments vkCmdClearAttachmentsPtr-  pPAttachments <- ContT $ allocaBytes @ClearAttachment ((Data.Vector.length (attachments)) * 24)-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments `plusPtr` (24 * (i)) :: Ptr ClearAttachment) (e) . ($ ())) (attachments)-  pPRects <- ContT $ allocaBytes @ClearRect ((Data.Vector.length (rects)) * 24)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRects `plusPtr` (24 * (i)) :: Ptr ClearRect) (e)) (rects)-  lift $ traceAroundEvent "vkCmdClearAttachments" (vkCmdClearAttachments' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32)) (pPAttachments) ((fromIntegral (Data.Vector.length $ (rects)) :: Word32)) (pPRects))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdResolveImage-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()---- | vkCmdResolveImage - Resolve regions of an image------ = Description------ During the resolve the samples corresponding to each pixel location in--- the source are converted to a single sample before being written to the--- destination. If the source formats are floating-point or normalized--- types, the sample values for each pixel are resolved in an--- implementation-dependent manner. If the source formats are integer--- types, a single sample’s value is selected for each pixel.------ @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets--- in texels of the sub-regions of the source and destination image data.--- @extent@ is the size in texels of the source image to resolve in--- @width@, @height@ and @depth@. Each element of @pRegions@ /must/ be a--- region that is contained within its corresponding image.------ Resolves are done layer by layer starting with @baseArrayLayer@ member--- of @srcSubresource@ for the source and @dstSubresource@ for the--- destination. @layerCount@ layers are resolved to the destination image.------ == Valid Usage------ -   #VUID-vkCmdResolveImage-commandBuffer-01837# If @commandBuffer@ is---     an unprotected command buffer, then @srcImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdResolveImage-commandBuffer-01838# If @commandBuffer@ is---     an unprotected command buffer, then @dstImage@ /must/ not be a---     protected image------ -   #VUID-vkCmdResolveImage-commandBuffer-01839# If @commandBuffer@ is a---     protected command buffer, then @dstImage@ /must/ not be an---     unprotected image------ -   #VUID-vkCmdResolveImage-pRegions-00255# The union of all source---     regions, and the union of all destination regions, specified by the---     elements of @pRegions@, /must/ not overlap in memory------ -   #VUID-vkCmdResolveImage-srcImage-00256# If @srcImage@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdResolveImage-srcImage-00257# @srcImage@ /must/ have a---     sample count equal to any valid sample count value other than---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'------ -   #VUID-vkCmdResolveImage-dstImage-00258# If @dstImage@ is non-sparse---     then it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdResolveImage-dstImage-00259# @dstImage@ /must/ have a---     sample count equal to---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'------ -   #VUID-vkCmdResolveImage-srcImageLayout-00260# @srcImageLayout@---     /must/ specify the layout of the image subresources of @srcImage@---     specified in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdResolveImage-srcImageLayout-01400# @srcImageLayout@---     /must/ be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'------ -   #VUID-vkCmdResolveImage-dstImageLayout-00262# @dstImageLayout@---     /must/ specify the layout of the image subresources of @dstImage@---     specified in @pRegions@ at the time this command is executed on a---     'Vulkan.Core10.Handles.Device'------ -   #VUID-vkCmdResolveImage-dstImageLayout-01401# @dstImageLayout@---     /must/ be---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'------ -   #VUID-vkCmdResolveImage-dstImage-02003# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>---     of @dstImage@ /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'------ -   #VUID-vkCmdResolveImage-srcImage-01386# @srcImage@ and @dstImage@---     /must/ have been created with the same image format------ -   #VUID-vkCmdResolveImage-srcSubresource-01709# The---     @srcSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created------ -   #VUID-vkCmdResolveImage-dstSubresource-01710# The---     @dstSubresource.mipLevel@ member of each element of @pRegions@---     /must/ be less than the @mipLevels@ specified in---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created------ -   #VUID-vkCmdResolveImage-srcSubresource-01711# The---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @srcImage@ was created------ -   #VUID-vkCmdResolveImage-dstSubresource-01712# The---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of---     each element of @pRegions@ /must/ be less than or equal to the---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'---     when @dstImage@ was created------ -   #VUID-vkCmdResolveImage-dstImage-02546# @dstImage@ and @srcImage@---     /must/ not have been created with @flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'------ -   #VUID-vkCmdResolveImage-srcImage-04446# If either @srcImage@ or---     @dstImage@ are of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and---     @srcSubresource.layerCount@ /must/ be @1@------ -   #VUID-vkCmdResolveImage-srcImage-04447# If either @srcImage@ or---     @dstImage@ are of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and---     @dstSubresource.layerCount@ /must/ be @1@------ -   #VUID-vkCmdResolveImage-srcOffset-00269# For each element of---     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the width of the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdResolveImage-srcOffset-00270# For each element of---     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the height of the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdResolveImage-srcImage-00271# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@---     /must/ be @1@------ -   #VUID-vkCmdResolveImage-srcOffset-00272# For each element of---     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the depth of the specified @srcSubresource@ of @srcImage@------ -   #VUID-vkCmdResolveImage-srcImage-00273# If @srcImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/---     be @1@------ -   #VUID-vkCmdResolveImage-dstOffset-00274# For each element of---     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the width of the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdResolveImage-dstOffset-00275# For each element of---     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the height of the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdResolveImage-dstImage-00276# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element---     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@---     /must/ be @1@------ -   #VUID-vkCmdResolveImage-dstOffset-00277# For each element of---     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)---     /must/ both be greater than or equal to @0@ and less than or equal---     to the depth of the specified @dstSubresource@ of @dstImage@------ -   #VUID-vkCmdResolveImage-dstImage-00278# If @dstImage@ is of type---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element---     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/---     be @1@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdResolveImage-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdResolveImage-srcImage-parameter# @srcImage@ /must/ be a---     valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdResolveImage-srcImageLayout-parameter# @srcImageLayout@---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'---     value------ -   #VUID-vkCmdResolveImage-dstImage-parameter# @dstImage@ /must/ be a---     valid 'Vulkan.Core10.Handles.Image' handle------ -   #VUID-vkCmdResolveImage-dstImageLayout-parameter# @dstImageLayout@---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'---     value------ -   #VUID-vkCmdResolveImage-pRegions-parameter# @pRegions@ /must/ be a---     valid pointer to an array of @regionCount@ valid 'ImageResolve'---     structures------ -   #VUID-vkCmdResolveImage-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-vkCmdResolveImage-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdResolveImage-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdResolveImage-regionCount-arraylength# @regionCount@---     /must/ be greater than @0@------ -   #VUID-vkCmdResolveImage-commonparent# Each of @commandBuffer@,---     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageResolve'-cmdResolveImage :: forall io-                 . (MonadIO io)-                => -- | @commandBuffer@ is the command buffer into which the command will be-                   -- recorded.-                   CommandBuffer-                -> -- | @srcImage@ is the source image.-                   ("srcImage" ::: Image)-                -> -- | @srcImageLayout@ is the layout of the source image subresources for the-                   -- resolve.-                   ("srcImageLayout" ::: ImageLayout)-                -> -- | @dstImage@ is the destination image.-                   ("dstImage" ::: Image)-                -> -- | @dstImageLayout@ is the layout of the destination image subresources for-                   -- the resolve.-                   ("dstImageLayout" ::: ImageLayout)-                -> -- | @pRegions@ is a pointer to an array of 'ImageResolve' structures-                   -- specifying the regions to resolve.-                   ("regions" ::: Vector ImageResolve)-                -> io ()-cmdResolveImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do-  let vkCmdResolveImagePtr = pVkCmdResolveImage (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdResolveImagePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResolveImage is null" Nothing Nothing-  let vkCmdResolveImage' = mkVkCmdResolveImage vkCmdResolveImagePtr-  pPRegions <- ContT $ allocaBytes @ImageResolve ((Data.Vector.length (regions)) * 68)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageResolve) (e)) (regions)-  lift $ traceAroundEvent "vkCmdResolveImage" (vkCmdResolveImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdSetEvent-  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()---- | vkCmdSetEvent - Set an event object to signaled state------ = Description------ 'cmdSetEvent' behaves identically to--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR', except that--- it does not define an access scope, and /must/ only be used with--- 'cmdWaitEvents', not--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR'.------ == Valid Usage------ -   #VUID-vkCmdSetEvent-stageMask-04090# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'------ -   #VUID-vkCmdSetEvent-stageMask-04091# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'------ -   #VUID-vkCmdSetEvent-stageMask-04092# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'------ -   #VUID-vkCmdSetEvent-stageMask-04093# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'------ -   #VUID-vkCmdSetEvent-stageMask-04094# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'------ -   #VUID-vkCmdSetEvent-stageMask-04095# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'------ -   #VUID-vkCmdSetEvent-stageMask-04096# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'------ -   #VUID-vkCmdSetEvent-stageMask-04097# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'------ -   #VUID-vkCmdSetEvent-stageMask-04098# Any pipeline stage included in---     @stageMask@ /must/ be supported by the capabilities of the queue---     family specified by the @queueFamilyIndex@ member of the---     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was---     used to create the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>------ -   #VUID-vkCmdSetEvent-stageMask-03937# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>---     feature is not enabled, @stageMask@ /must/ not be @0@------ -   #VUID-vkCmdSetEvent-stageMask-01149# @stageMask@ /must/ not include---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'------ -   #VUID-vkCmdSetEvent-commandBuffer-01152# @commandBuffer@’s current---     device mask /must/ include exactly one physical device------ == Valid Usage (Implicit)------ -   #VUID-vkCmdSetEvent-commandBuffer-parameter# @commandBuffer@ /must/---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdSetEvent-event-parameter# @event@ /must/ be a valid---     'Vulkan.Core10.Handles.Event' handle------ -   #VUID-vkCmdSetEvent-stageMask-parameter# @stageMask@ /must/ be a---     valid combination of---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'---     values------ -   #VUID-vkCmdSetEvent-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-vkCmdSetEvent-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdSetEvent-renderpass# This command /must/ only be called---     outside of a render pass instance------ -   #VUID-vkCmdSetEvent-commonparent# Both of @commandBuffer@, and---     @event@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'-cmdSetEvent :: forall io-             . (MonadIO io)-            => -- | @commandBuffer@ is the command buffer into which the command is-               -- recorded.-               CommandBuffer-            -> -- | @event@ is the event that will be signaled.-               Event-            -> -- | @stageMask@ specifies the-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>-               -- used to determine the first-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.-               ("stageMask" ::: PipelineStageFlags)-            -> io ()-cmdSetEvent commandBuffer event stageMask = liftIO $ do-  let vkCmdSetEventPtr = pVkCmdSetEvent (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdSetEventPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetEvent is null" Nothing Nothing-  let vkCmdSetEvent' = mkVkCmdSetEvent vkCmdSetEventPtr-  traceAroundEvent "vkCmdSetEvent" (vkCmdSetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdResetEvent-  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()---- | vkCmdResetEvent - Reset an event object to non-signaled state------ = Description------ 'cmdResetEvent' behaves identically to--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdResetEvent2KHR'.------ == Valid Usage------ -   #VUID-vkCmdResetEvent-stageMask-04090# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'------ -   #VUID-vkCmdResetEvent-stageMask-04091# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'------ -   #VUID-vkCmdResetEvent-stageMask-04092# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'------ -   #VUID-vkCmdResetEvent-stageMask-04093# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'------ -   #VUID-vkCmdResetEvent-stageMask-04094# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'------ -   #VUID-vkCmdResetEvent-stageMask-04095# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'------ -   #VUID-vkCmdResetEvent-stageMask-04096# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'------ -   #VUID-vkCmdResetEvent-stageMask-04097# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature is not enabled, @stageMask@ /must/ not contain---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'------ -   #VUID-vkCmdResetEvent-stageMask-04098# Any pipeline stage included---     in @stageMask@ /must/ be supported by the capabilities of the queue---     family specified by the @queueFamilyIndex@ member of the---     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was---     used to create the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>------ -   #VUID-vkCmdResetEvent-stageMask-03937# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>---     feature is not enabled, @stageMask@ /must/ not be @0@------ -   #VUID-vkCmdResetEvent-stageMask-01153# @stageMask@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'------ -   #VUID-vkCmdResetEvent-event-03834# There /must/ be an execution---     dependency between 'cmdResetEvent' and the execution of any---     'cmdWaitEvents' that includes @event@ in its @pEvents@ parameter------ -   #VUID-vkCmdResetEvent-event-03835# There /must/ be an execution---     dependency between 'cmdResetEvent' and the execution of any---     'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR' that---     includes @event@ in its @pEvents@ parameter------ -   #VUID-vkCmdResetEvent-commandBuffer-01157# @commandBuffer@’s current---     device mask /must/ include exactly one physical device------ == Valid Usage (Implicit)------ -   #VUID-vkCmdResetEvent-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdResetEvent-event-parameter# @event@ /must/ be a valid---     'Vulkan.Core10.Handles.Event' handle------ -   #VUID-vkCmdResetEvent-stageMask-parameter# @stageMask@ /must/ be a---     valid combination of---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'---     values------ -   #VUID-vkCmdResetEvent-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-vkCmdResetEvent-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdResetEvent-renderpass# This command /must/ only be called---     outside of a render pass instance------ -   #VUID-vkCmdResetEvent-commonparent# Both of @commandBuffer@, and---     @event@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'-cmdResetEvent :: forall io-               . (MonadIO io)-              => -- | @commandBuffer@ is the command buffer into which the command is-                 -- recorded.-                 CommandBuffer-              -> -- | @event@ is the event that will be unsignaled.-                 Event-              -> -- | @stageMask@ is a bitmask of-                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                 -- specifying the-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>-                 -- used to determine when the @event@ is unsignaled.-                 ("stageMask" ::: PipelineStageFlags)-              -> io ()-cmdResetEvent commandBuffer event stageMask = liftIO $ do-  let vkCmdResetEventPtr = pVkCmdResetEvent (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdResetEventPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetEvent is null" Nothing Nothing-  let vkCmdResetEvent' = mkVkCmdResetEvent vkCmdResetEventPtr-  traceAroundEvent "vkCmdResetEvent" (vkCmdResetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdWaitEventsUnsafe-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()--foreign import ccall-  "dynamic" mkVkCmdWaitEventsSafe-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()---- | cmdWaitEvents with selectable safeness-cmdWaitEventsSafeOrUnsafe :: forall io-                           . (MonadIO io)-                          => (FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ())-                          -> -- | @commandBuffer@ is the command buffer into which the command is-                             -- recorded.-                             CommandBuffer-                          -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.-                             ("events" ::: Vector Event)-                          -> -- | @srcStageMask@ is a bitmask of-                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                             -- specifying the-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.-                             ("srcStageMask" ::: PipelineStageFlags)-                          -> -- | @dstStageMask@ is a bitmask of-                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                             -- specifying the-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.-                             ("dstStageMask" ::: PipelineStageFlags)-                          -> -- | @pMemoryBarriers@ is a pointer to an array of-                             -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.-                             ("memoryBarriers" ::: Vector MemoryBarrier)-                          -> -- | @pBufferMemoryBarriers@ is a pointer to an array of-                             -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.-                             ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)-                          -> -- | @pImageMemoryBarriers@ is a pointer to an array of-                             -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.-                             ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))-                          -> io ()-cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEvents commandBuffer events srcStageMask dstStageMask memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do-  let vkCmdWaitEventsPtr = pVkCmdWaitEvents (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdWaitEventsPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWaitEvents is null" Nothing Nothing-  let vkCmdWaitEvents' = mkVkCmdWaitEvents vkCmdWaitEventsPtr-  pPEvents <- ContT $ allocaBytes @Event ((Data.Vector.length (events)) * 8)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)-  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)-  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)-  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)-  lift $ traceAroundEvent "vkCmdWaitEvents" (vkCmdWaitEvents' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (events)) :: Word32)) (pPEvents) (srcStageMask) (dstStageMask) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))-  pure $ ()---- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory------ = Description------ 'cmdWaitEvents' is largely similar to--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR', but /can/--- only wait on signal operations defined by 'cmdSetEvent'. As--- 'cmdSetEvent' does not define any access scopes, 'cmdWaitEvents' defines--- the first access scope for each event signal operation in addition to--- its own access scopes.------ Note------ Since 'cmdSetEvent' does not have any dependency information beyond a--- stage mask, implementations do not have the same opportunity to perform--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>--- or--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>--- in advance as they do with--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR' and--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR'.------ When 'cmdWaitEvents' is submitted to a queue, it defines a memory--- dependency between prior event signal operations on the same queue or--- the host, and subsequent commands. 'cmdWaitEvents' /must/ not be used to--- wait on event signal operations occurring on other queues.------ The first synchronization scope only includes event signal operations--- that operate on members of @pEvents@, and the operations that--- happened-before the event signal operations. Event signal operations--- performed by 'cmdSetEvent' that occur earlier in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>--- are included in the first synchronization scope, if the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>--- pipeline stage in their @stageMask@ parameter is--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>--- than or equal to the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>--- pipeline stage in @srcStageMask@. Event signal operations performed by--- 'Vulkan.Core10.Event.setEvent' are only included in the first--- synchronization scope if--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' is--- included in @srcStageMask@.------ The second--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur later in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.--- The second synchronization scope is limited to operations on the--- pipeline stages determined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@.------ The first--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>--- is limited to accesses in the pipeline stages determined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>--- specified by @srcStageMask@. Within that, the first access scope only--- includes the first access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the first access scope--- includes no accesses.------ The second--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>--- is limited to accesses in the pipeline stages determined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@. Within that, the second access scope only--- includes the second access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the second access scope--- includes no accesses.------ == Valid Usage------ -   #VUID-vkCmdWaitEvents-srcStageMask-04090# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04091# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04092# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04093# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04094# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04095# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04096# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04097# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'------ -   #VUID-vkCmdWaitEvents-srcStageMask-04098# Any pipeline stage---     included in @srcStageMask@ /must/ be supported by the capabilities---     of the queue family specified by the @queueFamilyIndex@ member of---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>------ -   #VUID-vkCmdWaitEvents-srcStageMask-03937# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>---     feature is not enabled, @srcStageMask@ /must/ not be @0@------ -   #VUID-vkCmdWaitEvents-dstStageMask-04090# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04091# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04092# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04093# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04094# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04095# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04096# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04097# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'------ -   #VUID-vkCmdWaitEvents-dstStageMask-04098# Any pipeline stage---     included in @dstStageMask@ /must/ be supported by the capabilities---     of the queue family specified by the @queueFamilyIndex@ member of---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>------ -   #VUID-vkCmdWaitEvents-dstStageMask-03937# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>---     feature is not enabled, @dstStageMask@ /must/ not be @0@------ -   #VUID-vkCmdWaitEvents-srcAccessMask-02815# The @srcAccessMask@---     member of each element of @pMemoryBarriers@ /must/ only include---     access flags that are supported by one or more of the pipeline---     stages in @srcStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdWaitEvents-dstAccessMask-02816# The @dstAccessMask@---     member of each element of @pMemoryBarriers@ /must/ only include---     access flags that are supported by one or more of the pipeline---     stages in @dstStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817# For any element---     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @srcQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @srcAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @srcStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818# For any element---     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @dstQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @dstAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @dstStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819# For any element of---     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @srcQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @srcAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @srcStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820# For any element of---     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @dstQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @dstAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @dstStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdWaitEvents-srcStageMask-01158# @srcStageMask@ /must/ be---     the bitwise OR of the @stageMask@ parameter used in previous calls---     to 'cmdSetEvent' with any of the elements of @pEvents@ and---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'---     if any of the elements of @pEvents@ was set using---     'Vulkan.Core10.Event.setEvent'------ -   #VUID-vkCmdWaitEvents-pEvents-01163# If @pEvents@ includes one or---     more events that will be signaled by 'Vulkan.Core10.Event.setEvent'---     after @commandBuffer@ has been submitted to a queue, then---     'cmdWaitEvents' /must/ not be called inside a render pass instance------ -   #VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803# The---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any---     element of @pBufferMemoryBarriers@ or @pImageMemoryBarriers@ /must/---     be equal------ -   #VUID-vkCmdWaitEvents-commandBuffer-01167# @commandBuffer@’s current---     device mask /must/ include exactly one physical device------ -   #VUID-vkCmdWaitEvents-pEvents-03847# Elements of @pEvents@ /must/---     not have been signaled by---     'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR'------ == Valid Usage (Implicit)------ -   #VUID-vkCmdWaitEvents-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdWaitEvents-pEvents-parameter# @pEvents@ /must/ be a valid---     pointer to an array of @eventCount@ valid---     'Vulkan.Core10.Handles.Event' handles------ -   #VUID-vkCmdWaitEvents-srcStageMask-parameter# @srcStageMask@ /must/---     be a valid combination of---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'---     values------ -   #VUID-vkCmdWaitEvents-dstStageMask-parameter# @dstStageMask@ /must/---     be a valid combination of---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'---     values------ -   #VUID-vkCmdWaitEvents-pMemoryBarriers-parameter# If---     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid---     pointer to an array of @memoryBarrierCount@ valid---     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures------ -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter# If---     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@---     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@---     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures------ -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter# If---     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/---     be a valid pointer to an array of @imageMemoryBarrierCount@ valid---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures------ -   #VUID-vkCmdWaitEvents-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-vkCmdWaitEvents-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdWaitEvents-eventCount-arraylength# @eventCount@ /must/ be---     greater than @0@------ -   #VUID-vkCmdWaitEvents-commonparent# Both of @commandBuffer@, and the---     elements of @pEvents@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',--- 'Vulkan.Core10.OtherTypes.MemoryBarrier',--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'-cmdWaitEvents :: forall io-               . (MonadIO io)-              => -- | @commandBuffer@ is the command buffer into which the command is-                 -- recorded.-                 CommandBuffer-              -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.-                 ("events" ::: Vector Event)-              -> -- | @srcStageMask@ is a bitmask of-                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                 -- specifying the-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.-                 ("srcStageMask" ::: PipelineStageFlags)-              -> -- | @dstStageMask@ is a bitmask of-                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                 -- specifying the-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.-                 ("dstStageMask" ::: PipelineStageFlags)-              -> -- | @pMemoryBarriers@ is a pointer to an array of-                 -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.-                 ("memoryBarriers" ::: Vector MemoryBarrier)-              -> -- | @pBufferMemoryBarriers@ is a pointer to an array of-                 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.-                 ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)-              -> -- | @pImageMemoryBarriers@ is a pointer to an array of-                 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.-                 ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))-              -> io ()-cmdWaitEvents = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsUnsafe---- | A variant of 'cmdWaitEvents' which makes a *safe* FFI call-cmdWaitEventsSafe :: forall io-                   . (MonadIO io)-                  => -- | @commandBuffer@ is the command buffer into which the command is-                     -- recorded.-                     CommandBuffer-                  -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.-                     ("events" ::: Vector Event)-                  -> -- | @srcStageMask@ is a bitmask of-                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                     -- specifying the-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.-                     ("srcStageMask" ::: PipelineStageFlags)-                  -> -- | @dstStageMask@ is a bitmask of-                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                     -- specifying the-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.-                     ("dstStageMask" ::: PipelineStageFlags)-                  -> -- | @pMemoryBarriers@ is a pointer to an array of-                     -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.-                     ("memoryBarriers" ::: Vector MemoryBarrier)-                  -> -- | @pBufferMemoryBarriers@ is a pointer to an array of-                     -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.-                     ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)-                  -> -- | @pImageMemoryBarriers@ is a pointer to an array of-                     -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.-                     ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))-                  -> io ()-cmdWaitEventsSafe = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsSafe---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdPipelineBarrier-  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()---- | vkCmdPipelineBarrier - Insert a memory dependency------ = Description------ 'cmdPipelineBarrier' operates almost identically to--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdPipelineBarrier2KHR',--- except that the scopes and barriers are defined as direct parameters--- rather than being defined by an--- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'.------ When 'cmdPipelineBarrier' is submitted to a queue, it defines a memory--- dependency between commands that were submitted before it, and those--- submitted after it.------ If 'cmdPipelineBarrier' was recorded outside a render pass instance, the--- first--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur earlier in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.--- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the--- first synchronization scope includes only commands that occur earlier in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>--- within the same subpass. In either case, the first synchronization scope--- is limited to operations on the pipeline stages determined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>--- specified by @srcStageMask@.------ If 'cmdPipelineBarrier' was recorded outside a render pass instance, the--- second--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur later in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.--- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the--- second synchronization scope includes only commands that occur later in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>--- within the same subpass. In either case, the second synchronization--- scope is limited to operations on the pipeline stages determined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@.------ The first--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>--- is limited to accesses in the pipeline stages determined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>--- specified by @srcStageMask@. Within that, the first access scope only--- includes the first access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the first access scope--- includes no accesses.------ The second--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>--- is limited to accesses in the pipeline stages determined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@. Within that, the second access scope only--- includes the second access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the second access scope--- includes no accesses.------ If @dependencyFlags@ includes--- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT', then--- any dependency between--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space>--- pipeline stages is--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>--- - otherwise it is--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-global>.------ == Valid Usage------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04090# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04091# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04092# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04093# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04094# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04095# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04096# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04097# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature is not enabled, @srcStageMask@ /must/ not contain---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-04098# Any pipeline stage---     included in @srcStageMask@ /must/ be supported by the capabilities---     of the queue family specified by the @queueFamilyIndex@ member of---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-03937# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>---     feature is not enabled, @srcStageMask@ /must/ not be @0@------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04090# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04091# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04092# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04093# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04094# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04095# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04096# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04097# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature is not enabled, @dstStageMask@ /must/ not contain---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-04098# Any pipeline stage---     included in @dstStageMask@ /must/ be supported by the capabilities---     of the queue family specified by the @queueFamilyIndex@ member of---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-03937# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>---     feature is not enabled, @dstStageMask@ /must/ not be @0@------ -   #VUID-vkCmdPipelineBarrier-srcAccessMask-02815# The @srcAccessMask@---     member of each element of @pMemoryBarriers@ /must/ only include---     access flags that are supported by one or more of the pipeline---     stages in @srcStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdPipelineBarrier-dstAccessMask-02816# The @dstAccessMask@---     member of each element of @pMemoryBarriers@ /must/ only include---     access flags that are supported by one or more of the pipeline---     stages in @dstStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817# For any---     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @srcQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @srcAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @srcStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818# For any---     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @dstQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @dstAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @dstStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819# For any---     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @srcQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @srcAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @srcStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820# For any---     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and---     @dstQueueFamilyIndex@ members are equal, or if its---     @dstQueueFamilyIndex@ is the queue family index that was used to---     create the command pool that @commandBuffer@ was allocated from,---     then its @dstAccessMask@ member /must/ only contain access flags---     that are supported by one or more of the pipeline stages in---     @dstStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>------ -   #VUID-vkCmdPipelineBarrier-pDependencies-02285# If---     'cmdPipelineBarrier' is called within a render pass instance, the---     render pass /must/ have been created with at least one---     'Vulkan.Core10.Pass.SubpassDependency' instance in---     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that---     expresses a dependency from the current subpass to itself, with---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scopes>---     and---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>---     that are all supersets of the scopes defined in this command------ -   #VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178# If---     'cmdPipelineBarrier' is called within a render pass instance, it---     /must/ not include any buffer memory barriers------ -   #VUID-vkCmdPipelineBarrier-image-04073# If 'cmdPipelineBarrier' is---     called within a render pass instance, the @image@ member of any---     image memory barrier included in this command /must/ be an---     attachment used in the current subpass both as an input attachment,---     and as either a color or depth\/stencil attachment------ -   #VUID-vkCmdPipelineBarrier-oldLayout-01181# If 'cmdPipelineBarrier'---     is called within a render pass instance, the @oldLayout@ and---     @newLayout@ members of any image memory barrier included in this---     command /must/ be equal------ -   #VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182# If---     'cmdPipelineBarrier' is called within a render pass instance, the---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any image---     memory barrier included in this command /must/ be equal------ -   #VUID-vkCmdPipelineBarrier-dependencyFlags-01186# If---     'cmdPipelineBarrier' is called outside of a render pass instance,---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'---     /must/ not be included in the dependency flags------ == Valid Usage (Implicit)------ -   #VUID-vkCmdPipelineBarrier-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdPipelineBarrier-srcStageMask-parameter# @srcStageMask@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'---     values------ -   #VUID-vkCmdPipelineBarrier-dstStageMask-parameter# @dstStageMask@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'---     values------ -   #VUID-vkCmdPipelineBarrier-dependencyFlags-parameter#---     @dependencyFlags@ /must/ be a valid combination of---     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' values------ -   #VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter# If---     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid---     pointer to an array of @memoryBarrierCount@ valid---     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures------ -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter# If---     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@---     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@---     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures------ -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter# If---     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/---     be a valid pointer to an array of @imageMemoryBarrierCount@ valid---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures------ -   #VUID-vkCmdPipelineBarrier-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-vkCmdPipelineBarrier-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics, or compute---     operations------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',--- 'Vulkan.Core10.OtherTypes.MemoryBarrier',--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'-cmdPipelineBarrier :: forall io-                    . (MonadIO io)-                   => -- | @commandBuffer@ is the command buffer into which the command is-                      -- recorded.-                      CommandBuffer-                   -> -- | @srcStageMask@ is a bitmask of-                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                      -- specifying the-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stages>.-                      ("srcStageMask" ::: PipelineStageFlags)-                   -> -- | @dstStageMask@ is a bitmask of-                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'-                      -- specifying the-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stages>.-                      ("dstStageMask" ::: PipelineStageFlags)-                   -> -- | @dependencyFlags@ is a bitmask of-                      -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' specifying-                      -- how execution and memory dependencies are formed.-                      DependencyFlags-                   -> -- | @pMemoryBarriers@ is a pointer to an array of-                      -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.-                      ("memoryBarriers" ::: Vector MemoryBarrier)-                   -> -- | @pBufferMemoryBarriers@ is a pointer to an array of-                      -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.-                      ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)-                   -> -- | @pImageMemoryBarriers@ is a pointer to an array of-                      -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.-                      ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))-                   -> io ()-cmdPipelineBarrier commandBuffer srcStageMask dstStageMask dependencyFlags memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do-  let vkCmdPipelineBarrierPtr = pVkCmdPipelineBarrier (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdPipelineBarrierPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPipelineBarrier is null" Nothing Nothing-  let vkCmdPipelineBarrier' = mkVkCmdPipelineBarrier vkCmdPipelineBarrierPtr-  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)-  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)-  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)-  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)-  lift $ traceAroundEvent "vkCmdPipelineBarrier" (vkCmdPipelineBarrier' (commandBufferHandle (commandBuffer)) (srcStageMask) (dstStageMask) (dependencyFlags) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBeginQuery-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()---- | vkCmdBeginQuery - Begin a query------ = Description------ If the @queryType@ of the pool is--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' and @flags@--- contains--- 'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT', an--- implementation /must/ return a result that matches the actual number of--- samples passed. This is described in more detail in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion Occlusion Queries>.------ Calling 'cmdBeginQuery' is equivalent to calling--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT'--- with the @index@ parameter set to zero.------ After beginning a query, that query is considered /active/ within the--- command buffer it was called in until that same query is ended. Queries--- active in a primary command buffer when secondary command buffers are--- executed are considered active for those secondary command buffers.------ == Valid Usage------ -   #VUID-vkCmdBeginQuery-None-00807# All queries used by the command---     /must/ be unavailable------ -   #VUID-vkCmdBeginQuery-queryType-02804# The @queryType@ used to---     create @queryPool@ /must/ not be---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'------ -   #VUID-vkCmdBeginQuery-queryType-04728# The @queryType@ used to---     create @queryPool@ /must/ not be---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'---     or---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'------ -   #VUID-vkCmdBeginQuery-queryType-04729# The @queryType@ used to---     create @queryPool@ /must/ not be---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'------ -   #VUID-vkCmdBeginQuery-queryType-00800# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise precise occlusion queries>---     feature is not enabled, or the @queryType@ used to create---     @queryPool@ was not---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', @flags@ /must/---     not contain---     'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'------ -   #VUID-vkCmdBeginQuery-query-00802# @query@ /must/ be less than the---     number of queries in @queryPool@------ -   #VUID-vkCmdBeginQuery-queryType-00803# If the @queryType@ used to---     create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', the---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdBeginQuery-queryType-00804# If the @queryType@ used to---     create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and---     any of the @pipelineStatistics@ indicate graphics operations, the---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdBeginQuery-queryType-00805# If the @queryType@ used to---     create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and---     any of the @pipelineStatistics@ indicate compute operations, the---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdBeginQuery-commandBuffer-01885# @commandBuffer@ /must/---     not be a protected command buffer------ -   #VUID-vkCmdBeginQuery-query-00808# If called within a render pass---     instance, the sum of @query@ and the number of bits set in the---     current subpass’s view mask /must/ be less than or equal to the---     number of queries in @queryPool@------ -   #VUID-vkCmdBeginQuery-queryPool-01922# @queryPool@ /must/ have been---     created with a @queryType@ that differs from that of any queries---     that are---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>---     within @commandBuffer@------ -   #VUID-vkCmdBeginQuery-queryType-02327# If the @queryType@ used to---     create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdBeginQuery-queryType-02328# If the @queryType@ used to---     create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'---     then---     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@---     /must/ be supported------ -   #VUID-vkCmdBeginQuery-queryPool-03223# If @queryPool@ was created---     with a @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>---     /must/ have been held before---     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' was called on---     @commandBuffer@------ -   #VUID-vkCmdBeginQuery-queryPool-03224# If @queryPool@ was created---     with a @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and---     one of the counters used to create @queryPool@ was---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',---     the query begin /must/ be the first recorded command in---     @commandBuffer@------ -   #VUID-vkCmdBeginQuery-queryPool-03225# If @queryPool@ was created---     with a @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and---     one of the counters used to create @queryPool@ was---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',---     the begin command /must/ not be recorded within a render pass---     instance------ -   #VUID-vkCmdBeginQuery-queryPool-03226# If @queryPool@ was created---     with a @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and---     another query pool with a @queryType@---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' has---     been used within @commandBuffer@, its parent primary command buffer---     or secondary command buffer recorded within the same parent primary---     command buffer as @commandBuffer@, the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterMultipleQueryPools performanceCounterMultipleQueryPools>---     feature /must/ be enabled------ -   #VUID-vkCmdBeginQuery-None-02863# If @queryPool@ was created with a---     @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',---     this command /must/ not be recorded in a command buffer that, either---     directly or through secondary command buffers, also contains a---     'cmdResetQueryPool' command affecting the same query------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBeginQuery-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBeginQuery-queryPool-parameter# @queryPool@ /must/ be a---     valid 'Vulkan.Core10.Handles.QueryPool' handle------ -   #VUID-vkCmdBeginQuery-flags-parameter# @flags@ /must/ be a valid---     combination of---     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'---     values------ -   #VUID-vkCmdBeginQuery-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-vkCmdBeginQuery-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdBeginQuery-commonparent# Both of @commandBuffer@, and---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',--- 'Vulkan.Core10.Handles.QueryPool'-cmdBeginQuery :: forall io-               . (MonadIO io)-              => -- | @commandBuffer@ is the command buffer into which this command will be-                 -- recorded.-                 CommandBuffer-              -> -- | @queryPool@ is the query pool that will manage the results of the query.-                 QueryPool-              -> -- | @query@ is the query index within the query pool that will contain the-                 -- results.-                 ("query" ::: Word32)-              -> -- | @flags@ is a bitmask of-                 -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'-                 -- specifying constraints on the types of queries that /can/ be performed.-                 QueryControlFlags-              -> io ()-cmdBeginQuery commandBuffer queryPool query flags = liftIO $ do-  let vkCmdBeginQueryPtr = pVkCmdBeginQuery (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdBeginQueryPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginQuery is null" Nothing Nothing-  let vkCmdBeginQuery' = mkVkCmdBeginQuery vkCmdBeginQueryPtr-  traceAroundEvent "vkCmdBeginQuery" (vkCmdBeginQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags))-  pure $ ()---- | This function will call the supplied action between calls to--- 'cmdBeginQuery' and 'cmdEndQuery'------ Note that 'cmdEndQuery' is *not* called if an exception is thrown by the--- inner action.-cmdUseQuery :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> io r -> io r-cmdUseQuery commandBuffer queryPool query flags a =-  (cmdBeginQuery commandBuffer queryPool query flags) *> a <* (cmdEndQuery commandBuffer queryPool query)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdEndQuery-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()---- | vkCmdEndQuery - Ends a query------ = Description------ Calling 'cmdEndQuery' is equivalent to calling--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT' with--- the @index@ parameter set to zero.------ As queries operate asynchronously, ending a query does not immediately--- set the query’s status to available. A query is considered /finished/--- when the final results of the query are ready to be retrieved by--- 'Vulkan.Core10.Query.getQueryPoolResults' and 'cmdCopyQueryPoolResults',--- and this is when the query’s status is set to available.------ Once a query is ended the query /must/ finish in finite time, unless the--- state of the query is changed using other commands, e.g. by issuing a--- reset of the query.------ == Valid Usage------ -   #VUID-vkCmdEndQuery-None-01923# All queries used by the command---     /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>------ -   #VUID-vkCmdEndQuery-query-00810# @query@ /must/ be less than the---     number of queries in @queryPool@------ -   #VUID-vkCmdEndQuery-commandBuffer-01886# @commandBuffer@ /must/ not---     be a protected command buffer------ -   #VUID-vkCmdEndQuery-query-00812# If 'cmdEndQuery' is called within a---     render pass instance, the sum of @query@ and the number of bits set---     in the current subpass’s view mask /must/ be less than or equal to---     the number of queries in @queryPool@------ -   #VUID-vkCmdEndQuery-queryPool-03227# If @queryPool@ was created with---     a @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and---     one or more of the counters used to create @queryPool@ was---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',---     the 'cmdEndQuery' /must/ be the last recorded command in---     @commandBuffer@------ -   #VUID-vkCmdEndQuery-queryPool-03228# If @queryPool@ was created with---     a @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and---     one or more of the counters used to create @queryPool@ was---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',---     the 'cmdEndQuery' /must/ not be recorded within a render pass---     instance------ == Valid Usage (Implicit)------ -   #VUID-vkCmdEndQuery-commandBuffer-parameter# @commandBuffer@ /must/---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdEndQuery-queryPool-parameter# @queryPool@ /must/ be a---     valid 'Vulkan.Core10.Handles.QueryPool' handle------ -   #VUID-vkCmdEndQuery-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-vkCmdEndQuery-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdEndQuery-commonparent# Both of @commandBuffer@, and---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'-cmdEndQuery :: forall io-             . (MonadIO io)-            => -- | @commandBuffer@ is the command buffer into which this command will be-               -- recorded.-               CommandBuffer-            -> -- | @queryPool@ is the query pool that is managing the results of the query.-               QueryPool-            -> -- | @query@ is the query index within the query pool where the result is-               -- stored.-               ("query" ::: Word32)-            -> io ()-cmdEndQuery commandBuffer queryPool query = liftIO $ do-  let vkCmdEndQueryPtr = pVkCmdEndQuery (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdEndQueryPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndQuery is null" Nothing Nothing-  let vkCmdEndQuery' = mkVkCmdEndQuery vkCmdEndQueryPtr-  traceAroundEvent "vkCmdEndQuery" (vkCmdEndQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdResetQueryPool-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()---- | vkCmdResetQueryPool - Reset queries in a query pool------ = Description------ When executed on a queue, this command sets the status of query indices--- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.------ If the @queryType@ used to create @queryPool@ was--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', this--- command sets the status of query indices [@firstQuery@, @firstQuery@ +--- @queryCount@ - 1] to unavailable for each pass of @queryPool@, as--- indicated by a call to--- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.------ Note------ Because 'cmdResetQueryPool' resets all the passes of the indicated--- queries, applications must not record a 'cmdResetQueryPool' command for--- a @queryPool@ created with--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' in a--- command buffer that needs to be submitted multiple times as indicated by--- a call to--- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.--- Otherwise applications will never be able to complete the recorded--- queries.------ == Valid Usage------ -   #VUID-vkCmdResetQueryPool-firstQuery-00796# @firstQuery@ /must/ be---     less than the number of queries in @queryPool@------ -   #VUID-vkCmdResetQueryPool-firstQuery-00797# The sum of @firstQuery@---     and @queryCount@ /must/ be less than or equal to the number of---     queries in @queryPool@------ -   #VUID-vkCmdResetQueryPool-None-02841# All queries used by the---     command /must/ not be active------ -   #VUID-vkCmdResetQueryPool-firstQuery-02862# If @queryPool@ was---     created with---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',---     this command /must/ not be recorded in a command buffer that, either---     directly or through secondary command buffers, also contains begin---     commands for a query from the set of queries [@firstQuery@,---     @firstQuery@ + @queryCount@ - 1]------ == Valid Usage (Implicit)------ -   #VUID-vkCmdResetQueryPool-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdResetQueryPool-queryPool-parameter# @queryPool@ /must/ be---     a valid 'Vulkan.Core10.Handles.QueryPool' handle------ -   #VUID-vkCmdResetQueryPool-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-vkCmdResetQueryPool-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdResetQueryPool-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdResetQueryPool-commonparent# Both of @commandBuffer@, and---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'-cmdResetQueryPool :: forall io-                   . (MonadIO io)-                  => -- | @commandBuffer@ is the command buffer into which this command will be-                     -- recorded.-                     CommandBuffer-                  -> -- | @queryPool@ is the handle of the query pool managing the queries being-                     -- reset.-                     QueryPool-                  -> -- | @firstQuery@ is the initial query index to reset.-                     ("firstQuery" ::: Word32)-                  -> -- | @queryCount@ is the number of queries to reset.-                     ("queryCount" ::: Word32)-                  -> io ()-cmdResetQueryPool commandBuffer queryPool firstQuery queryCount = liftIO $ do-  let vkCmdResetQueryPoolPtr = pVkCmdResetQueryPool (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdResetQueryPoolPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetQueryPool is null" Nothing Nothing-  let vkCmdResetQueryPool' = mkVkCmdResetQueryPool vkCmdResetQueryPoolPtr-  traceAroundEvent "vkCmdResetQueryPool" (vkCmdResetQueryPool' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdWriteTimestamp-  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()---- | vkCmdWriteTimestamp - Write a device timestamp into a query object------ = Description------ 'cmdWriteTimestamp' latches the value of the timer when all previous--- commands have completed executing as far as the specified pipeline--- stage, and writes the timestamp value to memory. When the timestamp--- value is written, the availability status of the query is set to--- available.------ Note------ If an implementation is unable to detect completion and latch the timer--- at any specific stage of the pipeline, it /may/ instead do so at any--- logically later stage.------ Comparisons between timestamps are not meaningful if the timestamps are--- written by commands submitted to different queues.------ Note------ An example of such a comparison is subtracting an older timestamp from a--- newer one to determine the execution time of a sequence of commands.------ If 'cmdWriteTimestamp' is called while executing a render pass instance--- that has multiview enabled, the timestamp uses N consecutive query--- indices in the query pool (starting at @query@) where N is the number of--- bits set in the view mask of the subpass the command is executed in. The--- resulting query values are determined by an implementation-dependent--- choice of one of the following behaviors:------ -   The first query is a timestamp value and (if more than one bit is---     set in the view mask) zero is written to the remaining queries. If---     two timestamps are written in the same subpass, the sum of the---     execution time of all views between those commands is the difference---     between the first query written by each command.------ -   All N queries are timestamp values. If two timestamps are written in---     the same subpass, the sum of the execution time of all views between---     those commands is the sum of the difference between corresponding---     queries written by each command. The difference between---     corresponding queries /may/ be the execution time of a single view.------ In either case, the application /can/ sum the differences between all N--- queries to determine the total execution time.------ == Valid Usage------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04074# @pipelineStage@---     /must/ be a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage>---     for the queue family that was used to create the command pool that---     @commandBuffer@ was allocated from------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04075# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @pipelineStage@ /must/ not be---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04076# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @pipelineStage@ /must/ not be---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04077# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>---     feature is not enabled, @pipelineStage@ /must/ not be---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04078# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>---     feature is not enabled, @pipelineStage@ /must/ not be---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04079# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>---     feature is not enabled, @pipelineStage@ /must/ not be---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04080# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>---     feature is not enabled, @pipelineStage@ /must/ not be---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'---     or---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-04081# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature is not enabled, @pipelineStage@ /must/ not be---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'------ -   #VUID-vkCmdWriteTimestamp-queryPool-01416# @queryPool@ /must/ have---     been created with a @queryType@ of---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'------ -   #VUID-vkCmdWriteTimestamp-queryPool-00828# The query identified by---     @queryPool@ and @query@ /must/ be /unavailable/------ -   #VUID-vkCmdWriteTimestamp-timestampValidBits-00829# The command---     pool’s queue family /must/ support a non-zero @timestampValidBits@------ -   #VUID-vkCmdWriteTimestamp-query-04904# @query@ /must/ be less than---     the number of queries in @queryPool@------ -   #VUID-vkCmdWriteTimestamp-None-00830# All queries used by the---     command /must/ be unavailable------ -   #VUID-vkCmdWriteTimestamp-query-00831# If 'cmdWriteTimestamp' is---     called within a render pass instance, the sum of @query@ and the---     number of bits set in the current subpass’s view mask /must/ be less---     than or equal to the number of queries in @queryPool@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdWriteTimestamp-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdWriteTimestamp-pipelineStage-parameter# @pipelineStage@---     /must/ be a valid---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'---     value------ -   #VUID-vkCmdWriteTimestamp-queryPool-parameter# @queryPool@ /must/ be---     a valid 'Vulkan.Core10.Handles.QueryPool' handle------ -   #VUID-vkCmdWriteTimestamp-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-vkCmdWriteTimestamp-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support transfer, graphics, or compute---     operations------ -   #VUID-vkCmdWriteTimestamp-commonparent# Both of @commandBuffer@, and---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',--- 'Vulkan.Core10.Handles.QueryPool'-cmdWriteTimestamp :: forall io-                   . (MonadIO io)-                  => -- | @commandBuffer@ is the command buffer into which the command will be-                     -- recorded.-                     CommandBuffer-                  -> -- | @pipelineStage@ is a-                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' value,-                     -- specifying a stage of the pipeline.-                     PipelineStageFlagBits-                  -> -- | @queryPool@ is the query pool that will manage the timestamp.-                     QueryPool-                  -> -- | @query@ is the query within the query pool that will contain the-                     -- timestamp.-                     ("query" ::: Word32)-                  -> io ()-cmdWriteTimestamp commandBuffer pipelineStage queryPool query = liftIO $ do-  let vkCmdWriteTimestampPtr = pVkCmdWriteTimestamp (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdWriteTimestampPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteTimestamp is null" Nothing Nothing-  let vkCmdWriteTimestamp' = mkVkCmdWriteTimestamp vkCmdWriteTimestampPtr-  traceAroundEvent "vkCmdWriteTimestamp" (vkCmdWriteTimestamp' (commandBufferHandle (commandBuffer)) (pipelineStage) (queryPool) (query))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyQueryPoolResults-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()---- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool--- to a buffer object------ = Description------ 'cmdCopyQueryPoolResults' is guaranteed to see the effect of previous--- uses of 'cmdResetQueryPool' in the same queue, without any additional--- synchronization. Thus, the results will always reflect the most recent--- use of the query.------ @flags@ has the same possible values described above for the @flags@--- parameter of 'Vulkan.Core10.Query.getQueryPoolResults', but the--- different style of execution causes some subtle behavioral differences.--- Because 'cmdCopyQueryPoolResults' executes in order with respect to--- other query commands, there is less ambiguity about which use of a query--- is being requested.------ Results for all requested occlusion queries, pipeline statistics--- queries, transform feedback queries, and timestamp queries are written--- as 64-bit unsigned integer values if--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set or--- 32-bit unsigned integer values otherwise. Performance queries store--- results in a tightly packed array whose type is determined by the @unit@--- member of the corresponding--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR'.------ If neither of--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' and--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'--- are set, results are only written out for queries in the available--- state.------ If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is--- set, the implementation will wait for each query’s status to be in the--- available state before retrieving the numerical results for that query.--- This is guaranteed to reflect the most recent use of the query on the--- same queue, assuming that the query is not being simultaneously used by--- other queues. If the query does not become available in a finite amount--- of time (e.g. due to not issuing a query since the last reset), a--- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error /may/ occur.------ Similarly, if--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'--- is set and--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is not--- set, the availability is guaranteed to reflect the most recent use of--- the query on the same queue, assuming that the query is not being--- simultaneously used by other queues. As with--- 'Vulkan.Core10.Query.getQueryPoolResults', implementations /must/--- guarantee that if they return a non-zero availability value, then the--- numerical results are valid.------ If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT' is--- set, 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is--- not set, and the query’s status is unavailable, an intermediate result--- value between zero and the final result value is written for that query.------ 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'--- /must/ not be used if the pool’s @queryType@ is--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'.------ 'cmdCopyQueryPoolResults' is considered to be a transfer operation, and--- its writes to buffer memory /must/ be synchronized using--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'--- and 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'--- before using the results.------ == Valid Usage------ -   #VUID-vkCmdCopyQueryPoolResults-dstOffset-00819# @dstOffset@ /must/---     be less than the size of @dstBuffer@------ -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00820# @firstQuery@---     /must/ be less than the number of queries in @queryPool@------ -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00821# The sum of---     @firstQuery@ and @queryCount@ /must/ be less than or equal to the---     number of queries in @queryPool@------ -   #VUID-vkCmdCopyQueryPoolResults-flags-00822# If---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not---     set in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of---     @4@------ -   #VUID-vkCmdCopyQueryPoolResults-flags-00823# If---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set---     in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of @8@------ -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824# @dstBuffer@ /must/---     have enough storage, from @dstOffset@, to contain the result of each---     query, as described---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayout here>------ -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825# @dstBuffer@ /must/---     have been created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'---     usage flag------ -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826# If @dstBuffer@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdCopyQueryPoolResults-queryType-00827# If the @queryType@---     used to create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP', @flags@ /must/---     not contain---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'------ -   #VUID-vkCmdCopyQueryPoolResults-queryType-03232# If the @queryType@---     used to create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',---     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR'::@allowCommandBufferQueryCopies@---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'------ -   #VUID-vkCmdCopyQueryPoolResults-queryType-03233# If the @queryType@---     used to create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',---     @flags@ /must/ not contain---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT',---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'---     or 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'------ -   #VUID-vkCmdCopyQueryPoolResults-queryType-03234# If the @queryType@---     used to create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',---     the @queryPool@ /must/ have been submitted once for each pass as---     retrieved via a call to---     'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'------ -   #VUID-vkCmdCopyQueryPoolResults-queryType-02734#---     'cmdCopyQueryPoolResults' /must/ not be called if the @queryType@---     used to create @queryPool@ was---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyQueryPoolResults-queryPool-parameter# @queryPool@---     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle------ -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter# @dstBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdCopyQueryPoolResults-flags-parameter# @flags@ /must/ be a---     valid combination of---     'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' values------ -   #VUID-vkCmdCopyQueryPoolResults-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-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdCopyQueryPoolResults-renderpass# This command /must/ only---     be called outside of a render pass instance------ -   #VUID-vkCmdCopyQueryPoolResults-commonparent# Each of---     @commandBuffer@, @dstBuffer@, and @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Handles.QueryPool',--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'-cmdCopyQueryPoolResults :: forall io-                         . (MonadIO io)-                        => -- | @commandBuffer@ is the command buffer into which this command will be-                           -- recorded.-                           CommandBuffer-                        -> -- | @queryPool@ is the query pool managing the queries containing the-                           -- desired results.-                           QueryPool-                        -> -- | @firstQuery@ is the initial query index.-                           ("firstQuery" ::: Word32)-                        -> -- | @queryCount@ is the number of queries. @firstQuery@ and @queryCount@-                           -- together define a range of queries.-                           ("queryCount" ::: Word32)-                        -> -- | @dstBuffer@ is a 'Vulkan.Core10.Handles.Buffer' object that will receive-                           -- the results of the copy command.-                           ("dstBuffer" ::: Buffer)-                        -> -- | @dstOffset@ is an offset into @dstBuffer@.-                           ("dstOffset" ::: DeviceSize)-                        -> -- | @stride@ is the stride in bytes between results for individual queries-                           -- within @dstBuffer@. The required size of the backing memory for-                           -- @dstBuffer@ is determined as described above for-                           -- 'Vulkan.Core10.Query.getQueryPoolResults'.-                           ("stride" ::: DeviceSize)-                        -> -- | @flags@ is a bitmask of-                           -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' specifying-                           -- how and when results are returned.-                           QueryResultFlags-                        -> io ()-cmdCopyQueryPoolResults commandBuffer queryPool firstQuery queryCount dstBuffer dstOffset stride flags = liftIO $ do-  let vkCmdCopyQueryPoolResultsPtr = pVkCmdCopyQueryPoolResults (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdCopyQueryPoolResultsPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyQueryPoolResults is null" Nothing Nothing-  let vkCmdCopyQueryPoolResults' = mkVkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResultsPtr-  traceAroundEvent "vkCmdCopyQueryPoolResults" (vkCmdCopyQueryPoolResults' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount) (dstBuffer) (dstOffset) (stride) (flags))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdPushConstants-  :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()---- | vkCmdPushConstants - Update the values of push constants------ = Description------ When a command buffer begins recording, all push constant values are--- undefined. Reads of undefined push constant values by the executing--- shader return undefined values.------ Push constant values /can/ be updated incrementally, causing shader--- stages in @stageFlags@ to read the new data from @pValues@ for push--- constants modified by this command, while still reading the previous--- data for push constants not modified by this command. When a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline command>--- is issued, the bound pipeline’s layout /must/ be compatible with the--- layouts used to set the values of all push constants in the pipeline--- layout’s push constant ranges, as described in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.--- Binding a pipeline with a layout that is not compatible with the push--- constant layout does not disturb the push constant values.------ Note------ As @stageFlags@ needs to include all flags the relevant push constant--- ranges were created with, any flags that are not supported by the queue--- family that the 'Vulkan.Core10.Handles.CommandPool' used to allocate--- @commandBuffer@ was created on are ignored.------ == Valid Usage------ -   #VUID-vkCmdPushConstants-offset-01795# For each byte in the range---     specified by @offset@ and @size@ and for each shader stage in---     @stageFlags@, there /must/ be a push constant range in @layout@ that---     includes that byte and that stage------ -   #VUID-vkCmdPushConstants-offset-01796# For each byte in the range---     specified by @offset@ and @size@ and for each push constant range---     that overlaps that byte, @stageFlags@ /must/ include all stages in---     that push constant range’s---     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@------ -   #VUID-vkCmdPushConstants-offset-00368# @offset@ /must/ be a multiple---     of @4@------ -   #VUID-vkCmdPushConstants-size-00369# @size@ /must/ be a multiple of---     @4@------ -   #VUID-vkCmdPushConstants-offset-00370# @offset@ /must/ be less than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@------ -   #VUID-vkCmdPushConstants-size-00371# @size@ /must/ be less than or---     equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@---     minus @offset@------ == Valid Usage (Implicit)------ -   #VUID-vkCmdPushConstants-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdPushConstants-layout-parameter# @layout@ /must/ be a---     valid 'Vulkan.Core10.Handles.PipelineLayout' handle------ -   #VUID-vkCmdPushConstants-stageFlags-parameter# @stageFlags@ /must/---     be a valid combination of---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values------ -   #VUID-vkCmdPushConstants-stageFlags-requiredbitmask# @stageFlags@---     /must/ not be @0@------ -   #VUID-vkCmdPushConstants-pValues-parameter# @pValues@ /must/ be a---     valid pointer to an array of @size@ bytes------ -   #VUID-vkCmdPushConstants-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-vkCmdPushConstants-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics, or compute operations------ -   #VUID-vkCmdPushConstants-size-arraylength# @size@ /must/ be greater---     than @0@------ -   #VUID-vkCmdPushConstants-commonparent# Both of @commandBuffer@, and---     @layout@ /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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Handles.PipelineLayout',--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'-cmdPushConstants :: forall io-                  . (MonadIO io)-                 => -- | @commandBuffer@ is the command buffer in which the push constant update-                    -- will be recorded.-                    CommandBuffer-                 -> -- | @layout@ is the pipeline layout used to program the push constant-                    -- updates.-                    PipelineLayout-                 -> -- | @stageFlags@ is a bitmask of-                    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying-                    -- the shader stages that will use the push constants in the updated range.-                    ShaderStageFlags-                 -> -- | @offset@ is the start offset of the push constant range to update, in-                    -- units of bytes.-                    ("offset" ::: Word32)-                 -> -- | @size@ is the size of the push constant range to update, in units of-                    -- bytes.-                    ("size" ::: Word32)-                 -> -- | @pValues@ is a pointer to an array of @size@ bytes containing the new-                    -- push constant values.-                    ("values" ::: Ptr ())-                 -> io ()-cmdPushConstants commandBuffer layout stageFlags offset size values = liftIO $ do-  let vkCmdPushConstantsPtr = pVkCmdPushConstants (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdPushConstantsPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushConstants is null" Nothing Nothing-  let vkCmdPushConstants' = mkVkCmdPushConstants vkCmdPushConstantsPtr-  traceAroundEvent "vkCmdPushConstants" (vkCmdPushConstants' (commandBufferHandle (commandBuffer)) (layout) (stageFlags) (offset) (size) (values))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBeginRenderPass-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()---- | vkCmdBeginRenderPass - Begin a new render pass------ = Description------ After beginning a render pass instance, the command buffer is ready to--- record the commands for the first subpass of that render pass.------ == Valid Usage------ -   #VUID-vkCmdBeginRenderPass-initialLayout-00895# If any of the---     @initialLayout@ or @finalLayout@ member of the---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'---     structures specified when creating the render pass specified in the---     @renderPass@ member of @pRenderPassBegin@ is---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'---     then the corresponding attachment image view of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/---     have been created with a @usage@ value including---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'------ -   #VUID-vkCmdBeginRenderPass-initialLayout-01758# If any of the---     @initialLayout@ or @finalLayout@ member of the---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'---     structures specified when creating the render pass specified in the---     @renderPass@ member of @pRenderPassBegin@ is---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',---     or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'---     then the corresponding attachment image view of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/---     have been created with a @usage@ value including---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'------ -   #VUID-vkCmdBeginRenderPass-initialLayout-02842# If any of the---     @initialLayout@ or @finalLayout@ member of the---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'---     structures specified when creating the render pass specified in the---     @renderPass@ member of @pRenderPassBegin@ is---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',---     or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',---     or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'---     then the corresponding attachment image view of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/---     have been created with a @usage@ value including---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'------ -   #VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843# If any of the---     @stencilInitialLayout@ or @stencilFinalLayout@ member of the---     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'---     structures or the @stencilLayout@ member of the---     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'---     structures specified when creating the render pass specified in the---     @renderPass@ member of @pRenderPassBegin@ is---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',---     or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'---     then the corresponding attachment image view of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/---     have been created with a @usage@ value including---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'------ -   #VUID-vkCmdBeginRenderPass-initialLayout-00897# If any of the---     @initialLayout@ or @finalLayout@ member of the---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'---     structures specified when creating the render pass specified in the---     @renderPass@ member of @pRenderPassBegin@ is---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'---     then the corresponding attachment image view of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/---     have been created with a @usage@ value including---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'------ -   #VUID-vkCmdBeginRenderPass-initialLayout-00898# If any of the---     @initialLayout@ or @finalLayout@ member of the---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'---     structures specified when creating the render pass specified in the---     @renderPass@ member of @pRenderPassBegin@ is---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'---     then the corresponding attachment image view of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/---     have been created with a @usage@ value including---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'------ -   #VUID-vkCmdBeginRenderPass-initialLayout-00899# If any of the---     @initialLayout@ or @finalLayout@ member of the---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'---     structures specified when creating the render pass specified in the---     @renderPass@ member of @pRenderPassBegin@ is---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'---     then the corresponding attachment image view of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/---     have been created with a @usage@ value including---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'------ -   #VUID-vkCmdBeginRenderPass-initialLayout-00900# If the---     @initialLayout@ member of any of the---     'Vulkan.Core10.Pass.AttachmentDescription' structures specified when---     creating the render pass specified in the @renderPass@ member of---     @pRenderPassBegin@ is not---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', then each---     such @initialLayout@ /must/ be equal to the current layout of the---     corresponding attachment image subresource of the framebuffer---     specified in the @framebuffer@ member of @pRenderPassBegin@------ -   #VUID-vkCmdBeginRenderPass-srcStageMask-00901# The @srcStageMask@---     and @dstStageMask@ members of any element of the @pDependencies@---     member of 'Vulkan.Core10.Pass.RenderPassCreateInfo' used to create---     @renderPass@ /must/ be supported by the capabilities of the queue---     family identified by the @queueFamilyIndex@ member of the---     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to create the---     command pool which @commandBuffer@ was allocated from------ -   #VUID-vkCmdBeginRenderPass-framebuffer-02532# For any attachment in---     @framebuffer@ that is used by @renderPass@ and is bound to memory---     locations that are also bound to another attachment used by---     @renderPass@, and if at least one of those uses causes either---     attachment to be written to, both attachments /must/ have had the---     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'---     set------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBeginRenderPass-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter#---     @pRenderPassBegin@ /must/ be a valid pointer to a valid---     'RenderPassBeginInfo' structure------ -   #VUID-vkCmdBeginRenderPass-contents-parameter# @contents@ /must/ be---     a valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value------ -   #VUID-vkCmdBeginRenderPass-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-vkCmdBeginRenderPass-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdBeginRenderPass-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdBeginRenderPass-bufferlevel# @commandBuffer@ /must/ be a---     primary 'Vulkan.Core10.Handles.CommandBuffer'------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderPassBeginInfo',--- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'-cmdBeginRenderPass :: forall a io-                    . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io)-                   => -- | @commandBuffer@ is the command buffer in which to record the command.-                      CommandBuffer-                   -> -- | @pRenderPassBegin@ is a pointer to a 'RenderPassBeginInfo' structure-                      -- specifying the render pass to begin an instance of, and the framebuffer-                      -- the instance uses.-                      (RenderPassBeginInfo a)-                   -> -- | @contents@ is a 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'-                      -- value specifying how the commands in the first subpass will be provided.-                      SubpassContents-                   -> io ()-cmdBeginRenderPass commandBuffer renderPassBegin contents = liftIO . evalContT $ do-  let vkCmdBeginRenderPassPtr = pVkCmdBeginRenderPass (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdBeginRenderPassPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginRenderPass is null" Nothing Nothing-  let vkCmdBeginRenderPass' = mkVkCmdBeginRenderPass vkCmdBeginRenderPassPtr-  pRenderPassBegin <- ContT $ withCStruct (renderPassBegin)-  lift $ traceAroundEvent "vkCmdBeginRenderPass" (vkCmdBeginRenderPass' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderPassBegin) (contents))-  pure $ ()---- | This function will call the supplied action between calls to--- 'cmdBeginRenderPass' and 'cmdEndRenderPass'------ Note that 'cmdEndRenderPass' is *not* called if an exception is thrown--- by the inner action.-cmdUseRenderPass :: forall a io r . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io r -> io r-cmdUseRenderPass commandBuffer pRenderPassBegin contents a =-  (cmdBeginRenderPass commandBuffer pRenderPassBegin contents) *> a <* (cmdEndRenderPass commandBuffer)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdNextSubpass-  :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> SubpassContents -> IO ()---- | vkCmdNextSubpass - Transition to the next subpass of a render pass------ = Description------ The subpass index for a render pass begins at zero when--- 'cmdBeginRenderPass' is recorded, and increments each time--- 'cmdNextSubpass' is recorded.------ Moving to the next subpass automatically performs any multisample--- resolve operations in the subpass being ended. End-of-subpass--- multisample resolves are treated as color attachment writes for the--- purposes of synchronization. This applies to resolve operations for both--- color and depth\/stencil attachments. That is, they are considered to--- execute in the--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'--- pipeline stage and their writes are synchronized with--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.--- Synchronization between rendering within a subpass and any resolve--- operations at the end of the subpass occurs automatically, without need--- for explicit dependencies or pipeline barriers. However, if the resolve--- attachment is also used in a different subpass, an explicit dependency--- is needed.------ After transitioning to the next subpass, the application /can/ record--- the commands for that subpass.------ == Valid Usage------ -   #VUID-vkCmdNextSubpass-None-00909# The current subpass index /must/---     be less than the number of subpasses in the render pass minus one------ -   #VUID-vkCmdNextSubpass-None-02349# This command /must/ not be---     recorded when transform feedback is active------ == Valid Usage (Implicit)------ -   #VUID-vkCmdNextSubpass-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdNextSubpass-contents-parameter# @contents@ /must/ be a---     valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value------ -   #VUID-vkCmdNextSubpass-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-vkCmdNextSubpass-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdNextSubpass-renderpass# This command /must/ only be---     called inside of a render pass instance------ -   #VUID-vkCmdNextSubpass-bufferlevel# @commandBuffer@ /must/ be a---     primary 'Vulkan.Core10.Handles.CommandBuffer'------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'-cmdNextSubpass :: forall io-                . (MonadIO io)-               => -- | @commandBuffer@ is the command buffer in which to record the command.-                  CommandBuffer-               -> -- | @contents@ specifies how the commands in the next subpass will be-                  -- provided, in the same fashion as the corresponding parameter of-                  -- 'cmdBeginRenderPass'.-                  SubpassContents-               -> io ()-cmdNextSubpass commandBuffer contents = liftIO $ do-  let vkCmdNextSubpassPtr = pVkCmdNextSubpass (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdNextSubpassPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdNextSubpass is null" Nothing Nothing-  let vkCmdNextSubpass' = mkVkCmdNextSubpass vkCmdNextSubpassPtr-  traceAroundEvent "vkCmdNextSubpass" (vkCmdNextSubpass' (commandBufferHandle (commandBuffer)) (contents))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdEndRenderPass-  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()---- | vkCmdEndRenderPass - End the current render pass------ = Description------ Ending a render pass instance performs any multisample resolve--- operations on the final subpass.------ == Valid Usage------ -   #VUID-vkCmdEndRenderPass-None-00910# The current subpass index---     /must/ be equal to the number of subpasses in the render pass minus---     one------ -   #VUID-vkCmdEndRenderPass-None-02351# This command /must/ not be---     recorded when transform feedback is active------ == Valid Usage (Implicit)------ -   #VUID-vkCmdEndRenderPass-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdEndRenderPass-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-vkCmdEndRenderPass-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support graphics operations------ -   #VUID-vkCmdEndRenderPass-renderpass# This command /must/ only be---     called inside of a render pass instance------ -   #VUID-vkCmdEndRenderPass-bufferlevel# @commandBuffer@ /must/ be a---     primary 'Vulkan.Core10.Handles.CommandBuffer'------ == 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#VkQueueFlagBits Supported Queue Types> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdEndRenderPass :: forall io-                  . (MonadIO io)-                 => -- | @commandBuffer@ is the command buffer in which to end the current render-                    -- pass instance.-                    CommandBuffer-                 -> io ()-cmdEndRenderPass commandBuffer = liftIO $ do-  let vkCmdEndRenderPassPtr = pVkCmdEndRenderPass (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdEndRenderPassPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRenderPass is null" Nothing Nothing-  let vkCmdEndRenderPass' = mkVkCmdEndRenderPass vkCmdEndRenderPassPtr-  traceAroundEvent "vkCmdEndRenderPass" (vkCmdEndRenderPass' (commandBufferHandle (commandBuffer)))-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdExecuteCommands-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()---- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary--- command buffer------ = Description------ If any element of @pCommandBuffers@ was not recorded with the--- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'--- flag, and it was recorded into any other primary command buffer which is--- currently in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable or recording state>,--- that primary command buffer becomes--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.------ == Valid Usage------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00088# Each element of---     @pCommandBuffers@ /must/ have been allocated with a @level@ of---     'Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00089# Each element of---     @pCommandBuffers@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00091# If any element of---     @pCommandBuffers@ was not recorded with the---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'---     flag, it /must/ not be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00092# If any element of---     @pCommandBuffers@ was not recorded with the---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'---     flag, it /must/ not have already been recorded to @commandBuffer@------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00093# If any element of---     @pCommandBuffers@ was not recorded with the---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'---     flag, it /must/ not appear more than once in @pCommandBuffers@------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00094# Each element of---     @pCommandBuffers@ /must/ have been allocated from a---     'Vulkan.Core10.Handles.CommandPool' that was created for the same---     queue family as the 'Vulkan.Core10.Handles.CommandPool' from which---     @commandBuffer@ was allocated------ -   #VUID-vkCmdExecuteCommands-contents-00095# If 'cmdExecuteCommands'---     is being called within a render pass instance, that render pass---     instance /must/ have been begun with the @contents@ parameter of---     'cmdBeginRenderPass' set to---     'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00096# If---     'cmdExecuteCommands' is being called within a render pass instance,---     each element of @pCommandBuffers@ /must/ have been recorded with the---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00097# If---     'cmdExecuteCommands' is being called within a render pass instance,---     each element of @pCommandBuffers@ /must/ have been recorded with---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@subpass@---     set to the index of the subpass which the given command buffer will---     be executed in------ -   #VUID-vkCmdExecuteCommands-pInheritanceInfo-00098# If---     'cmdExecuteCommands' is being called within a render pass instance,---     the render passes specified in the---     @pBeginInfo->pInheritanceInfo->renderPass@ members of the---     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands used to---     begin recording each element of @pCommandBuffers@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>---     with the current render pass------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00099# If---     'cmdExecuteCommands' is being called within a render pass instance,---     and any element of @pCommandBuffers@ was recorded with---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@framebuffer@---     not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', that---     'Vulkan.Core10.Handles.Framebuffer' /must/ match the---     'Vulkan.Core10.Handles.Framebuffer' used in the current render pass---     instance------ -   #VUID-vkCmdExecuteCommands-pNext-02865# If 'cmdExecuteCommands' is---     being called within a render pass instance that included---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'---     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of---     @pCommandBuffers@ /must/ have been recorded with---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'---     in the @pNext@ chain of---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'------ -   #VUID-vkCmdExecuteCommands-pNext-02866# If 'cmdExecuteCommands' is---     being called within a render pass instance that included---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'---     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of---     @pCommandBuffers@ /must/ have been recorded with---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@transform@---     identical to---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@------ -   #VUID-vkCmdExecuteCommands-pNext-02867# If 'cmdExecuteCommands' is---     being called within a render pass instance that included---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'---     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of---     @pCommandBuffers@ /must/ have been recorded with---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@renderArea@---     identical to 'RenderPassBeginInfo'::@renderArea@------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00100# If---     'cmdExecuteCommands' is not being called within a render pass---     instance, each element of @pCommandBuffers@ /must/ not have been---     recorded with the---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'------ -   #VUID-vkCmdExecuteCommands-commandBuffer-00101# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>---     feature is not enabled, @commandBuffer@ /must/ not have any queries---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>------ -   #VUID-vkCmdExecuteCommands-commandBuffer-00102# If @commandBuffer@---     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,---     then each element of @pCommandBuffers@ /must/ have been recorded---     with---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@occlusionQueryEnable@---     set to 'Vulkan.Core10.FundamentalTypes.TRUE'------ -   #VUID-vkCmdExecuteCommands-commandBuffer-00103# If @commandBuffer@---     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,---     then each element of @pCommandBuffers@ /must/ have been recorded---     with---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@queryFlags@---     having all bits set that are set for the query------ -   #VUID-vkCmdExecuteCommands-commandBuffer-00104# If @commandBuffer@---     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'---     query---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,---     then each element of @pCommandBuffers@ /must/ have been recorded---     with---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@pipelineStatistics@---     having all bits set that are set in the---     'Vulkan.Core10.Handles.QueryPool' the query uses------ -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00105# Each element of---     @pCommandBuffers@ /must/ not begin any query types that are---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>---     in @commandBuffer@------ -   #VUID-vkCmdExecuteCommands-commandBuffer-01820# If @commandBuffer@---     is a protected command buffer, then each element of---     @pCommandBuffers@ /must/ be a protected command buffer------ -   #VUID-vkCmdExecuteCommands-commandBuffer-01821# If @commandBuffer@---     is an unprotected command buffer, then each element of---     @pCommandBuffers@ /must/ be an unprotected command buffer------ -   #VUID-vkCmdExecuteCommands-None-02286# This command /must/ not be---     recorded when transform feedback is active+--     to this bind point within the current render pass instance,+--     including any pipeline already bound when beginning the render pass+--     instance+--+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04949# If+--     @pipelineBindPoint@ is+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04950# If+--     @pipelineBindPoint@ is+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',+--     @pipeline@ /must/ be a subpass shading pipeline+--+-- -   #VUID-vkCmdBindPipeline-pipeline-06195# If @pipeline@ is a graphics+--     pipeline, this command has been called inside a render pass instance+--     started with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     and commands using the previously bound graphics pipeline have been+--     recorded within the render pass instance, then the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     specified by this pipeline /must/ match that set in the previous+--     pipeline+--+-- -   #VUID-vkCmdBindPipeline-pipeline-06196# If @pipeline@ is a graphics+--     pipeline, this command has been called inside a render pass instance+--     started with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     and commands using the previously bound graphics pipeline have been+--     recorded within the render pass instance, then the elements of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     specified by this pipeline /must/ match that set in the previous+--     pipeline+--+-- -   #VUID-vkCmdBindPipeline-pipeline-06197# If @pipeline@ is a graphics+--     pipeline, this command has been called inside a render pass instance+--     started with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     and commands using the previously bound graphics pipeline have been+--     recorded within the render pass instance, then the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     specified by this pipeline /must/ match that set in the previous+--     pipeline+--+-- -   #VUID-vkCmdBindPipeline-pipeline-06194# If @pipeline@ is a graphics+--     pipeline, this command has been called inside a render pass instance+--     started with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     and commands using the previously bound graphics pipeline have been+--     recorded within the render pass instance, then the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     specified by this pipeline /must/ match that set in the previous+--     pipeline+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBindPipeline-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-parameter#+--     @pipelineBindPoint@ /must/ be a valid+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value+--+-- -   #VUID-vkCmdBindPipeline-pipeline-parameter# @pipeline@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Pipeline' handle+--+-- -   #VUID-vkCmdBindPipeline-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-vkCmdBindPipeline-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdBindPipeline-commonparent# Both of @commandBuffer@, and+--     @pipeline@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Pipeline',+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+cmdBindPipeline :: forall io+                 . (MonadIO io)+                => -- | @commandBuffer@ is the command buffer that the pipeline will be bound+                   -- to.+                   CommandBuffer+                -> -- | @pipelineBindPoint@ is a+                   -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value+                   -- specifying to which bind point the pipeline is bound. Binding one does+                   -- not disturb the others.+                   PipelineBindPoint+                -> -- | @pipeline@ is the pipeline to be bound.+                   Pipeline+                -> io ()+cmdBindPipeline commandBuffer pipelineBindPoint pipeline = liftIO $ do+  let vkCmdBindPipelinePtr = pVkCmdBindPipeline (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdBindPipelinePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindPipeline is null" Nothing Nothing+  let vkCmdBindPipeline' = mkVkCmdBindPipeline vkCmdBindPipelinePtr+  traceAroundEvent "vkCmdBindPipeline" (vkCmdBindPipeline' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (pipeline))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetViewport+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()++-- | vkCmdSetViewport - Set the viewport dynamically for a command buffer+--+-- = Description+--+-- This command sets the viewport transformation parameters state for+-- subsequent drawing commands when the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' set in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pViewports@+-- values used to create the currently active pipeline.+--+-- The viewport parameters taken from element i of @pViewports@ replace the+-- current state for the viewport index @firstViewport@ + i, for i in [0,+-- @viewportCount@).+--+-- == Valid Usage+--+-- -   #VUID-vkCmdSetViewport-firstViewport-01223# The sum of+--     @firstViewport@ and @viewportCount@ /must/ be between @1@ and+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+--     inclusive+--+-- -   #VUID-vkCmdSetViewport-firstViewport-01224# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+--     feature is not enabled, @firstViewport@ /must/ be @0@+--+-- -   #VUID-vkCmdSetViewport-viewportCount-01225# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+--     feature is not enabled, @viewportCount@ /must/ be @1@+--+-- -   #VUID-vkCmdSetViewport-commandBuffer-04821# @commandBuffer@ /must/+--     not have+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@+--     enabled+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetViewport-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetViewport-pViewports-parameter# @pViewports@ /must/ be+--     a valid pointer to an array of @viewportCount@ valid+--     'Vulkan.Core10.Pipeline.Viewport' structures+--+-- -   #VUID-vkCmdSetViewport-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-vkCmdSetViewport-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdSetViewport-viewportCount-arraylength# @viewportCount@+--     /must/ be greater than @0@+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Pipeline.Viewport'+cmdSetViewport :: forall io+                . (MonadIO io)+               => -- | @commandBuffer@ is the command buffer into which the command will be+                  -- recorded.+                  CommandBuffer+               -> -- | @firstViewport@ is the index of the first viewport whose parameters are+                  -- updated by the command.+                  ("firstViewport" ::: Word32)+               -> -- | @pViewports@ is a pointer to an array of+                  -- 'Vulkan.Core10.Pipeline.Viewport' structures specifying viewport+                  -- parameters.+                  ("viewports" ::: Vector Viewport)+               -> io ()+cmdSetViewport commandBuffer firstViewport viewports = liftIO . evalContT $ do+  let vkCmdSetViewportPtr = pVkCmdSetViewport (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdSetViewportPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewport is null" Nothing Nothing+  let vkCmdSetViewport' = mkVkCmdSetViewport vkCmdSetViewportPtr+  pPViewports <- ContT $ allocaBytes @Viewport ((Data.Vector.length (viewports)) * 24)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)+  lift $ traceAroundEvent "vkCmdSetViewport" (vkCmdSetViewport' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetScissor+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()++-- | vkCmdSetScissor - Set scissor rectangles dynamically for a command+-- buffer+--+-- = Description+--+-- The scissor rectangles taken from element i of @pScissors@ replace the+-- current state for the scissor index @firstScissor@ + i, for i in [0,+-- @scissorCount@).+--+-- This command sets the scissor rectangles for subsequent drawing commands+-- when the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' set in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pScissors@+-- values used to create the currently active pipeline.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdSetScissor-firstScissor-00592# The sum of @firstScissor@+--     and @scissorCount@ /must/ be between @1@ and+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+--     inclusive+--+-- -   #VUID-vkCmdSetScissor-firstScissor-00593# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+--     feature is not enabled, @firstScissor@ /must/ be @0@+--+-- -   #VUID-vkCmdSetScissor-scissorCount-00594# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+--     feature is not enabled, @scissorCount@ /must/ be @1@+--+-- -   #VUID-vkCmdSetScissor-x-00595# The @x@ and @y@ members of @offset@+--     member of any element of @pScissors@ /must/ be greater than or equal+--     to @0@+--+-- -   #VUID-vkCmdSetScissor-offset-00596# Evaluation of (@offset.x@ ++--     @extent.width@) /must/ not cause a signed integer addition overflow+--     for any element of @pScissors@+--+-- -   #VUID-vkCmdSetScissor-offset-00597# Evaluation of (@offset.y@ ++--     @extent.height@) /must/ not cause a signed integer addition overflow+--     for any element of @pScissors@+--+-- -   #VUID-vkCmdSetScissor-viewportScissor2D-04789# If this command is+--     recorded in a secondary command buffer with+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@+--     enabled, then this function /must/ not be called+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetScissor-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetScissor-pScissors-parameter# @pScissors@ /must/ be a+--     valid pointer to an array of @scissorCount@+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures+--+-- -   #VUID-vkCmdSetScissor-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-vkCmdSetScissor-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdSetScissor-scissorCount-arraylength# @scissorCount@+--     /must/ be greater than @0@+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'+cmdSetScissor :: forall io+               . (MonadIO io)+              => -- | @commandBuffer@ is the command buffer into which the command will be+                 -- recorded.+                 CommandBuffer+              -> -- | @firstScissor@ is the index of the first scissor whose state is updated+                 -- by the command.+                 ("firstScissor" ::: Word32)+              -> -- | @pScissors@ is a pointer to an array of+                 -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining scissor+                 -- rectangles.+                 ("scissors" ::: Vector Rect2D)+              -> io ()+cmdSetScissor commandBuffer firstScissor scissors = liftIO . evalContT $ do+  let vkCmdSetScissorPtr = pVkCmdSetScissor (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdSetScissorPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissor is null" Nothing Nothing+  let vkCmdSetScissor' = mkVkCmdSetScissor vkCmdSetScissorPtr+  pPScissors <- ContT $ allocaBytes @Rect2D ((Data.Vector.length (scissors)) * 16)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)+  lift $ traceAroundEvent "vkCmdSetScissor" (vkCmdSetScissor' (commandBufferHandle (commandBuffer)) (firstScissor) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetLineWidth+  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> IO ()++-- | vkCmdSetLineWidth - Set line width dynamically for a command buffer+--+-- = Description+--+-- This command sets the line width for subsequent drawing commands when+-- the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' set in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@lineWidth@+-- value used to create the currently active pipeline.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdSetLineWidth-lineWidth-00788# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-wideLines wide lines>+--     feature is not enabled, @lineWidth@ /must/ be @1.0@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetLineWidth-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetLineWidth-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-vkCmdSetLineWidth-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdSetLineWidth :: forall io+                 . (MonadIO io)+                => -- | @commandBuffer@ is the command buffer into which the command will be+                   -- recorded.+                   CommandBuffer+                -> -- | @lineWidth@ is the width of rasterized line segments.+                   ("lineWidth" ::: Float)+                -> io ()+cmdSetLineWidth commandBuffer lineWidth = liftIO $ do+  let vkCmdSetLineWidthPtr = pVkCmdSetLineWidth (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetLineWidthPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetLineWidth is null" Nothing Nothing+  let vkCmdSetLineWidth' = mkVkCmdSetLineWidth vkCmdSetLineWidthPtr+  traceAroundEvent "vkCmdSetLineWidth" (vkCmdSetLineWidth' (commandBufferHandle (commandBuffer)) (CFloat (lineWidth)))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetDepthBias+  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()++-- | vkCmdSetDepthBias - Set depth bias factors and clamp dynamically for a+-- command buffer+--+-- = Description+--+-- This command sets the depth bias parameters for subsequent drawing+-- commands when the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' set in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the corresponding+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@depthBiasConstantFactor@,+-- @depthBiasClamp@, and @depthBiasSlopeFactor@ values used to create the+-- currently active pipeline.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdSetDepthBias-depthBiasClamp-00790# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBiasClamp depth bias clamping>+--     feature is not enabled, @depthBiasClamp@ /must/ be @0.0@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetDepthBias-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetDepthBias-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-vkCmdSetDepthBias-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdSetDepthBias :: forall io+                 . (MonadIO io)+                => -- | @commandBuffer@ is the command buffer into which the command will be+                   -- recorded.+                   CommandBuffer+                -> -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant+                   -- depth value added to each fragment.+                   ("depthBiasConstantFactor" ::: Float)+                -> -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.+                   ("depthBiasClamp" ::: Float)+                -> -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope+                   -- in depth bias calculations.+                   ("depthBiasSlopeFactor" ::: Float)+                -> io ()+cmdSetDepthBias commandBuffer depthBiasConstantFactor depthBiasClamp depthBiasSlopeFactor = liftIO $ do+  let vkCmdSetDepthBiasPtr = pVkCmdSetDepthBias (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetDepthBiasPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBias is null" Nothing Nothing+  let vkCmdSetDepthBias' = mkVkCmdSetDepthBias vkCmdSetDepthBiasPtr+  traceAroundEvent "vkCmdSetDepthBias" (vkCmdSetDepthBias' (commandBufferHandle (commandBuffer)) (CFloat (depthBiasConstantFactor)) (CFloat (depthBiasClamp)) (CFloat (depthBiasSlopeFactor)))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetBlendConstants+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()++-- | vkCmdSetBlendConstants - Set the values of blend constants+--+-- = Description+--+-- This command sets blend constants for subsequent drawing commands when+-- the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' set in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@blendConstants@+-- values used to create the currently active pipeline.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetBlendConstants-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetBlendConstants-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-vkCmdSetBlendConstants-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdSetBlendConstants :: forall io+                      . (MonadIO io)+                     => -- | @commandBuffer@ is the command buffer into which the command will be+                        -- recorded.+                        CommandBuffer+                     -> -- | @blendConstants@ is a pointer to an array of four values specifying the+                        -- Rc, Gc, Bc, and Ac components of the blend constant color used in+                        -- blending, depending on the+                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.+                        ("blendConstants" ::: (Float, Float, Float, Float))+                     -> io ()+cmdSetBlendConstants commandBuffer blendConstants = liftIO . evalContT $ do+  let vkCmdSetBlendConstantsPtr = pVkCmdSetBlendConstants (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdSetBlendConstantsPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetBlendConstants is null" Nothing Nothing+  let vkCmdSetBlendConstants' = mkVkCmdSetBlendConstants vkCmdSetBlendConstantsPtr+  pBlendConstants <- ContT $ allocaBytes @(FixedArray 4 CFloat) 16+  let pBlendConstants' = lowerArrayPtr pBlendConstants+  lift $ case (blendConstants) of+    (e0, e1, e2, e3) -> do+      poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))+      poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+      poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+      poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+  lift $ traceAroundEvent "vkCmdSetBlendConstants" (vkCmdSetBlendConstants' (commandBufferHandle (commandBuffer)) (pBlendConstants))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetDepthBounds+  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()++-- | vkCmdSetDepthBounds - Set depth bounds range dynamically for a command+-- buffer+--+-- = Description+--+-- This command sets the depth bounds range for subsequent drawing commands+-- when the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' set in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@minDepthBounds@+-- and+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@maxDepthBounds@+-- values used to create the currently active pipeline.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdSetDepthBounds-minDepthBounds-00600# Unless the+--     @VK_EXT_depth_range_unrestricted@ extension is enabled+--     @minDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive+--+-- -   #VUID-vkCmdSetDepthBounds-maxDepthBounds-00601# Unless the+--     @VK_EXT_depth_range_unrestricted@ extension is enabled+--     @maxDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetDepthBounds-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetDepthBounds-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-vkCmdSetDepthBounds-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdSetDepthBounds :: forall io+                   . (MonadIO io)+                  => -- | @commandBuffer@ is the command buffer into which the command will be+                     -- recorded.+                     CommandBuffer+                  -> -- | @minDepthBounds@ is the minimum depth bound.+                     ("minDepthBounds" ::: Float)+                  -> -- | @maxDepthBounds@ is the maximum depth bound.+                     ("maxDepthBounds" ::: Float)+                  -> io ()+cmdSetDepthBounds commandBuffer minDepthBounds maxDepthBounds = liftIO $ do+  let vkCmdSetDepthBoundsPtr = pVkCmdSetDepthBounds (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetDepthBoundsPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBounds is null" Nothing Nothing+  let vkCmdSetDepthBounds' = mkVkCmdSetDepthBounds vkCmdSetDepthBoundsPtr+  traceAroundEvent "vkCmdSetDepthBounds" (vkCmdSetDepthBounds' (commandBufferHandle (commandBuffer)) (CFloat (minDepthBounds)) (CFloat (maxDepthBounds)))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetStencilCompareMask+  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()++-- | vkCmdSetStencilCompareMask - Set stencil compare mask dynamically for a+-- command buffer+--+-- = Description+--+-- This command sets the stencil compare mask for subsequent drawing+-- commands when the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'+-- set in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@compareMask@+-- value used to create the currently active pipeline, for both front and+-- back faces.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetStencilCompareMask-faceMask-parameter# @faceMask@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values+--+-- -   #VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask#+--     @faceMask@ /must/ not be @0@+--+-- -   #VUID-vkCmdSetStencilCompareMask-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-vkCmdSetStencilCompareMask-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'+cmdSetStencilCompareMask :: forall io+                          . (MonadIO io)+                         => -- | @commandBuffer@ is the command buffer into which the command will be+                            -- recorded.+                            CommandBuffer+                         -> -- | @faceMask@ is a bitmask of+                            -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying+                            -- the set of stencil state for which to update the compare mask.+                            ("faceMask" ::: StencilFaceFlags)+                         -> -- | @compareMask@ is the new value to use as the stencil compare mask.+                            ("compareMask" ::: Word32)+                         -> io ()+cmdSetStencilCompareMask commandBuffer faceMask compareMask = liftIO $ do+  let vkCmdSetStencilCompareMaskPtr = pVkCmdSetStencilCompareMask (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetStencilCompareMaskPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilCompareMask is null" Nothing Nothing+  let vkCmdSetStencilCompareMask' = mkVkCmdSetStencilCompareMask vkCmdSetStencilCompareMaskPtr+  traceAroundEvent "vkCmdSetStencilCompareMask" (vkCmdSetStencilCompareMask' (commandBufferHandle (commandBuffer)) (faceMask) (compareMask))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetStencilWriteMask+  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()++-- | vkCmdSetStencilWriteMask - Set stencil write mask dynamically for a+-- command buffer+--+-- = Description+--+-- This command sets the stencil write mask for subsequent drawing commands+-- when the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' set+-- in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@writeMask@+-- value used to create the currently active pipeline, for both front and+-- back faces.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetStencilWriteMask-faceMask-parameter# @faceMask@ /must/+--     be a valid combination of+--     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values+--+-- -   #VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask# @faceMask@+--     /must/ not be @0@+--+-- -   #VUID-vkCmdSetStencilWriteMask-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-vkCmdSetStencilWriteMask-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'+cmdSetStencilWriteMask :: forall io+                        . (MonadIO io)+                       => -- | @commandBuffer@ is the command buffer into which the command will be+                          -- recorded.+                          CommandBuffer+                       -> -- | @faceMask@ is a bitmask of+                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying+                          -- the set of stencil state for which to update the write mask, as+                          -- described above for 'cmdSetStencilCompareMask'.+                          ("faceMask" ::: StencilFaceFlags)+                       -> -- | @writeMask@ is the new value to use as the stencil write mask.+                          ("writeMask" ::: Word32)+                       -> io ()+cmdSetStencilWriteMask commandBuffer faceMask writeMask = liftIO $ do+  let vkCmdSetStencilWriteMaskPtr = pVkCmdSetStencilWriteMask (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetStencilWriteMaskPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilWriteMask is null" Nothing Nothing+  let vkCmdSetStencilWriteMask' = mkVkCmdSetStencilWriteMask vkCmdSetStencilWriteMaskPtr+  traceAroundEvent "vkCmdSetStencilWriteMask" (vkCmdSetStencilWriteMask' (commandBufferHandle (commandBuffer)) (faceMask) (writeMask))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetStencilReference+  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()++-- | vkCmdSetStencilReference - Set stencil reference value dynamically for a+-- command buffer+--+-- = Description+--+-- This command sets the stencil reference value for subsequent drawing+-- commands when the graphics pipeline is created with+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' set+-- in+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.+-- Otherwise, this state is specified by the+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@reference@+-- value used to create the currently active pipeline, for both front and+-- back faces.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetStencilReference-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetStencilReference-faceMask-parameter# @faceMask@ /must/+--     be a valid combination of+--     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values+--+-- -   #VUID-vkCmdSetStencilReference-faceMask-requiredbitmask# @faceMask@+--     /must/ not be @0@+--+-- -   #VUID-vkCmdSetStencilReference-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-vkCmdSetStencilReference-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'+cmdSetStencilReference :: forall io+                        . (MonadIO io)+                       => -- | @commandBuffer@ is the command buffer into which the command will be+                          -- recorded.+                          CommandBuffer+                       -> -- | @faceMask@ is a bitmask of+                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying+                          -- the set of stencil state for which to update the reference value, as+                          -- described above for 'cmdSetStencilCompareMask'.+                          ("faceMask" ::: StencilFaceFlags)+                       -> -- | @reference@ is the new value to use as the stencil reference value.+                          ("reference" ::: Word32)+                       -> io ()+cmdSetStencilReference commandBuffer faceMask reference = liftIO $ do+  let vkCmdSetStencilReferencePtr = pVkCmdSetStencilReference (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetStencilReferencePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilReference is null" Nothing Nothing+  let vkCmdSetStencilReference' = mkVkCmdSetStencilReference vkCmdSetStencilReferencePtr+  traceAroundEvent "vkCmdSetStencilReference" (vkCmdSetStencilReference' (commandBufferHandle (commandBuffer)) (faceMask) (reference))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBindDescriptorSets+  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()++-- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer+--+-- = Description+--+-- 'cmdBindDescriptorSets' causes the sets numbered [@firstSet@..+-- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in+-- @pDescriptorSets@[0..descriptorSetCount-1] for subsequent+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>+-- set by @pipelineBindPoint@. Any bindings that were previously applied+-- via these sets are no longer valid.+--+-- Once bound, a descriptor set affects rendering of subsequent commands+-- that interact with the given pipeline type in the command buffer until+-- either a different set is bound to the same set number, or the set is+-- disturbed as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.+--+-- A compatible descriptor set /must/ be bound for all set numbers that any+-- shaders in a pipeline access, at the time that a drawing or dispatching+-- command is recorded to execute using that pipeline. However, if none of+-- the shaders in a pipeline statically use any bindings with a particular+-- set number, then no descriptor set need be bound for that set number,+-- even if the pipeline layout includes a non-trivial descriptor set layout+-- for that set number.+--+-- If any of the sets being bound include dynamic uniform or storage+-- buffers, then @pDynamicOffsets@ includes one element for each array+-- element in each dynamic descriptor type binding in each set. Values are+-- taken from @pDynamicOffsets@ in an order such that all entries for set N+-- come before set N+1; within a set, entries are ordered by the binding+-- numbers in the descriptor set layouts; and within a binding array,+-- elements are in order. @dynamicOffsetCount@ /must/ equal the total+-- number of dynamic descriptors in the sets being bound.+--+-- The effective offset used for dynamic uniform and storage buffer+-- bindings is the sum of the relative offset taken from @pDynamicOffsets@,+-- and the base address of the buffer plus base offset in the descriptor+-- set. The range of the dynamic uniform and storage buffer bindings is the+-- buffer range as specified in the descriptor set.+--+-- Each of the @pDescriptorSets@ /must/ be compatible with the pipeline+-- layout specified by @layout@. The layout used to program the bindings+-- /must/ also be compatible with the pipeline used in subsequent+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>+-- with that pipeline type, as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>+-- section.+--+-- The descriptor set contents bound by a call to 'cmdBindDescriptorSets'+-- /may/ be consumed at the following times:+--+-- -   For descriptor bindings created with the+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--     bit set, the contents /may/ be consumed when the command buffer is+--     submitted to a queue, or during shader execution of the resulting+--     draws and dispatches, or any time in between. Otherwise,+--+-- -   during host execution of the command, or during shader execution of+--     the resulting draws and dispatches, or any time in between.+--+-- Thus, the contents of a descriptor set binding /must/ not be altered+-- (overwritten by an update command, or freed) between the first point in+-- time that it /may/ be consumed, and when the command completes executing+-- on the queue.+--+-- The contents of @pDynamicOffsets@ are consumed immediately during+-- execution of 'cmdBindDescriptorSets'. Once all pending uses have+-- completed, it is legal to update and reuse a descriptor set.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358# Each element of+--     @pDescriptorSets@ /must/ have been allocated with a+--     'Vulkan.Core10.Handles.DescriptorSetLayout' that matches (is the+--     same as, or identically defined as) the+--     'Vulkan.Core10.Handles.DescriptorSetLayout' at set /n/ in @layout@,+--     where /n/ is the sum of @firstSet@ and the index into+--     @pDescriptorSets@+--+-- -   #VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359#+--     @dynamicOffsetCount@ /must/ be equal to the total number of dynamic+--     descriptors in @pDescriptorSets@+--+-- -   #VUID-vkCmdBindDescriptorSets-firstSet-00360# The sum of @firstSet@+--     and @descriptorSetCount@ /must/ be less than or equal to+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@+--     provided when @layout@ was created+--+-- -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361#+--     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s+--     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family+--+-- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971# Each element of+--     @pDynamicOffsets@ which corresponds to a descriptor binding with+--     type+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+--     /must/ be a multiple of+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minUniformBufferOffsetAlignment@+--+-- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972# Each element of+--     @pDynamicOffsets@ which corresponds to a descriptor binding with+--     type+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+--     /must/ be a multiple of+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minStorageBufferOffsetAlignment@+--+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979# For each+--     dynamic uniform or storage buffer binding in @pDescriptorSets@, the+--     sum of the effective offset, as defined above, and the range of the+--     binding /must/ be less than or equal to the size of the buffer+--+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616# Each element of+--     @pDescriptorSets@ /must/ not have been allocated from a+--     'Vulkan.Core10.Handles.DescriptorPool' with the+--     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'+--     flag set+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBindDescriptorSets-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter#+--     @pipelineBindPoint@ /must/ be a valid+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value+--+-- -   #VUID-vkCmdBindDescriptorSets-layout-parameter# @layout@ /must/ be a+--     valid 'Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter#+--     @pDescriptorSets@ /must/ be a valid pointer to an array of+--     @descriptorSetCount@ valid 'Vulkan.Core10.Handles.DescriptorSet'+--     handles+--+-- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter# If+--     @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a valid+--     pointer to an array of @dynamicOffsetCount@ @uint32_t@ values+--+-- -   #VUID-vkCmdBindDescriptorSets-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-vkCmdBindDescriptorSets-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength#+--     @descriptorSetCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCmdBindDescriptorSets-commonparent# Each of @commandBuffer@,+--     @layout@, and the elements of @pDescriptorSets@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Handles.DescriptorSet',+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Vulkan.Core10.Handles.PipelineLayout'+cmdBindDescriptorSets :: forall io+                       . (MonadIO io)+                      => -- | @commandBuffer@ is the command buffer that the descriptor sets will be+                         -- bound to.+                         CommandBuffer+                      -> -- | @pipelineBindPoint@ is a+                         -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' indicating the+                         -- type of the pipeline that will use the descriptors. There is a separate+                         -- set of bind points for each pipeline type, so binding one does not+                         -- disturb the others.+                         PipelineBindPoint+                      -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to+                         -- program the bindings.+                         PipelineLayout+                      -> -- | @firstSet@ is the set number of the first descriptor set to be bound.+                         ("firstSet" ::: Word32)+                      -> -- | @pDescriptorSets@ is a pointer to an array of handles to+                         -- 'Vulkan.Core10.Handles.DescriptorSet' objects describing the descriptor+                         -- sets to bind to.+                         ("descriptorSets" ::: Vector DescriptorSet)+                      -> -- | @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values+                         -- specifying dynamic offsets.+                         ("dynamicOffsets" ::: Vector Word32)+                      -> io ()+cmdBindDescriptorSets commandBuffer pipelineBindPoint layout firstSet descriptorSets dynamicOffsets = liftIO . evalContT $ do+  let vkCmdBindDescriptorSetsPtr = pVkCmdBindDescriptorSets (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBindDescriptorSetsPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorSets is null" Nothing Nothing+  let vkCmdBindDescriptorSets' = mkVkCmdBindDescriptorSets vkCmdBindDescriptorSetsPtr+  pPDescriptorSets <- ContT $ allocaBytes @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)+  pPDynamicOffsets <- ContT $ allocaBytes @Word32 ((Data.Vector.length (dynamicOffsets)) * 4)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicOffsets `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (dynamicOffsets)+  lift $ traceAroundEvent "vkCmdBindDescriptorSets" (vkCmdBindDescriptorSets' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (layout) (firstSet) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32)) (pPDescriptorSets) ((fromIntegral (Data.Vector.length $ (dynamicOffsets)) :: Word32)) (pPDynamicOffsets))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBindIndexBuffer+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()++-- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBindIndexBuffer-offset-00431# @offset@ /must/ be less+--     than the size of @buffer@+--+-- -   #VUID-vkCmdBindIndexBuffer-offset-00432# The sum of @offset@ and the+--     address of the range of 'Vulkan.Core10.Handles.DeviceMemory' object+--     that is backing @buffer@, /must/ be a multiple of the type indicated+--     by @indexType@+--+-- -   #VUID-vkCmdBindIndexBuffer-buffer-00433# @buffer@ /must/ have been+--     created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'+--     flag+--+-- -   #VUID-vkCmdBindIndexBuffer-buffer-00434# If @buffer@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBindIndexBuffer-indexType-02507# @indexType@ /must/ not+--     be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'+--+-- -   #VUID-vkCmdBindIndexBuffer-indexType-02765# If @indexType@ is+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBindIndexBuffer-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBindIndexBuffer-buffer-parameter# @buffer@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdBindIndexBuffer-indexType-parameter# @indexType@ /must/+--     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- -   #VUID-vkCmdBindIndexBuffer-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-vkCmdBindIndexBuffer-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBindIndexBuffer-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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.IndexType.IndexType'+cmdBindIndexBuffer :: forall io+                    . (MonadIO io)+                   => -- | @commandBuffer@ is the command buffer into which the command is+                      -- recorded.+                      CommandBuffer+                   -> -- | @buffer@ is the buffer being bound.+                      Buffer+                   -> -- | @offset@ is the starting offset in bytes within @buffer@ used in index+                      -- buffer address calculations.+                      ("offset" ::: DeviceSize)+                   -> -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value+                      -- specifying the size of the indices.+                      IndexType+                   -> io ()+cmdBindIndexBuffer commandBuffer buffer offset indexType = liftIO $ do+  let vkCmdBindIndexBufferPtr = pVkCmdBindIndexBuffer (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdBindIndexBufferPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindIndexBuffer is null" Nothing Nothing+  let vkCmdBindIndexBuffer' = mkVkCmdBindIndexBuffer vkCmdBindIndexBufferPtr+  traceAroundEvent "vkCmdBindIndexBuffer" (vkCmdBindIndexBuffer' (commandBufferHandle (commandBuffer)) (buffer) (offset) (indexType))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBindVertexBuffers+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()++-- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer+--+-- = Description+--+-- The values taken from elements i of @pBuffers@ and @pOffsets@ replace+-- the current state for the vertex input binding @firstBinding@ + i, for i+-- in [0, @bindingCount@). The vertex input binding is updated to start at+-- the offset indicated by @pOffsets@[i] from the start of the buffer+-- @pBuffers@[i]. All vertex input attributes that use each of these+-- bindings will use these updated addresses in their address calculations+-- for subsequent drawing commands. If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+-- feature is enabled, elements of @pBuffers@ /can/ be+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by the+-- vertex shader. If a vertex input attribute is bound to a vertex input+-- binding that is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the values+-- taken from memory are considered to be zero, and missing G, B, or A+-- components are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBindVertexBuffers-firstBinding-00624# @firstBinding@+--     /must/ be less than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- -   #VUID-vkCmdBindVertexBuffers-firstBinding-00625# The sum of+--     @firstBinding@ and @bindingCount@ /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- -   #VUID-vkCmdBindVertexBuffers-pOffsets-00626# All elements of+--     @pOffsets@ /must/ be less than the size of the corresponding element+--     in @pBuffers@+--+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-00627# All elements of+--     @pBuffers@ /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'+--     flag+--+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-00628# Each element of+--     @pBuffers@ that is non-sparse /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-04001# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all elements of @pBuffers@ /must/ not be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-04002# If an element of+--     @pBuffers@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the+--     corresponding element of @pOffsets@ /must/ be zero+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBindVertexBuffers-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-parameter# @pBuffers@ /must/+--     be a valid pointer to an array of @bindingCount@ valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--     'Vulkan.Core10.Handles.Buffer' handles+--+-- -   #VUID-vkCmdBindVertexBuffers-pOffsets-parameter# @pOffsets@ /must/+--     be a valid pointer to an array of @bindingCount@+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values+--+-- -   #VUID-vkCmdBindVertexBuffers-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-vkCmdBindVertexBuffers-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBindVertexBuffers-bindingCount-arraylength#+--     @bindingCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCmdBindVertexBuffers-commonparent# Both of @commandBuffer@,+--     and the elements of @pBuffers@ that are valid handles of non-ignored+--     parameters /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdBindVertexBuffers :: forall io+                      . (MonadIO io)+                     => -- | @commandBuffer@ is the command buffer into which the command is+                        -- recorded.+                        CommandBuffer+                     -> -- | @firstBinding@ is the index of the first vertex input binding whose+                        -- state is updated by the command.+                        ("firstBinding" ::: Word32)+                     -> -- | @pBuffers@ is a pointer to an array of buffer handles.+                        ("buffers" ::: Vector Buffer)+                     -> -- | @pOffsets@ is a pointer to an array of buffer offsets.+                        ("offsets" ::: Vector DeviceSize)+                     -> io ()+cmdBindVertexBuffers commandBuffer firstBinding buffers offsets = liftIO . evalContT $ do+  let vkCmdBindVertexBuffersPtr = pVkCmdBindVertexBuffers (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBindVertexBuffersPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindVertexBuffers is null" Nothing Nothing+  let vkCmdBindVertexBuffers' = mkVkCmdBindVertexBuffers vkCmdBindVertexBuffersPtr+  let pBuffersLength = Data.Vector.length $ (buffers)+  lift $ unless ((Data.Vector.length $ (offsets)) == pBuffersLength) $+    throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing+  pPBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (buffers)) * 8)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)+  pPOffsets <- ContT $ allocaBytes @DeviceSize ((Data.Vector.length (offsets)) * 8)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)+  lift $ traceAroundEvent "vkCmdBindVertexBuffers" (vkCmdBindVertexBuffers' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDraw+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdDraw - Draw primitives+--+-- = Description+--+-- When the command is executed, primitives are assembled using the current+-- primitive topology and @vertexCount@ consecutive vertex indices with the+-- first @vertexIndex@ value equal to @firstVertex@. The primitives are+-- drawn @instanceCount@ times with @instanceIndex@ starting with+-- @firstInstance@ and increasing sequentially for each instance. The+-- assembled primitives execute the bound graphics pipeline.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02692# If a 'Vulkan.Core10.Handles.ImageView'+--     is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDraw-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDraw-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDraw-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-vkCmdDraw-OpTypeImage-06423# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image+--     or storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDraw-OpTypeImage-06424# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or+--     storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02699# Descriptors in each bound descriptor+--     set, specified via '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+--+-- -   #VUID-vkCmdDraw-None-02700# A valid pipeline /must/ be bound to the+--     pipeline bind point used by this command+--+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDraw-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDraw-commandBuffer-02707# If @commandBuffer@ is an+--     unprotected command buffer, 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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-None-02686# Every input attachment used by the+--     current subpass /must/ be bound to the pipeline via a descriptor set+--+-- -   #VUID-vkCmdDraw-None-04584# Image subresources used as attachments+--     in the current render pass /must/ not be accessed in any way other+--     than as an attachment by this command, except for cases involving+--     read-only access to depth\/stencil attachments as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>+--     chapter+--+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-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-vkCmdDraw-viewportCount-03417# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDraw-scissorCount-03418# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDraw-viewportCount-03419# If the bound graphics pipeline+--     state was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic states enabled then both+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     and+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--+-- -   #VUID-vkCmdDraw-viewportCount-04137# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDraw-viewportCount-04138# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDraw-viewportCount-04139# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDraw-viewportCount-04140# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDraw-primitiveTopology-03420# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @primitiveTopology@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ be of the same+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>+--     as the pipeline+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@+--     state+--+-- -   #VUID-vkCmdDraw-None-04875# If the bound graphics pipeline state was+--     created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDraw-None-04876# If the bound graphics pipeline state was+--     created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDraw-None-04877# If the bound graphics pipeline state was+--     created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-None-04879# If the bound graphics pipeline state was+--     created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDraw-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_EXT'+--     dynamic state enabled, and any of the shader stages of the bound+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+--     then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ be @1@+--+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-rasterizationSamples-04740# If rasterization is not+--     disabled in the bound graphics pipeline, and neither the+--     @VK_AMD_mixed_attachment_samples@ nor the+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+--     /must/ be the same as the current subpass color and\/or+--     depth\/stencil attachments+--+-- -   #VUID-vkCmdDraw-None-04912# If the bound graphics pipeline was+--     created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic states enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDraw-pStrides-04913# If the bound graphics pipeline was+--     created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command, and the @pStrides@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ not be @NULL@+--+-- -   #VUID-vkCmdDraw-None-04914# If the bound graphics pipeline state was+--     created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDraw-imageView-06172# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDraw-imageView-06173# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDraw-imageView-06174# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDraw-imageView-06175# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDraw-imageView-06176# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDraw-imageView-06177# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDraw-viewMask-06178# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDraw-colorAttachmentCount-06179# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDraw-colorAttachmentCount-06180# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDraw-pDepthAttachment-06181# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDraw-pStencilAttachment-06182# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDraw-imageView-06183# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDraw-imageView-06184# If the current render pass instance+--     was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDraw-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDraw-pDepthAttachment-06186# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDraw-pStencilAttachment-06187# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDraw-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDraw-pDepthAttachment-06189# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDraw-pStencilAttachment-06190# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDraw-renderPass-06198# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a+--     protected command buffer, any resource written to by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be an unprotected resource+--+-- -   #VUID-vkCmdDraw-commandBuffer-02713# If @commandBuffer@ is a+--     protected command buffer, pipeline stages other than the+--     framebuffer-space and compute stages in the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not write to any resource+--+-- -   #VUID-vkCmdDraw-commandBuffer-04617# If any of the shader stages of+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command uses the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>+--     capability, then @commandBuffer@ /must/ not be a protected command+--     buffer+--+-- -   #VUID-vkCmdDraw-None-04007# All vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ have either valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound+--+-- -   #VUID-vkCmdDraw-None-04008# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDraw-None-02721# For a given vertex buffer binding, any+--     attribute data fetched /must/ be entirely contained within the+--     corresponding vertex buffer binding, as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDraw-commandBuffer-parameter# @commandBuffer@ /must/ be a+--     valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdDraw-renderpass# This command /must/ only be called+--     inside of a render pass instance+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdDraw :: forall io+         . (MonadIO io)+        => -- | @commandBuffer@ is the command buffer into which the command is+           -- recorded.+           CommandBuffer+        -> -- | @vertexCount@ is the number of vertices to draw.+           ("vertexCount" ::: Word32)+        -> -- | @instanceCount@ is the number of instances to draw.+           ("instanceCount" ::: Word32)+        -> -- | @firstVertex@ is the index of the first vertex to draw.+           ("firstVertex" ::: Word32)+        -> -- | @firstInstance@ is the instance ID of the first instance to draw.+           ("firstInstance" ::: Word32)+        -> io ()+cmdDraw commandBuffer vertexCount instanceCount firstVertex firstInstance = liftIO $ do+  let vkCmdDrawPtr = pVkCmdDraw (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdDrawPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDraw is null" Nothing Nothing+  let vkCmdDraw' = mkVkCmdDraw vkCmdDrawPtr+  traceAroundEvent "vkCmdDraw" (vkCmdDraw' (commandBufferHandle (commandBuffer)) (vertexCount) (instanceCount) (firstVertex) (firstInstance))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDrawIndexed+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()++-- | vkCmdDrawIndexed - Draw primitives with indexed vertices+--+-- = Description+--+-- When the command is executed, primitives are assembled using the current+-- primitive topology and @indexCount@ vertices whose indices are retrieved+-- from the index buffer. The index buffer is treated as an array of+-- tightly packed unsigned integers of size defined by the+-- 'cmdBindIndexBuffer'::@indexType@ parameter with which the buffer was+-- bound.+--+-- The first vertex index is at an offset of @firstIndex@ × @indexSize@ ++-- @offset@ within the bound index buffer, where @offset@ is the offset+-- specified by 'cmdBindIndexBuffer' and @indexSize@ is the byte size of+-- the type specified by @indexType@. Subsequent index values are retrieved+-- from consecutive locations in the index buffer. Indices are first+-- compared to the primitive restart value, then zero extended to 32 bits+-- (if the @indexType@ is+-- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT' or+-- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16') and have+-- @vertexOffset@ added to them, before being supplied as the @vertexIndex@+-- value.+--+-- The primitives are drawn @instanceCount@ times with @instanceIndex@+-- starting with @firstInstance@ and increasing sequentially for each+-- instance. The assembled primitives execute the bound graphics pipeline.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndexed-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexed-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-OpTypeImage-06423# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image+--     or storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndexed-OpTypeImage-06424# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or+--     storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02699# Descriptors in each bound+--     descriptor set, specified via '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+--+-- -   #VUID-vkCmdDrawIndexed-None-02700# A valid pipeline /must/ be bound+--     to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawIndexed-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-02707# If @commandBuffer@ is an+--     unprotected command buffer, 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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-02686# Every input attachment used by+--     the current subpass /must/ be bound to the pipeline via a descriptor+--     set+--+-- -   #VUID-vkCmdDrawIndexed-None-04584# Image subresources used as+--     attachments in the current render pass /must/ not be accessed in any+--     way other than as an attachment by this command, except for cases+--     involving read-only access to depth\/stencil attachments as+--     described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>+--     chapter+--+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-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-vkCmdDrawIndexed-viewportCount-03417# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawIndexed-scissorCount-03418# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawIndexed-viewportCount-03419# If the bound graphics+--     pipeline state was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic states enabled then both+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     and+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04137# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04138# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04139# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04140# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexed-primitiveTopology-03420# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @primitiveTopology@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ be of the same+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>+--     as the pipeline+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@+--     state+--+-- -   #VUID-vkCmdDrawIndexed-None-04875# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexed-None-04876# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexed-None-04877# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-None-04879# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexed-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_EXT'+--     dynamic state enabled, and any of the shader stages of the bound+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+--     then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ be @1@+--+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-rasterizationSamples-04740# If rasterization+--     is not disabled in the bound graphics pipeline, and neither the+--     @VK_AMD_mixed_attachment_samples@ nor the+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+--     /must/ be the same as the current subpass color and\/or+--     depth\/stencil attachments+--+-- -   #VUID-vkCmdDrawIndexed-None-04912# If the bound graphics pipeline+--     was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic states enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawIndexed-pStrides-04913# If the bound graphics+--     pipeline was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command, and the @pStrides@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ not be @NULL@+--+-- -   #VUID-vkCmdDrawIndexed-None-04914# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawIndexed-imageView-06172# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexed-imageView-06173# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexed-imageView-06174# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexed-imageView-06175# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexed-imageView-06176# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexed-imageView-06177# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexed-viewMask-06178# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06179# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06180# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06181# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06182# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexed-imageView-06183# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndexed-imageView-06184# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndexed-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndexed-pDepthAttachment-06186# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06187# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndexed-pDepthAttachment-06189# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06190# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexed-renderPass-06198# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a+--     protected command buffer, any resource written to by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be an unprotected resource+--+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-02713# If @commandBuffer@ is a+--     protected command buffer, pipeline stages other than the+--     framebuffer-space and compute stages in the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not write to any resource+--+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-04617# If any of the shader+--     stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline+--     bind point used by this command uses the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>+--     capability, then @commandBuffer@ /must/ not be a protected command+--     buffer+--+-- -   #VUID-vkCmdDrawIndexed-None-04007# All vertex input bindings+--     accessed via vertex input variables declared in the vertex shader+--     entry point’s interface /must/ have either valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound+--+-- -   #VUID-vkCmdDrawIndexed-None-04008# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndexed-None-02721# For a given vertex buffer+--     binding, any attribute data fetched /must/ be entirely contained+--     within the corresponding vertex buffer binding, as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- -   #VUID-vkCmdDrawIndexed-firstIndex-04932# (@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'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdDrawIndexed-renderpass# This command /must/ only be+--     called inside of a render pass instance+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdDrawIndexed :: forall io+                . (MonadIO io)+               => -- | @commandBuffer@ is the command buffer into which the command is+                  -- recorded.+                  CommandBuffer+               -> -- | @indexCount@ is the number of vertices to draw.+                  ("indexCount" ::: Word32)+               -> -- | @instanceCount@ is the number of instances to draw.+                  ("instanceCount" ::: Word32)+               -> -- | @firstIndex@ is the base index within the index buffer.+                  ("firstIndex" ::: Word32)+               -> -- | @vertexOffset@ is the value added to the vertex index before indexing+                  -- into the vertex buffer.+                  ("vertexOffset" ::: Int32)+               -> -- | @firstInstance@ is the instance ID of the first instance to draw.+                  ("firstInstance" ::: Word32)+               -> io ()+cmdDrawIndexed commandBuffer indexCount instanceCount firstIndex vertexOffset firstInstance = liftIO $ do+  let vkCmdDrawIndexedPtr = pVkCmdDrawIndexed (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdDrawIndexedPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexed is null" Nothing Nothing+  let vkCmdDrawIndexed' = mkVkCmdDrawIndexed vkCmdDrawIndexedPtr+  traceAroundEvent "vkCmdDrawIndexed" (vkCmdDrawIndexed' (commandBufferHandle (commandBuffer)) (indexCount) (instanceCount) (firstIndex) (vertexOffset) (firstInstance))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDrawIndirect+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawIndirect - Draw primitives with indirect parameters+--+-- = Description+--+-- 'cmdDrawIndirect' behaves similarly to 'cmdDraw' except that the+-- parameters are read by the device from a buffer during execution.+-- @drawCount@ draws are executed by the command, with parameters taken+-- from @buffer@ starting at @offset@ and increasing by @stride@ bytes for+-- each successive draw. The parameters of each draw are encoded in an+-- array of 'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures. If+-- @drawCount@ is less than or equal to one, @stride@ is ignored.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndirect-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndirect-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-OpTypeImage-06423# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image+--     or storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndirect-OpTypeImage-06424# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or+--     storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02699# Descriptors in each bound+--     descriptor set, specified via '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+--+-- -   #VUID-vkCmdDrawIndirect-None-02700# A valid pipeline /must/ be bound+--     to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawIndirect-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawIndirect-commandBuffer-02707# If @commandBuffer@ is+--     an unprotected command buffer, 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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-02686# Every input attachment used by+--     the current subpass /must/ be bound to the pipeline via a descriptor+--     set+--+-- -   #VUID-vkCmdDrawIndirect-None-04584# Image subresources used as+--     attachments in the current render pass /must/ not be accessed in any+--     way other than as an attachment by this command, except for cases+--     involving read-only access to depth\/stencil attachments as+--     described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>+--     chapter+--+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-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-vkCmdDrawIndirect-viewportCount-03417# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawIndirect-scissorCount-03418# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawIndirect-viewportCount-03419# If the bound graphics+--     pipeline state was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic states enabled then both+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     and+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04137# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04138# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04139# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04140# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndirect-primitiveTopology-03420# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @primitiveTopology@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ be of the same+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>+--     as the pipeline+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@+--     state+--+-- -   #VUID-vkCmdDrawIndirect-None-04875# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndirect-None-04876# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndirect-None-04877# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-None-04879# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndirect-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_EXT'+--     dynamic state enabled, and any of the shader stages of the bound+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+--     then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ be @1@+--+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-rasterizationSamples-04740# If rasterization+--     is not disabled in the bound graphics pipeline, and neither the+--     @VK_AMD_mixed_attachment_samples@ nor the+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+--     /must/ be the same as the current subpass color and\/or+--     depth\/stencil attachments+--+-- -   #VUID-vkCmdDrawIndirect-None-04912# If the bound graphics pipeline+--     was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic states enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawIndirect-pStrides-04913# If the bound graphics+--     pipeline was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command, and the @pStrides@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ not be @NULL@+--+-- -   #VUID-vkCmdDrawIndirect-None-04914# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawIndirect-imageView-06172# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirect-imageView-06173# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirect-imageView-06174# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirect-imageView-06175# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirect-imageView-06176# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirect-imageView-06177# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirect-viewMask-06178# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06179# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06180# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06181# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06182# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirect-imageView-06183# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndirect-imageView-06184# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndirect-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndirect-pDepthAttachment-06186# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06187# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndirect-pDepthAttachment-06189# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06190# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirect-renderPass-06198# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndirect-None-04007# All vertex input bindings+--     accessed via vertex input variables declared in the vertex shader+--     entry point’s interface /must/ have either valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound+--+-- -   #VUID-vkCmdDrawIndirect-None-04008# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndirect-None-02721# For a given vertex buffer+--     binding, any attribute data fetched /must/ be entirely contained+--     within the corresponding vertex buffer binding, as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- -   #VUID-vkCmdDrawIndirect-buffer-02708# If @buffer@ is non-sparse then+--     it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdDrawIndirect-buffer-02709# @buffer@ /must/ have been+--     created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   #VUID-vkCmdDrawIndirect-offset-02710# @offset@ /must/ be a multiple+--     of @4@+--+-- -   #VUID-vkCmdDrawIndirect-commandBuffer-02711# @commandBuffer@ /must/+--     not be a protected command buffer+--+-- -   #VUID-vkCmdDrawIndirect-drawCount-02718# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>+--     feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- -   #VUID-vkCmdDrawIndirect-drawCount-02719# @drawCount@ /must/ be less+--     than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- -   #VUID-vkCmdDrawIndirect-firstInstance-00478# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>+--     feature is not enabled, all the @firstInstance@ members of the+--     'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures accessed+--     by this command /must/ be @0@+--+-- -   #VUID-vkCmdDrawIndirect-drawCount-00476# If @drawCount@ is greater+--     than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be greater+--     than or equal to+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')+--+-- -   #VUID-vkCmdDrawIndirect-drawCount-00487# If @drawCount@ is equal to+--     @1@, (@offset@ ++--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be+--     less than or equal to the size of @buffer@+--+-- -   #VUID-vkCmdDrawIndirect-drawCount-00488# If @drawCount@ is greater+--     than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ ++--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be+--     less than or equal to the size of @buffer@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDrawIndirect-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDrawIndirect-buffer-parameter# @buffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdDrawIndirect-renderpass# This command /must/ only be+--     called inside of a render pass instance+--+-- -   #VUID-vkCmdDrawIndirect-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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdDrawIndirect :: 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)+                -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.+                   ("drawCount" ::: Word32)+                -> -- | @stride@ is the byte stride between successive sets of draw parameters.+                   ("stride" ::: Word32)+                -> io ()+cmdDrawIndirect commandBuffer buffer offset drawCount stride = liftIO $ do+  let vkCmdDrawIndirectPtr = pVkCmdDrawIndirect (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdDrawIndirectPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirect is null" Nothing Nothing+  let vkCmdDrawIndirect' = mkVkCmdDrawIndirect vkCmdDrawIndirectPtr+  traceAroundEvent "vkCmdDrawIndirect" (vkCmdDrawIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDrawIndexedIndirect+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawIndexedIndirect - Draw primitives with indirect parameters and+-- indexed vertices+--+-- = Description+--+-- 'cmdDrawIndexedIndirect' behaves similarly to 'cmdDrawIndexed' except+-- that the parameters are read by the device from a buffer during+-- execution. @drawCount@ draws are executed by the command, with+-- parameters taken from @buffer@ starting at @offset@ and increasing by+-- @stride@ bytes for each successive draw. The parameters of each draw are+-- encoded in an array of+-- 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures. If+-- @drawCount@ is less than or equal to one, @stride@ is ignored.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-OpTypeImage-06423# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image+--     or storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06424# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or+--     storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02699# Descriptors in each bound+--     descriptor set, specified via '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+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02700# A valid pipeline /must/+--     be bound to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707# If+--     @commandBuffer@ is an unprotected command buffer, 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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-02686# Every input attachment+--     used by the current subpass /must/ be bound to the pipeline via a+--     descriptor set+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04584# Image subresources used+--     as attachments in the current render pass /must/ not be accessed in+--     any way other than as an attachment by this command, except for+--     cases involving read-only access to depth\/stencil attachments as+--     described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>+--     chapter+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-viewportCount-03417# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawIndexedIndirect-scissorCount-03418# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-03419# If the bound+--     graphics pipeline state was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic states enabled then both+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     and+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04137# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04138# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04139# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04140# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141# If+--     the bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142# If+--     the bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and a+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+--     structure chained from @VkPipelineVieportCreateInfo@, 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.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @primitiveTopology@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ be of the same+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>+--     as the pipeline+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@+--     state+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04875# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04876# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04877# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-None-04879# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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_EXT'+--     dynamic state enabled, and any of the shader stages of the bound+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+--     then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ be @1@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-rasterizationSamples-04740# If+--     rasterization is not disabled in the bound graphics pipeline, and+--     neither the @VK_AMD_mixed_attachment_samples@ nor the+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+--     /must/ be the same as the current subpass color and\/or+--     depth\/stencil attachments+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04912# If the bound graphics+--     pipeline was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic states enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawIndexedIndirect-pStrides-04913# If the bound graphics+--     pipeline was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command, and the @pStrides@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ not be @NULL@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04914# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06172# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirect-imageView-06173# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirect-imageView-06174# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirect-imageView-06175# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirect-imageView-06176# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirect-imageView-06177# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirect-viewMask-06178# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06180# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06182# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06183# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06184# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndexedIndirect-pDepthAttachment-06186# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndexedIndirect-pDepthAttachment-06189# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirect-renderPass-06198# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04007# All vertex input bindings+--     accessed via vertex input variables declared in the vertex shader+--     entry point’s interface /must/ have either valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04008# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02721# For a given vertex buffer+--     binding, any attribute data fetched /must/ be entirely contained+--     within the corresponding vertex buffer binding, as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- -   #VUID-vkCmdDrawIndexedIndirect-buffer-02708# If @buffer@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdDrawIndexedIndirect-buffer-02709# @buffer@ /must/ have+--     been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   #VUID-vkCmdDrawIndexedIndirect-offset-02710# @offset@ /must/ be a+--     multiple of @4@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711# @commandBuffer@+--     /must/ not be a protected command buffer+--+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02718# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>+--     feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02719# @drawCount@ /must/+--     be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- -   #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+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')+--+-- -   #VUID-vkCmdDrawIndexedIndirect-firstInstance-00530# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>+--     feature is not enabled, all the @firstInstance@ members of the+--     'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures+--     accessed by this command /must/ be @0@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00539# If @drawCount@ is+--     equal to @1@, (@offset@ ++--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))+--     /must/ be less than or equal to the size of @buffer@+--+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00540# If @drawCount@ is+--     greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ ++--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))+--     /must/ be less than or equal to the size of @buffer@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDrawIndexedIndirect-buffer-parameter# @buffer@ /must/ be+--     a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdDrawIndexedIndirect-renderpass# This command /must/ only+--     be called inside of a render pass instance+--+-- -   #VUID-vkCmdDrawIndexedIndirect-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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdDrawIndexedIndirect :: 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)+                       -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.+                          ("drawCount" ::: Word32)+                       -> -- | @stride@ is the byte stride between successive sets of draw parameters.+                          ("stride" ::: Word32)+                       -> io ()+cmdDrawIndexedIndirect commandBuffer buffer offset drawCount stride = liftIO $ do+  let vkCmdDrawIndexedIndirectPtr = pVkCmdDrawIndexedIndirect (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdDrawIndexedIndirectPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexedIndirect is null" Nothing Nothing+  let vkCmdDrawIndexedIndirect' = mkVkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirectPtr+  traceAroundEvent "vkCmdDrawIndexedIndirect" (vkCmdDrawIndexedIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDispatch+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdDispatch - Dispatch compute work items+--+-- = Description+--+-- When the command is executed, a global workgroup consisting of+-- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is+-- assembled.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDispatch-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatch-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatch-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-vkCmdDispatch-OpTypeImage-06423# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image+--     or storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDispatch-OpTypeImage-06424# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or+--     storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-None-02699# Descriptors in each bound descriptor+--     set, specified via '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+--+-- -   #VUID-vkCmdDispatch-None-02700# A valid pipeline /must/ be bound to+--     the pipeline bind point used by this command+--+-- -   #VUID-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDispatch-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDispatch-commandBuffer-02707# If @commandBuffer@ is an+--     unprotected command buffer, 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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-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-vkCmdDispatch-commandBuffer-02712# If @commandBuffer@ is a+--     protected command buffer, any resource written to by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be an unprotected resource+--+-- -   #VUID-vkCmdDispatch-commandBuffer-02713# If @commandBuffer@ is a+--     protected command buffer, pipeline stages other than the+--     framebuffer-space and compute stages in the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not write to any resource+--+-- -   #VUID-vkCmdDispatch-commandBuffer-04617# If any of the shader stages+--     of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command uses the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>+--     capability, then @commandBuffer@ /must/ not be a protected command+--     buffer+--+-- -   #VUID-vkCmdDispatch-groupCountX-00386# @groupCountX@ /must/ be less+--     than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--+-- -   #VUID-vkCmdDispatch-groupCountY-00387# @groupCountY@ /must/ be less+--     than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--+-- -   #VUID-vkCmdDispatch-groupCountZ-00388# @groupCountZ@ /must/ be less+--     than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDispatch-commandBuffer-parameter# @commandBuffer@ /must/+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDispatch-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-vkCmdDispatch-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdDispatch-renderpass# This command /must/ only be called+--     outside of a render pass instance+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdDispatch :: 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 ()+cmdDispatch commandBuffer groupCountX groupCountY groupCountZ = liftIO $ do+  let vkCmdDispatchPtr = pVkCmdDispatch (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdDispatchPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatch is null" Nothing Nothing+  let vkCmdDispatch' = mkVkCmdDispatch vkCmdDispatchPtr+  traceAroundEvent "vkCmdDispatch" (vkCmdDispatch' (commandBufferHandle (commandBuffer)) (groupCountX) (groupCountY) (groupCountZ))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDispatchIndirect+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()++-- | vkCmdDispatchIndirect - Dispatch compute work items with indirect+-- parameters+--+-- = Description+--+-- 'cmdDispatchIndirect' behaves similarly to 'cmdDispatch' 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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDispatchIndirect-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatchIndirect-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-OpTypeImage-06423# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image+--     or storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDispatchIndirect-OpTypeImage-06424# Any+--     'Vulkan.Core10.Handles.ImageView' or+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or+--     storage texel buffer where the image format field of the+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that+--     support+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'+--+-- -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-None-02699# Descriptors in each bound+--     descriptor set, specified via '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+--+-- -   #VUID-vkCmdDispatchIndirect-None-02700# A valid pipeline /must/ be+--     bound to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDispatchIndirect-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02707# If @commandBuffer@+--     is an unprotected command buffer, 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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-buffer-02708# If @buffer@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdDispatchIndirect-buffer-02709# @buffer@ /must/ have been+--     created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   #VUID-vkCmdDispatchIndirect-offset-02710# @offset@ /must/ be a+--     multiple of @4@+--+-- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02711# @commandBuffer@+--     /must/ not be a protected command buffer+--+-- -   #VUID-vkCmdDispatchIndirect-offset-00407# The sum of @offset@ and+--     the size of 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'+--     /must/ be less than or equal to the size of @buffer@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDispatchIndirect-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDispatchIndirect-buffer-parameter# @buffer@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdDispatchIndirect-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdDispatchIndirect-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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdDispatchIndirect :: forall io+                     . (MonadIO io)+                    => -- | @commandBuffer@ is the command buffer into which the command will be+                       -- recorded.+                       CommandBuffer+                    -> -- | @buffer@ is the buffer containing dispatch parameters.+                       Buffer+                    -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.+                       ("offset" ::: DeviceSize)+                    -> io ()+cmdDispatchIndirect commandBuffer buffer offset = liftIO $ do+  let vkCmdDispatchIndirectPtr = pVkCmdDispatchIndirect (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdDispatchIndirectPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchIndirect is null" Nothing Nothing+  let vkCmdDispatchIndirect' = mkVkCmdDispatchIndirect vkCmdDispatchIndirectPtr+  traceAroundEvent "vkCmdDispatchIndirect" (vkCmdDispatchIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyBuffer+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()++-- | vkCmdCopyBuffer - Copy data between buffer regions+--+-- = Description+--+-- Each region in @pRegions@ is copied from the source buffer to the same+-- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be+-- the same buffer or alias the same memory, but the resulting values are+-- undefined if the copy regions overlap in memory.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-01822# If @commandBuffer@ is an+--     unprotected command buffer, then @srcBuffer@ /must/ not be a+--     protected buffer+--+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-01823# If @commandBuffer@ is an+--     unprotected command buffer, then @dstBuffer@ /must/ not be a+--     protected buffer+--+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-01824# If @commandBuffer@ is a+--     protected command buffer, then @dstBuffer@ /must/ not be an+--     unprotected buffer+--+-- -   #VUID-vkCmdCopyBuffer-srcOffset-00113# The @srcOffset@ member of+--     each element of @pRegions@ /must/ be less than the size of+--     @srcBuffer@+--+-- -   #VUID-vkCmdCopyBuffer-dstOffset-00114# The @dstOffset@ member of+--     each element of @pRegions@ /must/ be less than the size of+--     @dstBuffer@+--+-- -   #VUID-vkCmdCopyBuffer-size-00115# The @size@ member of each element+--     of @pRegions@ /must/ be less than or equal to the size of+--     @srcBuffer@ minus @srcOffset@+--+-- -   #VUID-vkCmdCopyBuffer-size-00116# The @size@ member of each element+--     of @pRegions@ /must/ be less than or equal to the size of+--     @dstBuffer@ minus @dstOffset@+--+-- -   #VUID-vkCmdCopyBuffer-pRegions-00117# The union of the source+--     regions, and the union of the destination regions, specified by the+--     elements of @pRegions@, /must/ not overlap in memory+--+-- -   #VUID-vkCmdCopyBuffer-srcBuffer-00118# @srcBuffer@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyBuffer-srcBuffer-00119# If @srcBuffer@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyBuffer-dstBuffer-00120# @dstBuffer@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyBuffer-dstBuffer-00121# If @dstBuffer@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyBuffer-srcBuffer-parameter# @srcBuffer@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdCopyBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdCopyBuffer-pRegions-parameter# @pRegions@ /must/ be a+--     valid pointer to an array of @regionCount@ valid 'BufferCopy'+--     structures+--+-- -   #VUID-vkCmdCopyBuffer-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-vkCmdCopyBuffer-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics, or compute+--     operations+--+-- -   #VUID-vkCmdCopyBuffer-renderpass# This command /must/ only be called+--     outside of a render pass instance+--+-- -   #VUID-vkCmdCopyBuffer-regionCount-arraylength# @regionCount@ /must/+--     be greater than @0@+--+-- -   #VUID-vkCmdCopyBuffer-commonparent# Each of @commandBuffer@,+--     @dstBuffer@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'BufferCopy',+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdCopyBuffer :: forall io+               . (MonadIO io)+              => -- | @commandBuffer@ is the command buffer into which the command will be+                 -- recorded.+                 CommandBuffer+              -> -- | @srcBuffer@ is the source buffer.+                 ("srcBuffer" ::: Buffer)+              -> -- | @dstBuffer@ is the destination buffer.+                 ("dstBuffer" ::: Buffer)+              -> -- | @pRegions@ is a pointer to an array of 'BufferCopy' structures+                 -- specifying the regions to copy.+                 ("regions" ::: Vector BufferCopy)+              -> io ()+cmdCopyBuffer commandBuffer srcBuffer dstBuffer regions = liftIO . evalContT $ do+  let vkCmdCopyBufferPtr = pVkCmdCopyBuffer (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdCopyBufferPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBuffer is null" Nothing Nothing+  let vkCmdCopyBuffer' = mkVkCmdCopyBuffer vkCmdCopyBufferPtr+  pPRegions <- ContT $ allocaBytes @BufferCopy ((Data.Vector.length (regions)) * 24)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (24 * (i)) :: Ptr BufferCopy) (e)) (regions)+  lift $ traceAroundEvent "vkCmdCopyBuffer" (vkCmdCopyBuffer' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyImage+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()++-- | vkCmdCopyImage - Copy data between images+--+-- = Description+--+-- Each region in @pRegions@ is copied from the source image to the same+-- region of the destination image. @srcImage@ and @dstImage@ /can/ be the+-- same image or alias the same memory.+--+-- The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats+-- are compatible if they share the same class, as shown in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>+-- table. Depth\/stencil formats /must/ match exactly.+--+-- If either @srcImage@ or @dstImage@ has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- regions of each plane to be copied /must/ be specified separately using+-- the @srcSubresource@ and @dstSubresource@ members of the 'ImageCopy'+-- structure. In this case, the @aspectMask@ of the @srcSubresource@ or+-- @dstSubresource@ that refers to the multi-planar image /must/ be+-- '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'. For+-- the purposes of 'cmdCopyImage', each plane of a multi-planar image is+-- treated as having the format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'+-- and to coordinates used in the copy, which correspond to texels in the+-- /plane/ rather than how these texels map to coordinates in the image as+-- a whole.+--+-- Note+--+-- For example, the+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' plane+-- of a 'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_420_UNORM' image+-- is compatible with an image of format+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM' and (less usefully) with+-- the 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- plane of an image of format+-- 'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16',+-- as each texel is 2 bytes in size.+--+-- 'cmdCopyImage' allows copying between /size-compatible/ compressed and+-- uncompressed internal formats. Formats are size-compatible if the texel+-- block size of the uncompressed format is equal to the texel block size+-- of the compressed format. Such a copy does not perform on-the-fly+-- compression or decompression. When copying from an uncompressed format+-- to a compressed format, each texel of uncompressed data of the source+-- image is copied as a raw value to the corresponding compressed texel+-- block of the destination image. When copying from a compressed format to+-- an uncompressed format, each compressed texel block of the source image+-- is copied as a raw value to the corresponding texel of uncompressed data+-- in the destination image. Thus, for example, it is legal to copy between+-- a 128-bit uncompressed format and a compressed format which has a+-- 128-bit sized compressed texel block representing 4×4 texels (using 8+-- bits per texel), or between a 64-bit uncompressed format and a+-- compressed format which has a 64-bit sized compressed texel block+-- representing 4×4 texels (using 4 bits per texel).+--+-- When copying between compressed and uncompressed formats the @extent@+-- members represent the texel dimensions of the source image and not the+-- destination. When copying from a compressed image to an uncompressed+-- image the image texel dimensions written to the uncompressed image will+-- be source extent divided by the compressed texel block dimensions. When+-- copying from an uncompressed image to a compressed image the image texel+-- dimensions written to the compressed image will be the source extent+-- multiplied by the compressed texel block dimensions. In both cases the+-- number of bytes read and the number of bytes written will be identical.+--+-- Copying to or from block-compressed images is typically done in+-- multiples of the compressed texel block size. For this reason the+-- @extent@ /must/ be a multiple of the compressed texel block dimension.+-- There is one exception to this rule which is /required/ to handle+-- compressed images created with dimensions that are not a multiple of the+-- compressed texel block dimensions: if the @srcImage@ is compressed,+-- then:+--+-- -   If @extent.width@ is not a multiple of the compressed texel block+--     width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image+--     subresource width.+--+-- -   If @extent.height@ is not a multiple of the compressed texel block+--     height, then (@extent.height@ + @srcOffset.y@) /must/ equal the+--     image subresource height.+--+-- -   If @extent.depth@ is not a multiple of the compressed texel block+--     depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image+--     subresource depth.+--+-- Similarly, if the @dstImage@ is compressed, then:+--+-- -   If @extent.width@ is not a multiple of the compressed texel block+--     width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image+--     subresource width.+--+-- -   If @extent.height@ is not a multiple of the compressed texel block+--     height, then (@extent.height@ + @dstOffset.y@) /must/ equal the+--     image subresource height.+--+-- -   If @extent.depth@ is not a multiple of the compressed texel block+--     depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image+--     subresource depth.+--+-- This allows the last compressed texel block of the image in each+-- non-multiple dimension to be included as a source or destination of the+-- copy.+--+-- “@_422@” image formats that are not+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- are treated as having a 2×1 compressed texel block for the purposes of+-- these rules.+--+-- 'cmdCopyImage' /can/ be used to copy image data between multisample+-- images, but both images /must/ have the same number of samples.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyImage-commandBuffer-01825# If @commandBuffer@ is an+--     unprotected command buffer, then @srcImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdCopyImage-commandBuffer-01826# If @commandBuffer@ is an+--     unprotected command buffer, then @dstImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdCopyImage-commandBuffer-01827# If @commandBuffer@ is a+--     protected command buffer, then @dstImage@ /must/ not be an+--     unprotected image+--+-- -   #VUID-vkCmdCopyImage-pRegions-00124# The union of all source+--     regions, and the union of all destination regions, specified by the+--     elements of @pRegions@, /must/ not overlap in memory+--+-- -   #VUID-vkCmdCopyImage-srcImage-01995# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @srcImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'+--+-- -   #VUID-vkCmdCopyImage-srcImage-00126# @srcImage@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyImage-srcImage-01546# If @srcImage@ is non-sparse+--     then the image or /disjoint/ plane to be copied /must/ be bound+--     completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyImage-srcImageLayout-00128# @srcImageLayout@ /must/+--     specify the layout of the image subresources of @srcImage@ specified+--     in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdCopyImage-srcImageLayout-01917# @srcImageLayout@ /must/+--     be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- -   #VUID-vkCmdCopyImage-dstImage-01996# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @dstImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'+--+-- -   #VUID-vkCmdCopyImage-dstImage-00131# @dstImage@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyImage-dstImage-01547# If @dstImage@ is non-sparse+--     then the image or /disjoint/ plane that is the destination of the+--     copy /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyImage-dstImageLayout-00133# @dstImageLayout@ /must/+--     specify the layout of the image subresources of @dstImage@ specified+--     in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdCopyImage-dstImageLayout-01395# @dstImageLayout@ /must/+--     be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- -   #VUID-vkCmdCopyImage-srcImage-01548# If the+--     'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and+--     @dstImage@ is not a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+--     the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and+--     @dstImage@ /must/ be compatible, as defined+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibility above>+--+-- -   #VUID-vkCmdCopyImage-None-01549# In a copy to or from a plane of a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image>,+--     the 'Vulkan.Core10.Enums.Format.Format' of the image and plane+--     /must/ be compatible according to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes>+--     for the plane being copied+--+-- -   #VUID-vkCmdCopyImage-srcImage-00136# The sample count of @srcImage@+--     and @dstImage@ /must/ match+--+-- -   #VUID-vkCmdCopyImage-srcSubresource-01696# The+--     @srcSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created+--+-- -   #VUID-vkCmdCopyImage-dstSubresource-01697# The+--     @dstSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created+--+-- -   #VUID-vkCmdCopyImage-srcSubresource-01698# The+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @srcImage@ was created+--+-- -   #VUID-vkCmdCopyImage-dstSubresource-01699# The+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @dstImage@ was created+--+-- -   #VUID-vkCmdCopyImage-srcOffset-01783# The @srcOffset@ and @extent@+--     members of each element of @pRegions@ /must/ respect the image+--     transfer granularity requirements of @commandBuffer@’s command+--     pool’s queue family, as described in+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- -   #VUID-vkCmdCopyImage-dstOffset-01784# The @dstOffset@ and @extent@+--     members of each element of @pRegions@ /must/ respect the image+--     transfer granularity requirements of @commandBuffer@’s command+--     pool’s queue family, as described in+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- -   #VUID-vkCmdCopyImage-dstImage-02542# @dstImage@ and @srcImage@+--     /must/ not have been created with @flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   #VUID-vkCmdCopyImage-srcImage-01551# If neither @srcImage@ nor+--     @dstImage@ has a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>+--     then for each element of @pRegions@, @srcSubresource.aspectMask@ and+--     @dstSubresource.aspectMask@ /must/ match+--+-- -   #VUID-vkCmdCopyImage-srcImage-01552# If @srcImage@ has a+--     'Vulkan.Core10.Enums.Format.Format' with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>+--     then for each element of @pRegions@, @srcSubresource.aspectMask@+--     /must/ be+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+--     or+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+--+-- -   #VUID-vkCmdCopyImage-srcImage-01553# If @srcImage@ has a+--     'Vulkan.Core10.Enums.Format.Format' with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>+--     then for each element of @pRegions@, @srcSubresource.aspectMask@+--     /must/ be+--     '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'+--+-- -   #VUID-vkCmdCopyImage-dstImage-01554# If @dstImage@ has a+--     'Vulkan.Core10.Enums.Format.Format' with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>+--     then for each element of @pRegions@, @dstSubresource.aspectMask@+--     /must/ be+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+--     or+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+--+-- -   #VUID-vkCmdCopyImage-dstImage-01555# If @dstImage@ has a+--     'Vulkan.Core10.Enums.Format.Format' with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>+--     then for each element of @pRegions@, @dstSubresource.aspectMask@+--     /must/ be+--     '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'+--+-- -   #VUID-vkCmdCopyImage-srcImage-01556# If @srcImage@ has a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>+--     and the @dstImage@ does not have a multi-planar image format, then+--     for each element of @pRegions@, @dstSubresource.aspectMask@ /must/+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- -   #VUID-vkCmdCopyImage-dstImage-01557# If @dstImage@ has a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>+--     and the @srcImage@ does not have a multi-planar image format, then+--     for each element of @pRegions@, @srcSubresource.aspectMask@ /must/+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- -   #VUID-vkCmdCopyImage-srcImage-04443# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and+--     @srcSubresource.layerCount@ /must/ be @1@+--+-- -   #VUID-vkCmdCopyImage-dstImage-04444# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and+--     @dstSubresource.layerCount@ /must/ be @1@+--+-- -   #VUID-vkCmdCopyImage-aspectMask-00142# For each element of+--     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects+--     present in @srcImage@+--+-- -   #VUID-vkCmdCopyImage-aspectMask-00143# For each element of+--     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects+--     present in @dstImage@+--+-- -   #VUID-vkCmdCopyImage-srcOffset-00144# For each element of+--     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the width of the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImage-srcOffset-00145# For each element of+--     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the height of the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImage-srcImage-00146# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@+--     /must/ be @1@+--+-- -   #VUID-vkCmdCopyImage-srcOffset-00147# For each element of+--     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the depth of the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImage-srcImage-01785# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/+--     be @1@+--+-- -   #VUID-vkCmdCopyImage-dstImage-01786# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/+--     be @1@+--+-- -   #VUID-vkCmdCopyImage-srcImage-01787# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @srcOffset.z@ /must/ be @0@+--+-- -   #VUID-vkCmdCopyImage-dstImage-01788# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @dstOffset.z@ /must/ be @0@+--+-- -   #VUID-vkCmdCopyImage-srcImage-01790# If @srcImage@ and @dstImage@+--     are both of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+--     for each element of @pRegions@, @extent.depth@ /must/ be @1@+--+-- -   #VUID-vkCmdCopyImage-srcImage-01791# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @dstImage@ is of+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each+--     element of @pRegions@, @extent.depth@ /must/ equal+--     @srcSubresource.layerCount@+--+-- -   #VUID-vkCmdCopyImage-dstImage-01792# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @srcImage@ is of+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each+--     element of @pRegions@, @extent.depth@ /must/ equal+--     @dstSubresource.layerCount@+--+-- -   #VUID-vkCmdCopyImage-dstOffset-00150# For each element of+--     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the width of the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyImage-dstOffset-00151# For each element of+--     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the height of the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyImage-dstImage-00152# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@+--     /must/ be @1@+--+-- -   #VUID-vkCmdCopyImage-dstOffset-00153# For each element of+--     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the depth of the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyImage-srcImage-01727# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, all members of @srcOffset@+--     /must/ be a multiple of the corresponding dimensions of the+--     compressed texel block+--+-- -   #VUID-vkCmdCopyImage-srcImage-01728# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, @extent.width@ /must/ be a+--     multiple of the compressed texel block width or (@extent.width@ ++--     @srcOffset.x@) /must/ equal the width of the specified+--     @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImage-srcImage-01729# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, @extent.height@ /must/ be a+--     multiple of the compressed texel block height or (@extent.height@ ++--     @srcOffset.y@) /must/ equal the height of the specified+--     @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImage-srcImage-01730# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, @extent.depth@ /must/ be a+--     multiple of the compressed texel block depth or (@extent.depth@ ++--     @srcOffset.z@) /must/ equal the depth of the specified+--     @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImage-dstImage-01731# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, all members of @dstOffset@+--     /must/ be a multiple of the corresponding dimensions of the+--     compressed texel block+--+-- -   #VUID-vkCmdCopyImage-dstImage-01732# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, @extent.width@ /must/ be a+--     multiple of the compressed texel block width or (@extent.width@ ++--     @dstOffset.x@) /must/ equal the width of the specified+--     @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyImage-dstImage-01733# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, @extent.height@ /must/ be a+--     multiple of the compressed texel block height or (@extent.height@ ++--     @dstOffset.y@) /must/ equal the height of the specified+--     @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyImage-dstImage-01734# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     then for each element of @pRegions@, @extent.depth@ /must/ be a+--     multiple of the compressed texel block depth or (@extent.depth@ ++--     @dstOffset.z@) /must/ equal the depth of the specified+--     @dstSubresource@ of @dstImage@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyImage-commandBuffer-parameter# @commandBuffer@ /must/+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyImage-srcImage-parameter# @srcImage@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdCopyImage-srcImageLayout-parameter# @srcImageLayout@+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+--     value+--+-- -   #VUID-vkCmdCopyImage-dstImage-parameter# @dstImage@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdCopyImage-dstImageLayout-parameter# @dstImageLayout@+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+--     value+--+-- -   #VUID-vkCmdCopyImage-pRegions-parameter# @pRegions@ /must/ be a+--     valid pointer to an array of @regionCount@ valid 'ImageCopy'+--     structures+--+-- -   #VUID-vkCmdCopyImage-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-vkCmdCopyImage-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics, or compute+--     operations+--+-- -   #VUID-vkCmdCopyImage-renderpass# This command /must/ only be called+--     outside of a render pass instance+--+-- -   #VUID-vkCmdCopyImage-regionCount-arraylength# @regionCount@ /must/+--     be greater than @0@+--+-- -   #VUID-vkCmdCopyImage-commonparent# Each of @commandBuffer@,+--     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',+-- 'ImageCopy', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdCopyImage :: forall io+              . (MonadIO io)+             => -- | @commandBuffer@ is the command buffer into which the command will be+                -- recorded.+                CommandBuffer+             -> -- | @srcImage@ is the source image.+                ("srcImage" ::: Image)+             -> -- | @srcImageLayout@ is the current layout of the source image subresource.+                ("srcImageLayout" ::: ImageLayout)+             -> -- | @dstImage@ is the destination image.+                ("dstImage" ::: Image)+             -> -- | @dstImageLayout@ is the current layout of the destination image+                -- subresource.+                ("dstImageLayout" ::: ImageLayout)+             -> -- | @pRegions@ is a pointer to an array of 'ImageCopy' structures specifying+                -- the regions to copy.+                ("regions" ::: Vector ImageCopy)+             -> io ()+cmdCopyImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do+  let vkCmdCopyImagePtr = pVkCmdCopyImage (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdCopyImagePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImage is null" Nothing Nothing+  let vkCmdCopyImage' = mkVkCmdCopyImage vkCmdCopyImagePtr+  pPRegions <- ContT $ allocaBytes @ImageCopy ((Data.Vector.length (regions)) * 68)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageCopy) (e)) (regions)+  lift $ traceAroundEvent "vkCmdCopyImage" (vkCmdCopyImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBlitImage+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()++-- | vkCmdBlitImage - Copy regions of an image, potentially performing format+-- conversion,+--+-- = Description+--+-- 'cmdBlitImage' /must/ not be used for multisampled source or destination+-- images. Use 'cmdResolveImage' for this purpose.+--+-- As the sizes of the source and destination extents /can/ differ in any+-- dimension, texels in the source extent are scaled and filtered to the+-- destination extent. Scaling occurs via the following operations:+--+-- -   For each destination texel, the integer coordinate of that texel is+--     converted to an unnormalized texture coordinate, using the effective+--     inverse of the equations described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer unnormalized to integer conversion>:+--+--     -   ubase = i + ½+--+--     -   vbase = j + ½+--+--     -   wbase = k + ½+--+-- -   These base coordinates are then offset by the first destination+--     offset:+--+--     -   uoffset = ubase - xdst0+--+--     -   voffset = vbase - ydst0+--+--     -   woffset = wbase - zdst0+--+--     -   aoffset = a - @baseArrayCount@dst+--+-- -   The scale is determined from the source and destination regions, and+--     applied to the offset coordinates:+--+--     -   scaleu = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)+--+--     -   scalev = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)+--+--     -   scalew = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)+--+--     -   uscaled = uoffset × scaleu+--+--     -   vscaled = voffset × scalev+--+--     -   wscaled = woffset × scalew+--+-- -   Finally the source offset is added to the scaled coordinates, to+--     determine the final unnormalized coordinates used to sample from+--     @srcImage@:+--+--     -   u = uscaled + xsrc0+--+--     -   v = vscaled + ysrc0+--+--     -   w = wscaled + zsrc0+--+--     -   q = @mipLevel@+--+--     -   a = aoffset + @baseArrayCount@src+--+-- These coordinates are used to sample from the source image, as described+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations chapter>,+-- with the filter mode equal to that of @filter@, a mipmap mode of+-- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST' and+-- an address mode of+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+-- Implementations /must/ clamp at the edge of the source image, and /may/+-- additionally clamp to the edge of the source region.+--+-- Note+--+-- Due to allowable rounding errors in the generation of the source texture+-- coordinates, it is not always possible to guarantee exactly which source+-- texels will be sampled for a given blit. As rounding errors are+-- implementation-dependent, the exact results of a blitting operation are+-- also implementation-dependent.+--+-- Blits are done layer by layer starting with the @baseArrayLayer@ member+-- of @srcSubresource@ for the source and @dstSubresource@ for the+-- destination. @layerCount@ layers are blitted to the destination image.+--+-- When blitting 3D textures, slices in the destination region bounded by+-- @dstOffsets@[0].z and @dstOffsets@[1].z are sampled from slices in the+-- source region bounded by @srcOffsets@[0].z and @srcOffsets@[1].z. If the+-- @filter@ parameter is 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' then+-- the value sampled from the source image is taken by doing linear+-- filtering using the interpolated __z__ coordinate represented by __w__+-- in the previous equations. If the @filter@ parameter is+-- 'Vulkan.Core10.Enums.Filter.FILTER_NEAREST' then the value sampled from+-- the source image is taken from the single nearest slice, with an+-- implementation-dependent arithmetic rounding mode.+--+-- The following filtering and conversion rules apply:+--+-- -   Integer formats /can/ only be converted to other integer formats+--     with the same signedness.+--+-- -   No format conversion is supported between depth\/stencil images. The+--     formats /must/ match.+--+-- -   Format conversions on unorm, snorm, unscaled and packed float+--     formats of the copied aspect of the image are performed by first+--     converting the pixels to float values.+--+-- -   For sRGB source formats, nonlinear RGB values are converted to+--     linear representation prior to filtering.+--+-- -   After filtering, the float values are first clamped and then cast to+--     the destination image format. In case of sRGB destination format,+--     linear RGB values are converted to nonlinear representation before+--     writing the pixel to the image.+--+-- Signed and unsigned integers are converted by first clamping to the+-- representable range of the destination format, then casting the value.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBlitImage-commandBuffer-01834# If @commandBuffer@ is an+--     unprotected command buffer, then @srcImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdBlitImage-commandBuffer-01835# If @commandBuffer@ is an+--     unprotected command buffer, then @dstImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdBlitImage-commandBuffer-01836# If @commandBuffer@ is a+--     protected command buffer, then @dstImage@ /must/ not be an+--     unprotected image+--+-- -   #VUID-vkCmdBlitImage-pRegions-00215# The source region specified by+--     each element of @pRegions@ /must/ be a region that is contained+--     within @srcImage@+--+-- -   #VUID-vkCmdBlitImage-pRegions-00216# The destination region+--     specified by each element of @pRegions@ /must/ be a region that is+--     contained within @dstImage@+--+-- -   #VUID-vkCmdBlitImage-pRegions-00217# The union of all destination+--     regions, specified by the elements of @pRegions@, /must/ not overlap+--     in memory with any texel that /may/ be sampled during the blit+--     operation+--+-- -   #VUID-vkCmdBlitImage-srcImage-01999# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @srcImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'+--+-- -   #VUID-vkCmdBlitImage-srcImage-06421# @srcImage@ /must/ not use a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>+--+-- -   #VUID-vkCmdBlitImage-srcImage-00219# @srcImage@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--     usage flag+--+-- -   #VUID-vkCmdBlitImage-srcImage-00220# If @srcImage@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBlitImage-srcImageLayout-00221# @srcImageLayout@ /must/+--     specify the layout of the image subresources of @srcImage@ specified+--     in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdBlitImage-srcImageLayout-01398# @srcImageLayout@ /must/+--     be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- -   #VUID-vkCmdBlitImage-dstImage-02000# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @dstImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'+--+-- -   #VUID-vkCmdBlitImage-dstImage-06422# @dstImage@ /must/ not use a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>+--+-- -   #VUID-vkCmdBlitImage-dstImage-00224# @dstImage@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdBlitImage-dstImage-00225# If @dstImage@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBlitImage-dstImageLayout-00226# @dstImageLayout@ /must/+--     specify the layout of the image subresources of @dstImage@ specified+--     in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdBlitImage-dstImageLayout-01399# @dstImageLayout@ /must/+--     be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- -   #VUID-vkCmdBlitImage-srcImage-00229# If either of @srcImage@ or+--     @dstImage@ was created with a signed integer+--     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been+--     created with a signed integer 'Vulkan.Core10.Enums.Format.Format'+--+-- -   #VUID-vkCmdBlitImage-srcImage-00230# If either of @srcImage@ or+--     @dstImage@ was created with an unsigned integer+--     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been+--     created with an unsigned integer 'Vulkan.Core10.Enums.Format.Format'+--+-- -   #VUID-vkCmdBlitImage-srcImage-00231# If either of @srcImage@ or+--     @dstImage@ was created with a depth\/stencil format, the other+--     /must/ have exactly the same format+--+-- -   #VUID-vkCmdBlitImage-srcImage-00232# If @srcImage@ was created with+--     a depth\/stencil format, @filter@ /must/ be+--     'Vulkan.Core10.Enums.Filter.FILTER_NEAREST'+--+-- -   #VUID-vkCmdBlitImage-srcImage-00233# @srcImage@ /must/ have been+--     created with a @samples@ value of+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-vkCmdBlitImage-dstImage-00234# @dstImage@ /must/ have been+--     created with a @samples@ value of+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-vkCmdBlitImage-filter-02001# If @filter@ is+--     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @srcImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdBlitImage-filter-02002# If @filter@ is+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @srcImage@ /must/ contain+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdBlitImage-filter-00237# If @filter@ is+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', @srcImage@+--     /must/ be of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- -   #VUID-vkCmdBlitImage-srcSubresource-01705# The+--     @srcSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created+--+-- -   #VUID-vkCmdBlitImage-dstSubresource-01706# The+--     @dstSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created+--+-- -   #VUID-vkCmdBlitImage-srcSubresource-01707# The+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @srcImage@ was created+--+-- -   #VUID-vkCmdBlitImage-dstSubresource-01708# The+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @dstImage@ was created+--+-- -   #VUID-vkCmdBlitImage-dstImage-02545# @dstImage@ and @srcImage@+--     /must/ not have been created with @flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   #VUID-vkCmdBlitImage-srcImage-00240# If either @srcImage@ or+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',+--     then for each element of @pRegions@, @srcSubresource.baseArrayLayer@+--     and @dstSubresource.baseArrayLayer@ /must/ each be @0@, and+--     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/+--     each be @1@+--+-- -   #VUID-vkCmdBlitImage-aspectMask-00241# For each element of+--     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects+--     present in @srcImage@+--+-- -   #VUID-vkCmdBlitImage-aspectMask-00242# For each element of+--     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects+--     present in @dstImage@+--+-- -   #VUID-vkCmdBlitImage-srcOffset-00243# For each element of+--     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be+--     greater than or equal to @0@ and less than or equal to the width of+--     the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdBlitImage-srcOffset-00244# For each element of+--     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be+--     greater than or equal to @0@ and less than or equal to the height of+--     the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdBlitImage-srcImage-00245# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y+--     /must/ be @1@+--+-- -   #VUID-vkCmdBlitImage-srcOffset-00246# For each element of+--     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be+--     greater than or equal to @0@ and less than or equal to the depth of+--     the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdBlitImage-srcImage-00247# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z+--     /must/ be @1@+--+-- -   #VUID-vkCmdBlitImage-dstOffset-00248# For each element of+--     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be+--     greater than or equal to @0@ and less than or equal to the width of+--     the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdBlitImage-dstOffset-00249# For each element of+--     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be+--     greater than or equal to @0@ and less than or equal to the height of+--     the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdBlitImage-dstImage-00250# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y+--     /must/ be @1@+--+-- -   #VUID-vkCmdBlitImage-dstOffset-00251# For each element of+--     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be+--     greater than or equal to @0@ and less than or equal to the depth of+--     the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdBlitImage-dstImage-00252# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z+--     /must/ be @1@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBlitImage-commandBuffer-parameter# @commandBuffer@ /must/+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBlitImage-srcImage-parameter# @srcImage@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdBlitImage-srcImageLayout-parameter# @srcImageLayout@+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+--     value+--+-- -   #VUID-vkCmdBlitImage-dstImage-parameter# @dstImage@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdBlitImage-dstImageLayout-parameter# @dstImageLayout@+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+--     value+--+-- -   #VUID-vkCmdBlitImage-pRegions-parameter# @pRegions@ /must/ be a+--     valid pointer to an array of @regionCount@ valid 'ImageBlit'+--     structures+--+-- -   #VUID-vkCmdBlitImage-filter-parameter# @filter@ /must/ be a valid+--     'Vulkan.Core10.Enums.Filter.Filter' value+--+-- -   #VUID-vkCmdBlitImage-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-vkCmdBlitImage-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBlitImage-renderpass# This command /must/ only be called+--     outside of a render pass instance+--+-- -   #VUID-vkCmdBlitImage-regionCount-arraylength# @regionCount@ /must/+--     be greater than @0@+--+-- -   #VUID-vkCmdBlitImage-commonparent# Each of @commandBuffer@,+--     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.Filter.Filter', 'Vulkan.Core10.Handles.Image',+-- 'ImageBlit', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdBlitImage :: forall io+              . (MonadIO io)+             => -- | @commandBuffer@ is the command buffer into which the command will be+                -- recorded.+                CommandBuffer+             -> -- | @srcImage@ is the source image.+                ("srcImage" ::: Image)+             -> -- | @srcImageLayout@ is the layout of the source image subresources for the+                -- blit.+                ("srcImageLayout" ::: ImageLayout)+             -> -- | @dstImage@ is the destination image.+                ("dstImage" ::: Image)+             -> -- | @dstImageLayout@ is the layout of the destination image subresources for+                -- the blit.+                ("dstImageLayout" ::: ImageLayout)+             -> -- | @pRegions@ is a pointer to an array of 'ImageBlit' structures specifying+                -- the regions to blit.+                ("regions" ::: Vector ImageBlit)+             -> -- | @filter@ is a 'Vulkan.Core10.Enums.Filter.Filter' specifying the filter+                -- to apply if the blits require scaling.+                Filter+             -> io ()+cmdBlitImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions filter' = liftIO . evalContT $ do+  let vkCmdBlitImagePtr = pVkCmdBlitImage (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBlitImagePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBlitImage is null" Nothing Nothing+  let vkCmdBlitImage' = mkVkCmdBlitImage vkCmdBlitImagePtr+  pPRegions <- ContT $ allocaBytes @ImageBlit ((Data.Vector.length (regions)) * 80)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (80 * (i)) :: Ptr ImageBlit) (e)) (regions)+  lift $ traceAroundEvent "vkCmdBlitImage" (vkCmdBlitImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions) (filter'))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyBufferToImage+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()++-- | vkCmdCopyBufferToImage - Copy data from a buffer into an image+--+-- = Description+--+-- Each region in @pRegions@ is copied from the specified region of the+-- source buffer to the specified region of the destination image.+--+-- 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>,+-- regions of each plane to be a target of a copy /must/ be specified+-- separately using the @pRegions@ member of the 'BufferImageCopy'+-- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/+-- be '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'. For+-- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar+-- image is treated as having the format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'+-- and to coordinates used in the copy, which correspond to texels in the+-- /plane/ rather than how these texels map to coordinates in the image as+-- a whole.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01828# If @commandBuffer@+--     is an unprotected command buffer, then @srcBuffer@ /must/ not be a+--     protected buffer+--+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01829# If @commandBuffer@+--     is an unprotected command buffer, then @dstImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01830# If @commandBuffer@+--     is a protected command buffer, then @dstImage@ /must/ not be an+--     unprotected image+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-06217# The image region+--     specified by each element of @pRegions@ /must/ be contained within+--     the specified @imageSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-00171# @srcBuffer@ /must/ be+--     large enough to contain all buffer locations that are accessed+--     according to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,+--     for each element of @pRegions@+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-00173# The union of all source+--     regions, and the union of all destination regions, specified by the+--     elements of @pRegions@, /must/ not overlap in memory+--+-- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00174# @srcBuffer@ /must/+--     have been created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-01997# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @dstImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'+--+-- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00176# If @srcBuffer@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-00177# @dstImage@ /must/ have+--     been created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-00178# If @dstImage@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-00179# @dstImage@ /must/ have+--     a sample count equal to+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-00180# @dstImageLayout@+--     /must/ specify the layout of the image subresources of @dstImage@+--     specified in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-01396# @dstImageLayout@+--     /must/ be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01701# The+--     @imageSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created+--+-- -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01702# The+--     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @dstImage@ was created+--+-- -   #VUID-vkCmdCopyBufferToImage-imageOffset-01793# The @imageOffset@+--     and @imageExtent@ members of each element of @pRegions@ /must/+--     respect the image transfer granularity requirements of+--     @commandBuffer@’s command pool’s queue family, as described in+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-02543# @dstImage@ /must/ not+--     have been created with @flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04477# If the queue+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which+--     @commandBuffer@ was allocated from does not support+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each+--     element of @pRegions@, the @aspectMask@ member of @imageSubresource@+--     /must/ not be+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-06218# For each element of+--     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ ++--     @imageOffset.x@) /must/ both be greater than or equal to @0@ and+--     less than or equal to the width of the specified @imageSubresource@+--     of @dstImage@+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-06219# For each element of+--     @pRegions@, @imageOffset.y@ and (@imageExtent.height@ ++--     @imageOffset.y@) /must/ both be greater than or equal to @0@ and+--     less than or equal to the height of the specified @imageSubresource@+--     of @dstImage@+--+-- -   #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+--     @imageExtent.height@ /must/ be @1@+--+-- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00200# For each element of+--     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ ++--     @imageOffset.z@) /must/ both be greater than or equal to @0@ and+--     less than or equal to the depth of the specified @imageSubresource@+--     of @dstImage@+--+-- -   #VUID-vkCmdCopyBufferToImage-srcImage-00201# If @dstImage@ is of+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@+--     /must/ be @1@+--+-- -   #VUID-vkCmdCopyBufferToImage-bufferRowLength-00203# If @dstImage@ is+--     a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferRowLength@ /must/ be a+--     multiple of the compressed texel block width+--+-- -   #VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204# If @dstImage@+--     is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferImageHeight@ /must/ be a+--     multiple of the compressed texel block height+--+-- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00205# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, all members of @imageOffset@ /must/+--     be a multiple of the corresponding dimensions of the compressed+--     texel block+--+-- -   #VUID-vkCmdCopyBufferToImage-bufferOffset-00206# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple+--     of the compressed texel block size in bytes+--+-- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00207# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @imageExtent.width@ /must/ be a+--     multiple of the compressed texel block width or (@imageExtent.width@+--     + @imageOffset.x@) /must/ equal the width of the specified+--     @imageSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00208# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @imageExtent.height@ /must/ be a+--     multiple of the compressed texel block height or+--     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of+--     the specified @imageSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00209# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @imageExtent.depth@ /must/ be a+--     multiple of the compressed texel block depth or (@imageExtent.depth@+--     + @imageOffset.z@) /must/ equal the depth of the specified+--     @imageSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdCopyBufferToImage-aspectMask-00211# For each element of+--     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects+--     present in @dstImage@+--+-- -   #VUID-vkCmdCopyBufferToImage-aspectMask-01560# 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@, @imageSubresource.aspectMask@+--     /must/ be+--     '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'+--     (with+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--     valid only for image formats with three planes)+--+-- -   #VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213# If @dstImage@ is+--     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each+--     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be+--     @0@ and @imageSubresource.layerCount@ /must/ be @1@+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-04725# If @dstImage@ is not a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferRowLength@ multiplied by the+--     texel block size of @dstImage@ /must/ be less than or equal to 231-1+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-04726# If @dstImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferRowLength@ divided by the+--     compressed texel block width and then multiplied by the texel block+--     size of @dstImage@ /must/ be less than or equal to 231-1+--+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04052# If the queue+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which+--     @commandBuffer@ was allocated from does not support+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a+--     multiple of @4@+--+-- -   #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@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-parameter# @srcBuffer@ /must/+--     be a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-parameter# @dstImage@ /must/+--     be a valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter#+--     @dstImageLayout@ /must/ be a valid+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-parameter# @pRegions@ /must/+--     be a valid pointer to an array of @regionCount@ valid+--     'BufferImageCopy' structures+--+-- -   #VUID-vkCmdCopyBufferToImage-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-vkCmdCopyBufferToImage-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics, or compute+--     operations+--+-- -   #VUID-vkCmdCopyBufferToImage-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdCopyBufferToImage-regionCount-arraylength# @regionCount@+--     /must/ be greater than @0@+--+-- -   #VUID-vkCmdCopyBufferToImage-commonparent# Each of @commandBuffer@,+--     @dstImage@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdCopyBufferToImage :: forall io+                      . (MonadIO io)+                     => -- | @commandBuffer@ is the command buffer into which the command will be+                        -- recorded.+                        CommandBuffer+                     -> -- | @srcBuffer@ is the source buffer.+                        ("srcBuffer" ::: Buffer)+                     -> -- | @dstImage@ is the destination image.+                        ("dstImage" ::: Image)+                     -> -- | @dstImageLayout@ is the layout of the destination image subresources for+                        -- the copy.+                        ("dstImageLayout" ::: ImageLayout)+                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures+                        -- specifying the regions to copy.+                        ("regions" ::: Vector BufferImageCopy)+                     -> io ()+cmdCopyBufferToImage commandBuffer srcBuffer dstImage dstImageLayout regions = liftIO . evalContT $ do+  let vkCmdCopyBufferToImagePtr = pVkCmdCopyBufferToImage (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdCopyBufferToImagePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBufferToImage is null" Nothing Nothing+  let vkCmdCopyBufferToImage' = mkVkCmdCopyBufferToImage vkCmdCopyBufferToImagePtr+  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)+  lift $ traceAroundEvent "vkCmdCopyBufferToImage" (vkCmdCopyBufferToImage' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyImageToBuffer+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()++-- | vkCmdCopyImageToBuffer - Copy image data into a buffer+--+-- = Description+--+-- Each region in @pRegions@ is copied from the specified region of the+-- source image to the specified region of the destination buffer.+--+-- 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>,+-- regions of each plane to be a source of a copy /must/ be specified+-- separately using the @pRegions@ member of the 'BufferImageCopy'+-- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/+-- be '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'. For+-- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar+-- image is treated as having the format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'+-- and to coordinates used in the copy, which correspond to texels in the+-- /plane/ rather than how these texels map to coordinates in the image as+-- a whole.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01831# If @commandBuffer@+--     is an unprotected command buffer, then @srcImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01832# If @commandBuffer@+--     is an unprotected command buffer, then @dstBuffer@ /must/ not be a+--     protected buffer+--+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01833# If @commandBuffer@+--     is a protected command buffer, then @dstBuffer@ /must/ not be an+--     unprotected buffer+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06220# The image region+--     specified by each element of @pRegions@ /must/ be contained within+--     the specified @imageSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-00183# @dstBuffer@ /must/ be+--     large enough to contain all buffer locations that are accessed+--     according to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,+--     for each element of @pRegions@+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-00184# The union of all source+--     regions, and the union of all destination regions, specified by the+--     elements of @pRegions@, /must/ not overlap in memory+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00186# @srcImage@ /must/ have+--     been created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-01998# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @srcImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00187# If @srcImage@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00191# @dstBuffer@ /must/+--     have been created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00192# If @dstBuffer@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00188# @srcImage@ /must/ have+--     a sample count equal to+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189# @srcImageLayout@+--     /must/ specify the layout of the image subresources of @srcImage@+--     specified in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397# @srcImageLayout@+--     /must/ be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01703# The+--     @imageSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01704# The+--     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @srcImage@ was created+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-01794# The @imageOffset@+--     and @imageExtent@ members of each element of @pRegions@ /must/+--     respect the image transfer granularity requirements of+--     @commandBuffer@’s command pool’s queue family, as described in+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-02544# @srcImage@ /must/ not+--     have been created with @flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06221# For each element of+--     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ ++--     @imageOffset.x@) /must/ both be greater than or equal to @0@ and+--     less than or equal to the width of the specified @imageSubresource@+--     of @srcImage@+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06222# For each element of+--     @pRegions@, @imageOffset.y@ and (imageExtent.height ++--     @imageOffset.y@) /must/ both be greater than or equal to @0@ and+--     less than or equal to the height of the specified @imageSubresource@+--     of @srcImage@+--+-- -   #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+--     @imageExtent.height@ /must/ be @1@+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00200# For each element of+--     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ ++--     @imageOffset.z@) /must/ both be greater than or equal to @0@ and+--     less than or equal to the depth of the specified @imageSubresource@+--     of @srcImage@+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00201# If @srcImage@ is of+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@+--     /must/ be @1@+--+-- -   #VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203# If @srcImage@ is+--     a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferRowLength@ /must/ be a+--     multiple of the compressed texel block width+--+-- -   #VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204# If @srcImage@+--     is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferImageHeight@ /must/ be a+--     multiple of the compressed texel block height+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00205# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, all members of @imageOffset@ /must/+--     be a multiple of the corresponding dimensions of the compressed+--     texel block+--+-- -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-00206# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple+--     of the compressed texel block size in bytes+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00207# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @imageExtent.width@ /must/ be a+--     multiple of the compressed texel block width or (@imageExtent.width@+--     + @imageOffset.x@) /must/ equal the width of the specified+--     @imageSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00208# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @imageExtent.height@ /must/ be a+--     multiple of the compressed texel block height or+--     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of+--     the specified @imageSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00209# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @imageExtent.depth@ /must/ be a+--     multiple of the compressed texel block depth or (@imageExtent.depth@+--     + @imageOffset.z@) /must/ equal the depth of the specified+--     @imageSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdCopyImageToBuffer-aspectMask-00211# For each element of+--     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects+--     present in @srcImage@+--+-- -   #VUID-vkCmdCopyImageToBuffer-aspectMask-01560# 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@, @imageSubresource.aspectMask@+--     /must/ be+--     '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'+--     (with+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--     valid only for image formats with three planes)+--+-- -   #VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213# If @srcImage@ is+--     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each+--     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be+--     @0@ and @imageSubresource.layerCount@ /must/ be @1@+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-04725# If @srcImage@ is not a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferRowLength@ multiplied by the+--     texel block size of @srcImage@ /must/ be less than or equal to 231-1+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-04726# If @srcImage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,+--     for each element of @pRegions@, @bufferRowLength@ divided by the+--     compressed texel block width and then multiplied by the texel block+--     size of @srcImage@ /must/ be less than or equal to 231-1+--+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-04052# If the queue+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which+--     @commandBuffer@ was allocated from does not support+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a+--     multiple of @4@+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-04053# If @srcImage@ has a+--     depth\/stencil format, the @bufferOffset@ member of any element of+--     @pRegions@ /must/ be a multiple of @4@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-parameter# @srcImage@ /must/+--     be a valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter#+--     @srcImageLayout@ /must/ be a valid+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter# @dstBuffer@ /must/+--     be a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-parameter# @pRegions@ /must/+--     be a valid pointer to an array of @regionCount@ valid+--     'BufferImageCopy' structures+--+-- -   #VUID-vkCmdCopyImageToBuffer-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-vkCmdCopyImageToBuffer-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics, or compute+--     operations+--+-- -   #VUID-vkCmdCopyImageToBuffer-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdCopyImageToBuffer-regionCount-arraylength# @regionCount@+--     /must/ be greater than @0@+--+-- -   #VUID-vkCmdCopyImageToBuffer-commonparent# Each of @commandBuffer@,+--     @dstBuffer@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdCopyImageToBuffer :: forall io+                      . (MonadIO io)+                     => -- | @commandBuffer@ is the command buffer into which the command will be+                        -- recorded.+                        CommandBuffer+                     -> -- | @srcImage@ is the source image.+                        ("srcImage" ::: Image)+                     -> -- | @srcImageLayout@ is the layout of the source image subresources for the+                        -- copy.+                        ("srcImageLayout" ::: ImageLayout)+                     -> -- | @dstBuffer@ is the destination buffer.+                        ("dstBuffer" ::: Buffer)+                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures+                        -- specifying the regions to copy.+                        ("regions" ::: Vector BufferImageCopy)+                     -> io ()+cmdCopyImageToBuffer commandBuffer srcImage srcImageLayout dstBuffer regions = liftIO . evalContT $ do+  let vkCmdCopyImageToBufferPtr = pVkCmdCopyImageToBuffer (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdCopyImageToBufferPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImageToBuffer is null" Nothing Nothing+  let vkCmdCopyImageToBuffer' = mkVkCmdCopyImageToBuffer vkCmdCopyImageToBufferPtr+  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)+  lift $ traceAroundEvent "vkCmdCopyImageToBuffer" (vkCmdCopyImageToBuffer' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdUpdateBuffer+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()++-- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory+--+-- = Description+--+-- @dataSize@ /must/ be less than or equal to 65536 bytes. For larger+-- updates, applications /can/ use buffer to buffer+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers copies>.+--+-- Note+--+-- Buffer updates performed with 'cmdUpdateBuffer' first copy the data into+-- command buffer memory when the command is recorded (which requires+-- additional storage and may incur an additional allocation), and then+-- copy the data from the command buffer into @dstBuffer@ when the command+-- is executed on a device.+--+-- The additional cost of this functionality compared to+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers buffer to buffer copies>+-- means it is only recommended for very small amounts of data, and is why+-- it is limited to only 65536 bytes.+--+-- Applications /can/ work around this by issuing multiple+-- 'cmdUpdateBuffer' commands to different ranges of the same buffer, but+-- it is strongly recommended that they /should/ not.+--+-- The source data is copied from the user pointer to the command buffer+-- when the command is called.+--+-- 'cmdUpdateBuffer' is only allowed outside of a render pass. This command+-- is treated as “transfer” operation, for the purposes of synchronization+-- barriers. The+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- /must/ be specified in @usage@ of+-- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be+-- compatible with 'cmdUpdateBuffer'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdUpdateBuffer-dstOffset-00032# @dstOffset@ /must/ be less+--     than the size of @dstBuffer@+--+-- -   #VUID-vkCmdUpdateBuffer-dataSize-00033# @dataSize@ /must/ be less+--     than or equal to the size of @dstBuffer@ minus @dstOffset@+--+-- -   #VUID-vkCmdUpdateBuffer-dstBuffer-00034# @dstBuffer@ /must/ have+--     been created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdUpdateBuffer-dstBuffer-00035# If @dstBuffer@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdUpdateBuffer-dstOffset-00036# @dstOffset@ /must/ be a+--     multiple of @4@+--+-- -   #VUID-vkCmdUpdateBuffer-dataSize-00037# @dataSize@ /must/ be less+--     than or equal to @65536@+--+-- -   #VUID-vkCmdUpdateBuffer-dataSize-00038# @dataSize@ /must/ be a+--     multiple of @4@+--+-- -   #VUID-vkCmdUpdateBuffer-commandBuffer-01813# If @commandBuffer@ is+--     an unprotected command buffer, then @dstBuffer@ /must/ not be a+--     protected buffer+--+-- -   #VUID-vkCmdUpdateBuffer-commandBuffer-01814# If @commandBuffer@ is a+--     protected command buffer, then @dstBuffer@ /must/ not be an+--     unprotected buffer+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdUpdateBuffer-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdUpdateBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdUpdateBuffer-pData-parameter# @pData@ /must/ be a valid+--     pointer to an array of @dataSize@ bytes+--+-- -   #VUID-vkCmdUpdateBuffer-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-vkCmdUpdateBuffer-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics, or compute+--     operations+--+-- -   #VUID-vkCmdUpdateBuffer-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdUpdateBuffer-dataSize-arraylength# @dataSize@ /must/ be+--     greater than @0@+--+-- -   #VUID-vkCmdUpdateBuffer-commonparent# Both of @commandBuffer@, and+--     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdUpdateBuffer :: forall io+                 . (MonadIO io)+                => -- | @commandBuffer@ is the command buffer into which the command will be+                   -- recorded.+                   CommandBuffer+                -> -- | @dstBuffer@ is a handle to the buffer to be updated.+                   ("dstBuffer" ::: Buffer)+                -> -- | @dstOffset@ is the byte offset into the buffer to start updating, and+                   -- /must/ be a multiple of 4.+                   ("dstOffset" ::: DeviceSize)+                -> -- | @dataSize@ is the number of bytes to update, and /must/ be a multiple of+                   -- 4.+                   ("dataSize" ::: DeviceSize)+                -> -- | @pData@ is a pointer to the source data for the buffer update, and+                   -- /must/ be at least @dataSize@ bytes in size.+                   ("data" ::: Ptr ())+                -> io ()+cmdUpdateBuffer commandBuffer dstBuffer dstOffset dataSize data' = liftIO $ do+  let vkCmdUpdateBufferPtr = pVkCmdUpdateBuffer (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdUpdateBufferPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdUpdateBuffer is null" Nothing Nothing+  let vkCmdUpdateBuffer' = mkVkCmdUpdateBuffer vkCmdUpdateBufferPtr+  traceAroundEvent "vkCmdUpdateBuffer" (vkCmdUpdateBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (dataSize) (data'))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdFillBuffer+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()++-- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value+--+-- = Description+--+-- 'cmdFillBuffer' is treated as “transfer” operation for the purposes of+-- synchronization barriers. The+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- /must/ be specified in @usage@ of+-- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be+-- compatible with 'cmdFillBuffer'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdFillBuffer-dstOffset-00024# @dstOffset@ /must/ be less+--     than the size of @dstBuffer@+--+-- -   #VUID-vkCmdFillBuffer-dstOffset-00025# @dstOffset@ /must/ be a+--     multiple of @4@+--+-- -   #VUID-vkCmdFillBuffer-size-00026# If @size@ is not equal to+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater+--     than @0@+--+-- -   #VUID-vkCmdFillBuffer-size-00027# If @size@ is not equal to+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less than+--     or equal to the size of @dstBuffer@ minus @dstOffset@+--+-- -   #VUID-vkCmdFillBuffer-size-00028# If @size@ is not equal to+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a multiple+--     of @4@+--+-- -   #VUID-vkCmdFillBuffer-dstBuffer-00029# @dstBuffer@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdFillBuffer-dstBuffer-00031# If @dstBuffer@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdFillBuffer-commandBuffer-01811# If @commandBuffer@ is an+--     unprotected command buffer, then @dstBuffer@ /must/ not be a+--     protected buffer+--+-- -   #VUID-vkCmdFillBuffer-commandBuffer-01812# If @commandBuffer@ is a+--     protected command buffer, then @dstBuffer@ /must/ not be an+--     unprotected buffer+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdFillBuffer-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdFillBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdFillBuffer-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-vkCmdFillBuffer-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics or compute+--     operations+--+-- -   #VUID-vkCmdFillBuffer-renderpass# This command /must/ only be called+--     outside of a render pass instance+--+-- -   #VUID-vkCmdFillBuffer-commonparent# Both of @commandBuffer@, and+--     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdFillBuffer :: forall io+               . (MonadIO io)+              => -- | @commandBuffer@ is the command buffer into which the command will be+                 -- recorded.+                 CommandBuffer+              -> -- | @dstBuffer@ is the buffer to be filled.+                 ("dstBuffer" ::: Buffer)+              -> -- | @dstOffset@ is the byte offset into the buffer at which to start+                 -- filling, and /must/ be a multiple of 4.+                 ("dstOffset" ::: DeviceSize)+              -> -- | @size@ is the number of bytes to fill, and /must/ be either a multiple+                 -- of 4, or 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to fill the range from+                 -- @offset@ to the end of the buffer. If+                 -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE' is used and the remaining size+                 -- of the buffer is not a multiple of 4, then the nearest smaller multiple+                 -- is used.+                 DeviceSize+              -> -- | @data@ is the 4-byte word written repeatedly to the buffer to fill+                 -- @size@ bytes of data. The data word is written to memory according to+                 -- the host endianness.+                 ("data" ::: Word32)+              -> io ()+cmdFillBuffer commandBuffer dstBuffer dstOffset size data' = liftIO $ do+  let vkCmdFillBufferPtr = pVkCmdFillBuffer (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdFillBufferPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdFillBuffer is null" Nothing Nothing+  let vkCmdFillBuffer' = mkVkCmdFillBuffer vkCmdFillBufferPtr+  traceAroundEvent "vkCmdFillBuffer" (vkCmdFillBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (size) (data'))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdClearColorImage+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()++-- | vkCmdClearColorImage - Clear regions of a color image+--+-- = Description+--+-- Each specified range in @pRanges@ is cleared to the value specified by+-- @pColor@.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdClearColorImage-image-01993# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @image@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'+--+-- -   #VUID-vkCmdClearColorImage-image-00002# @image@ /must/ have been+--     created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdClearColorImage-image-01545# @image@ /must/ not use any+--     of the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>+--+-- -   #VUID-vkCmdClearColorImage-image-00003# If @image@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdClearColorImage-imageLayout-00004# @imageLayout@ /must/+--     specify the layout of the image subresource ranges of @image@+--     specified in @pRanges@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdClearColorImage-imageLayout-01394# @imageLayout@ /must/+--     be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- -   #VUID-vkCmdClearColorImage-aspectMask-02498# The+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@+--     members of the elements of the @pRanges@ array /must/ each only+--     include+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- -   #VUID-vkCmdClearColorImage-baseMipLevel-01470# The+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@+--     members of the elements of the @pRanges@ array /must/ each be less+--     than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- -   #VUID-vkCmdClearColorImage-pRanges-01692# For each+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of+--     @pRanges@, if the @levelCount@ member is not+--     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then+--     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@+--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was+--     created+--+-- -   #VUID-vkCmdClearColorImage-baseArrayLayer-01472# The+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@+--     members of the elements of the @pRanges@ array /must/ each be less+--     than the @arrayLayers@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- -   #VUID-vkCmdClearColorImage-pRanges-01693# For each+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of+--     @pRanges@, if the @layerCount@ member is not+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then+--     @baseArrayLayer@ + @layerCount@ /must/ be less than the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @image@ was created+--+-- -   #VUID-vkCmdClearColorImage-image-00007# @image@ /must/ not have a+--     compressed or depth\/stencil format+--+-- -   #VUID-vkCmdClearColorImage-pColor-04961# @pColor@ /must/ be a valid+--     pointer to a 'ClearColorValue' union+--+-- -   #VUID-vkCmdClearColorImage-commandBuffer-01805# If @commandBuffer@+--     is an unprotected command buffer, then @image@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdClearColorImage-commandBuffer-01806# If @commandBuffer@+--     is a protected command buffer, then @image@ /must/ not be an+--     unprotected image+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdClearColorImage-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdClearColorImage-image-parameter# @image@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdClearColorImage-imageLayout-parameter# @imageLayout@+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+--     value+--+-- -   #VUID-vkCmdClearColorImage-pRanges-parameter# @pRanges@ /must/ be a+--     valid pointer to an array of @rangeCount@ valid+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures+--+-- -   #VUID-vkCmdClearColorImage-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-vkCmdClearColorImage-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdClearColorImage-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdClearColorImage-rangeCount-arraylength# @rangeCount@+--     /must/ be greater than @0@+--+-- -   #VUID-vkCmdClearColorImage-commonparent# Both of @commandBuffer@,+--     and @image@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'ClearColorValue', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Handles.Image',+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange'+cmdClearColorImage :: forall io+                    . (MonadIO io)+                   => -- | @commandBuffer@ is the command buffer into which the command will be+                      -- recorded.+                      CommandBuffer+                   -> -- | @image@ is the image to be cleared.+                      Image+                   -> -- | @imageLayout@ specifies the current layout of the image subresource+                      -- ranges to be cleared, and /must/ be+                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or+                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.+                      ImageLayout+                   -> -- | @pColor@ is a pointer to a 'ClearColorValue' structure containing the+                      -- values that the image subresource ranges will be cleared to (see+                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>+                      -- below).+                      ClearColorValue+                   -> -- | @pRanges@ is a pointer to an array of+                      -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a+                      -- range of mipmap levels, array layers, and aspects to be cleared, as+                      -- described in+                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.+                      ("ranges" ::: Vector ImageSubresourceRange)+                   -> io ()+cmdClearColorImage commandBuffer image imageLayout color ranges = liftIO . evalContT $ do+  let vkCmdClearColorImagePtr = pVkCmdClearColorImage (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdClearColorImagePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearColorImage is null" Nothing Nothing+  let vkCmdClearColorImage' = mkVkCmdClearColorImage vkCmdClearColorImagePtr+  pColor <- ContT $ withCStruct (color)+  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)+  lift $ traceAroundEvent "vkCmdClearColorImage" (vkCmdClearColorImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pColor ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdClearDepthStencilImage+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()++-- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil+-- image+--+-- == Valid Usage+--+-- -   #VUID-vkCmdClearDepthStencilImage-image-01994# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @image@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'+--+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02658# If the @aspect@+--     member of any element of @pRanges@ includes+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+--     and @image@ was created with+--     <VkImageStencilUsageCreateInfo.html separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     /must/ have been included in the+--     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+--     used to create @image@+--+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02659# If the @aspect@+--     member of any element of @pRanges@ includes+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+--     and @image@ was not created with+--     <VkImageStencilUsageCreateInfo.html separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     /must/ have been included in the+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create+--     @image@+--+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02660# If the @aspect@+--     member of any element of @pRanges@ includes+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     /must/ have been included in the+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create+--     @image@+--+-- -   #VUID-vkCmdClearDepthStencilImage-image-00010# If @image@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00011# @imageLayout@+--     /must/ specify the layout of the image subresource ranges of @image@+--     specified in @pRanges@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00012# @imageLayout@+--     /must/ be either of+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- -   #VUID-vkCmdClearDepthStencilImage-aspectMask-02824# The+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member+--     of each element of the @pRanges@ array /must/ not include bits other+--     than+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- -   #VUID-vkCmdClearDepthStencilImage-image-02825# If the @image@’s+--     format does not have a stencil component, then the+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member+--     of each element of the @pRanges@ array /must/ not include the+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--     bit+--+-- -   #VUID-vkCmdClearDepthStencilImage-image-02826# If the @image@’s+--     format does not have a depth component, then the+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member+--     of each element of the @pRanges@ array /must/ not include the+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' bit+--+-- -   #VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474# The+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@+--     members of the elements of the @pRanges@ array /must/ each be less+--     than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-01694# For each+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of+--     @pRanges@, if the @levelCount@ member is not+--     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then+--     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@+--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was+--     created+--+-- -   #VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476# The+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@+--     members of the elements of the @pRanges@ array /must/ each be less+--     than the @arrayLayers@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created+--+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-01695# For each+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of+--     @pRanges@, if the @layerCount@ member is not+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then+--     @baseArrayLayer@ + @layerCount@ /must/ be less than the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @image@ was created+--+-- -   #VUID-vkCmdClearDepthStencilImage-image-00014# @image@ /must/ have a+--     depth\/stencil format+--+-- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01807# If+--     @commandBuffer@ is an unprotected command buffer, then @image@+--     /must/ not be a protected image+--+-- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01808# If+--     @commandBuffer@ is a protected command buffer, then @image@ /must/+--     not be an unprotected image+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdClearDepthStencilImage-image-parameter# @image@ /must/ be+--     a valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-parameter#+--     @imageLayout@ /must/ be a valid+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- -   #VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter#+--     @pDepthStencil@ /must/ be a valid pointer to a valid+--     'ClearDepthStencilValue' structure+--+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-parameter# @pRanges@+--     /must/ be a valid pointer to an array of @rangeCount@ valid+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures+--+-- -   #VUID-vkCmdClearDepthStencilImage-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-vkCmdClearDepthStencilImage-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdClearDepthStencilImage-renderpass# This command /must/+--     only be called outside of a render pass instance+--+-- -   #VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength#+--     @rangeCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCmdClearDepthStencilImage-commonparent# Both of+--     @commandBuffer@, and @image@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'ClearDepthStencilValue', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Handles.Image',+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange'+cmdClearDepthStencilImage :: forall io+                           . (MonadIO io)+                          => -- | @commandBuffer@ is the command buffer into which the command will be+                             -- recorded.+                             CommandBuffer+                          -> -- | @image@ is the image to be cleared.+                             Image+                          -> -- | @imageLayout@ specifies the current layout of the image subresource+                             -- ranges to be cleared, and /must/ be+                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or+                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.+                             ImageLayout+                          -> -- | @pDepthStencil@ is a pointer to a 'ClearDepthStencilValue' structure+                             -- containing the values that the depth and stencil image subresource+                             -- ranges will be cleared to (see+                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>+                             -- below).+                             ClearDepthStencilValue+                          -> -- | @pRanges@ is a pointer to an array of+                             -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a+                             -- range of mipmap levels, array layers, and aspects to be cleared, as+                             -- described in+                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.+                             ("ranges" ::: Vector ImageSubresourceRange)+                          -> io ()+cmdClearDepthStencilImage commandBuffer image imageLayout depthStencil ranges = liftIO . evalContT $ do+  let vkCmdClearDepthStencilImagePtr = pVkCmdClearDepthStencilImage (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdClearDepthStencilImagePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearDepthStencilImage is null" Nothing Nothing+  let vkCmdClearDepthStencilImage' = mkVkCmdClearDepthStencilImage vkCmdClearDepthStencilImagePtr+  pDepthStencil <- ContT $ withCStruct (depthStencil)+  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)+  lift $ traceAroundEvent "vkCmdClearDepthStencilImage" (vkCmdClearDepthStencilImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pDepthStencil ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdClearAttachments+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()++-- | vkCmdClearAttachments - Clear regions within bound framebuffer+-- attachments+--+-- = Description+--+-- If the render pass has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>,+-- clears follow the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops operations of fragment density maps>+-- as if each clear region was a primitive which generates fragments. The+-- clear color is applied to all pixels inside each fragment’s area+-- regardless if the pixels lie outside of the clear region. Clears /may/+-- have a different set of supported fragment areas than draws.+--+-- Unlike other+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,+-- 'cmdClearAttachments' executes as a drawing command, rather than a+-- transfer command, with writes performed by it executing in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order rasterization order>.+-- Clears to color attachments are executed as color attachment writes, by+-- the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'+-- stage. Clears to depth\/stencil attachments are executed as+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth writes>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil writes>+-- by the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'+-- and+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'+-- stages.+--+-- 'cmdClearAttachments' is not affected by the bound pipeline state.+--+-- Note+--+-- It’s generally advised that attachments are cleared by using the+-- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' load+-- operation at the start of rendering, which will be more efficient on+-- some implementations.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdClearAttachments-aspectMask-02501# If the @aspectMask@+--     member of any element of @pAttachments@ contains+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+--     then the @colorAttachment@ member of that element /must/ either+--     refer to a color attachment which is+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ be a valid+--     color attachment+--+-- -   #VUID-vkCmdClearAttachments-aspectMask-02502# If the @aspectMask@+--     member of any element of @pAttachments@ contains+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',+--     then the current subpass\' depth\/stencil attachment /must/ either+--     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a+--     depth component+--+-- -   #VUID-vkCmdClearAttachments-aspectMask-02503# If the @aspectMask@+--     member of any element of @pAttachments@ contains+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+--     then the current subpass\' depth\/stencil attachment /must/ either+--     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a+--     stencil component+--+-- -   #VUID-vkCmdClearAttachments-rect-02682# The @rect@ member of each+--     element of @pRects@ /must/ have an @extent.width@ greater than @0@+--+-- -   #VUID-vkCmdClearAttachments-rect-02683# The @rect@ member of each+--     element of @pRects@ /must/ have an @extent.height@ greater than @0@+--+-- -   #VUID-vkCmdClearAttachments-pRects-00016# The rectangular region+--     specified by each element of @pRects@ /must/ be contained within the+--     render area of the current render pass instance+--+-- -   #VUID-vkCmdClearAttachments-pRects-00017# The layers specified by+--     each element of @pRects@ /must/ be contained within every attachment+--     that @pAttachments@ refers to+--+-- -   #VUID-vkCmdClearAttachments-layerCount-01934# The @layerCount@+--     member of each element of @pRects@ /must/ not be @0@+--+-- -   #VUID-vkCmdClearAttachments-commandBuffer-02504# If @commandBuffer@+--     is an unprotected command buffer, then each attachment to be cleared+--     /must/ not be a protected image+--+-- -   #VUID-vkCmdClearAttachments-commandBuffer-02505# If @commandBuffer@+--     is a protected command buffer, then each attachment to be cleared+--     /must/ not be an unprotected image+--+-- -   #VUID-vkCmdClearAttachments-baseArrayLayer-00018# If the render pass+--     instance this is recorded in uses multiview, then @baseArrayLayer@+--     /must/ be zero and @layerCount@ /must/ be one+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdClearAttachments-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdClearAttachments-pAttachments-parameter# @pAttachments@+--     /must/ be a valid pointer to an array of @attachmentCount@ valid+--     'ClearAttachment' structures+--+-- -   #VUID-vkCmdClearAttachments-pRects-parameter# @pRects@ /must/ be a+--     valid pointer to an array of @rectCount@ 'ClearRect' structures+--+-- -   #VUID-vkCmdClearAttachments-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-vkCmdClearAttachments-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdClearAttachments-renderpass# This command /must/ only be+--     called inside of a render pass instance+--+-- -   #VUID-vkCmdClearAttachments-attachmentCount-arraylength#+--     @attachmentCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCmdClearAttachments-rectCount-arraylength# @rectCount@+--     /must/ be greater than @0@+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'ClearAttachment', 'ClearRect', 'Vulkan.Core10.Handles.CommandBuffer'+cmdClearAttachments :: forall io+                     . (MonadIO io)+                    => -- | @commandBuffer@ is the command buffer into which the command will be+                       -- recorded.+                       CommandBuffer+                    -> -- | @pAttachments@ is a pointer to an array of 'ClearAttachment' structures+                       -- defining the attachments to clear and the clear values to use. If any+                       -- attachment index to be cleared is not backed by an image view, then the+                       -- clear has no effect.+                       ("attachments" ::: Vector ClearAttachment)+                    -> -- | @pRects@ is a pointer to an array of 'ClearRect' structures defining+                       -- regions within each selected attachment to clear.+                       ("rects" ::: Vector ClearRect)+                    -> io ()+cmdClearAttachments commandBuffer attachments rects = liftIO . evalContT $ do+  let vkCmdClearAttachmentsPtr = pVkCmdClearAttachments (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdClearAttachmentsPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearAttachments is null" Nothing Nothing+  let vkCmdClearAttachments' = mkVkCmdClearAttachments vkCmdClearAttachmentsPtr+  pPAttachments <- ContT $ allocaBytes @ClearAttachment ((Data.Vector.length (attachments)) * 24)+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments `plusPtr` (24 * (i)) :: Ptr ClearAttachment) (e) . ($ ())) (attachments)+  pPRects <- ContT $ allocaBytes @ClearRect ((Data.Vector.length (rects)) * 24)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRects `plusPtr` (24 * (i)) :: Ptr ClearRect) (e)) (rects)+  lift $ traceAroundEvent "vkCmdClearAttachments" (vkCmdClearAttachments' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32)) (pPAttachments) ((fromIntegral (Data.Vector.length $ (rects)) :: Word32)) (pPRects))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdResolveImage+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()++-- | vkCmdResolveImage - Resolve regions of an image+--+-- = Description+--+-- During the resolve the samples corresponding to each pixel location in+-- the source are converted to a single sample before being written to the+-- destination. If the source formats are floating-point or normalized+-- types, the sample values for each pixel are resolved in an+-- implementation-dependent manner. If the source formats are integer+-- types, a single sample’s value is selected for each pixel.+--+-- @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets+-- in texels of the sub-regions of the source and destination image data.+-- @extent@ is the size in texels of the source image to resolve in+-- @width@, @height@ and @depth@. Each element of @pRegions@ /must/ be a+-- region that is contained within its corresponding image.+--+-- Resolves are done layer by layer starting with @baseArrayLayer@ member+-- of @srcSubresource@ for the source and @dstSubresource@ for the+-- destination. @layerCount@ layers are resolved to the destination image.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdResolveImage-commandBuffer-01837# If @commandBuffer@ is+--     an unprotected command buffer, then @srcImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdResolveImage-commandBuffer-01838# If @commandBuffer@ is+--     an unprotected command buffer, then @dstImage@ /must/ not be a+--     protected image+--+-- -   #VUID-vkCmdResolveImage-commandBuffer-01839# If @commandBuffer@ is a+--     protected command buffer, then @dstImage@ /must/ not be an+--     unprotected image+--+-- -   #VUID-vkCmdResolveImage-pRegions-00255# The union of all source+--     regions, and the union of all destination regions, specified by the+--     elements of @pRegions@, /must/ not overlap in memory+--+-- -   #VUID-vkCmdResolveImage-srcImage-00256# If @srcImage@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdResolveImage-srcImage-00257# @srcImage@ /must/ have a+--     sample count equal to any valid sample count value other than+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-vkCmdResolveImage-dstImage-00258# If @dstImage@ is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdResolveImage-dstImage-00259# @dstImage@ /must/ have a+--     sample count equal to+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-vkCmdResolveImage-srcImageLayout-00260# @srcImageLayout@+--     /must/ specify the layout of the image subresources of @srcImage@+--     specified in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdResolveImage-srcImageLayout-01400# @srcImageLayout@+--     /must/ be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- -   #VUID-vkCmdResolveImage-dstImageLayout-00262# @dstImageLayout@+--     /must/ specify the layout of the image subresources of @dstImage@+--     specified in @pRegions@ at the time this command is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- -   #VUID-vkCmdResolveImage-dstImageLayout-01401# @dstImageLayout@+--     /must/ be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- -   #VUID-vkCmdResolveImage-dstImage-02003# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+--     of @dstImage@ /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--+-- -   #VUID-vkCmdResolveImage-srcImage-01386# @srcImage@ and @dstImage@+--     /must/ have been created with the same image format+--+-- -   #VUID-vkCmdResolveImage-srcSubresource-01709# The+--     @srcSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created+--+-- -   #VUID-vkCmdResolveImage-dstSubresource-01710# The+--     @dstSubresource.mipLevel@ member of each element of @pRegions@+--     /must/ be less than the @mipLevels@ specified in+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created+--+-- -   #VUID-vkCmdResolveImage-srcSubresource-01711# The+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @srcImage@ was created+--+-- -   #VUID-vkCmdResolveImage-dstSubresource-01712# The+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+--     each element of @pRegions@ /must/ be less than or equal to the+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'+--     when @dstImage@ was created+--+-- -   #VUID-vkCmdResolveImage-dstImage-02546# @dstImage@ and @srcImage@+--     /must/ not have been created with @flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   #VUID-vkCmdResolveImage-srcImage-04446# If either @srcImage@ or+--     @dstImage@ are of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and+--     @srcSubresource.layerCount@ /must/ be @1@+--+-- -   #VUID-vkCmdResolveImage-srcImage-04447# If either @srcImage@ or+--     @dstImage@ are of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and+--     @dstSubresource.layerCount@ /must/ be @1@+--+-- -   #VUID-vkCmdResolveImage-srcOffset-00269# For each element of+--     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the width of the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdResolveImage-srcOffset-00270# For each element of+--     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the height of the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdResolveImage-srcImage-00271# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@+--     /must/ be @1@+--+-- -   #VUID-vkCmdResolveImage-srcOffset-00272# For each element of+--     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the depth of the specified @srcSubresource@ of @srcImage@+--+-- -   #VUID-vkCmdResolveImage-srcImage-00273# If @srcImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/+--     be @1@+--+-- -   #VUID-vkCmdResolveImage-dstOffset-00274# For each element of+--     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the width of the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdResolveImage-dstOffset-00275# For each element of+--     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the height of the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdResolveImage-dstImage-00276# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element+--     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@+--     /must/ be @1@+--+-- -   #VUID-vkCmdResolveImage-dstOffset-00277# For each element of+--     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)+--     /must/ both be greater than or equal to @0@ and less than or equal+--     to the depth of the specified @dstSubresource@ of @dstImage@+--+-- -   #VUID-vkCmdResolveImage-dstImage-00278# If @dstImage@ is of type+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element+--     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/+--     be @1@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdResolveImage-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdResolveImage-srcImage-parameter# @srcImage@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdResolveImage-srcImageLayout-parameter# @srcImageLayout@+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+--     value+--+-- -   #VUID-vkCmdResolveImage-dstImage-parameter# @dstImage@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Image' handle+--+-- -   #VUID-vkCmdResolveImage-dstImageLayout-parameter# @dstImageLayout@+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'+--     value+--+-- -   #VUID-vkCmdResolveImage-pRegions-parameter# @pRegions@ /must/ be a+--     valid pointer to an array of @regionCount@ valid 'ImageResolve'+--     structures+--+-- -   #VUID-vkCmdResolveImage-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-vkCmdResolveImage-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdResolveImage-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdResolveImage-regionCount-arraylength# @regionCount@+--     /must/ be greater than @0@+--+-- -   #VUID-vkCmdResolveImage-commonparent# Each of @commandBuffer@,+--     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageResolve'+cmdResolveImage :: forall io+                 . (MonadIO io)+                => -- | @commandBuffer@ is the command buffer into which the command will be+                   -- recorded.+                   CommandBuffer+                -> -- | @srcImage@ is the source image.+                   ("srcImage" ::: Image)+                -> -- | @srcImageLayout@ is the layout of the source image subresources for the+                   -- resolve.+                   ("srcImageLayout" ::: ImageLayout)+                -> -- | @dstImage@ is the destination image.+                   ("dstImage" ::: Image)+                -> -- | @dstImageLayout@ is the layout of the destination image subresources for+                   -- the resolve.+                   ("dstImageLayout" ::: ImageLayout)+                -> -- | @pRegions@ is a pointer to an array of 'ImageResolve' structures+                   -- specifying the regions to resolve.+                   ("regions" ::: Vector ImageResolve)+                -> io ()+cmdResolveImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do+  let vkCmdResolveImagePtr = pVkCmdResolveImage (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdResolveImagePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResolveImage is null" Nothing Nothing+  let vkCmdResolveImage' = mkVkCmdResolveImage vkCmdResolveImagePtr+  pPRegions <- ContT $ allocaBytes @ImageResolve ((Data.Vector.length (regions)) * 68)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageResolve) (e)) (regions)+  lift $ traceAroundEvent "vkCmdResolveImage" (vkCmdResolveImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetEvent+  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()++-- | vkCmdSetEvent - Set an event object to signaled state+--+-- = Description+--+-- 'cmdSetEvent' behaves identically to+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR', except that+-- it does not define an access scope, and /must/ only be used with+-- 'cmdWaitEvents', not+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdSetEvent-stageMask-04090# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04091# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04092# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04093# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04094# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04095# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04096# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04097# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   #VUID-vkCmdSetEvent-stageMask-04098# Any pipeline stage included in+--     @stageMask@ /must/ be supported by the capabilities of the queue+--     family specified by the @queueFamilyIndex@ member of the+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was+--     used to create the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- -   #VUID-vkCmdSetEvent-stageMask-03937# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>+--     feature is not enabled, @stageMask@ /must/ not be @0@+--+-- -   #VUID-vkCmdSetEvent-stageMask-01149# @stageMask@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'+--+-- -   #VUID-vkCmdSetEvent-commandBuffer-01152# @commandBuffer@’s current+--     device mask /must/ include exactly one physical device+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetEvent-commandBuffer-parameter# @commandBuffer@ /must/+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetEvent-event-parameter# @event@ /must/ be a valid+--     'Vulkan.Core10.Handles.Event' handle+--+-- -   #VUID-vkCmdSetEvent-stageMask-parameter# @stageMask@ /must/ be a+--     valid combination of+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+--     values+--+-- -   #VUID-vkCmdSetEvent-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-vkCmdSetEvent-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdSetEvent-renderpass# This command /must/ only be called+--     outside of a render pass instance+--+-- -   #VUID-vkCmdSetEvent-commonparent# Both of @commandBuffer@, and+--     @event@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdSetEvent :: forall io+             . (MonadIO io)+            => -- | @commandBuffer@ is the command buffer into which the command is+               -- recorded.+               CommandBuffer+            -> -- | @event@ is the event that will be signaled.+               Event+            -> -- | @stageMask@ specifies the+               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>+               -- used to determine the first+               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.+               ("stageMask" ::: PipelineStageFlags)+            -> io ()+cmdSetEvent commandBuffer event stageMask = liftIO $ do+  let vkCmdSetEventPtr = pVkCmdSetEvent (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetEventPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetEvent is null" Nothing Nothing+  let vkCmdSetEvent' = mkVkCmdSetEvent vkCmdSetEventPtr+  traceAroundEvent "vkCmdSetEvent" (vkCmdSetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdResetEvent+  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()++-- | vkCmdResetEvent - Reset an event object to non-signaled state+--+-- = Description+--+-- 'cmdResetEvent' behaves identically to+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdResetEvent2KHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdResetEvent-stageMask-04090# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04091# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04092# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04093# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04094# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04095# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04096# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04097# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+--     feature is not enabled, @stageMask@ /must/ not contain+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   #VUID-vkCmdResetEvent-stageMask-04098# Any pipeline stage included+--     in @stageMask@ /must/ be supported by the capabilities of the queue+--     family specified by the @queueFamilyIndex@ member of the+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was+--     used to create the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- -   #VUID-vkCmdResetEvent-stageMask-03937# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>+--     feature is not enabled, @stageMask@ /must/ not be @0@+--+-- -   #VUID-vkCmdResetEvent-stageMask-01153# @stageMask@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'+--+-- -   #VUID-vkCmdResetEvent-event-03834# There /must/ be an execution+--     dependency between 'cmdResetEvent' and the execution of any+--     'cmdWaitEvents' that includes @event@ in its @pEvents@ parameter+--+-- -   #VUID-vkCmdResetEvent-event-03835# There /must/ be an execution+--     dependency between 'cmdResetEvent' and the execution of any+--     'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR' that+--     includes @event@ in its @pEvents@ parameter+--+-- -   #VUID-vkCmdResetEvent-commandBuffer-01157# @commandBuffer@’s current+--     device mask /must/ include exactly one physical device+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdResetEvent-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdResetEvent-event-parameter# @event@ /must/ be a valid+--     'Vulkan.Core10.Handles.Event' handle+--+-- -   #VUID-vkCmdResetEvent-stageMask-parameter# @stageMask@ /must/ be a+--     valid combination of+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+--     values+--+-- -   #VUID-vkCmdResetEvent-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-vkCmdResetEvent-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdResetEvent-renderpass# This command /must/ only be called+--     outside of a render pass instance+--+-- -   #VUID-vkCmdResetEvent-commonparent# Both of @commandBuffer@, and+--     @event@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdResetEvent :: forall io+               . (MonadIO io)+              => -- | @commandBuffer@ is the command buffer into which the command is+                 -- recorded.+                 CommandBuffer+              -> -- | @event@ is the event that will be unsignaled.+                 Event+              -> -- | @stageMask@ is a bitmask of+                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                 -- specifying the+                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>+                 -- used to determine when the @event@ is unsignaled.+                 ("stageMask" ::: PipelineStageFlags)+              -> io ()+cmdResetEvent commandBuffer event stageMask = liftIO $ do+  let vkCmdResetEventPtr = pVkCmdResetEvent (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdResetEventPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetEvent is null" Nothing Nothing+  let vkCmdResetEvent' = mkVkCmdResetEvent vkCmdResetEventPtr+  traceAroundEvent "vkCmdResetEvent" (vkCmdResetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdWaitEventsUnsafe+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()++foreign import ccall+  "dynamic" mkVkCmdWaitEventsSafe+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()++-- | cmdWaitEvents with selectable safeness+cmdWaitEventsSafeOrUnsafe :: forall io+                           . (MonadIO io)+                          => (FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ())+                          -> -- | @commandBuffer@ is the command buffer into which the command is+                             -- recorded.+                             CommandBuffer+                          -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.+                             ("events" ::: Vector Event)+                          -> -- | @srcStageMask@ is a bitmask of+                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                             -- specifying the+                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.+                             ("srcStageMask" ::: PipelineStageFlags)+                          -> -- | @dstStageMask@ is a bitmask of+                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                             -- specifying the+                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.+                             ("dstStageMask" ::: PipelineStageFlags)+                          -> -- | @pMemoryBarriers@ is a pointer to an array of+                             -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.+                             ("memoryBarriers" ::: Vector MemoryBarrier)+                          -> -- | @pBufferMemoryBarriers@ is a pointer to an array of+                             -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.+                             ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)+                          -> -- | @pImageMemoryBarriers@ is a pointer to an array of+                             -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.+                             ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))+                          -> io ()+cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEvents commandBuffer events srcStageMask dstStageMask memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do+  let vkCmdWaitEventsPtr = pVkCmdWaitEvents (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdWaitEventsPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWaitEvents is null" Nothing Nothing+  let vkCmdWaitEvents' = mkVkCmdWaitEvents vkCmdWaitEventsPtr+  pPEvents <- ContT $ allocaBytes @Event ((Data.Vector.length (events)) * 8)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)+  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)+  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)+  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)+  lift $ traceAroundEvent "vkCmdWaitEvents" (vkCmdWaitEvents' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (events)) :: Word32)) (pPEvents) (srcStageMask) (dstStageMask) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))+  pure $ ()++-- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory+--+-- = Description+--+-- 'cmdWaitEvents' is largely similar to+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR', but /can/+-- only wait on signal operations defined by 'cmdSetEvent'. As+-- 'cmdSetEvent' does not define any access scopes, 'cmdWaitEvents' defines+-- the first access scope for each event signal operation in addition to+-- its own access scopes.+--+-- Note+--+-- Since 'cmdSetEvent' does not have any dependency information beyond a+-- stage mask, implementations do not have the same opportunity to perform+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>+-- in advance as they do with+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR' and+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR'.+--+-- When 'cmdWaitEvents' is submitted to a queue, it defines a memory+-- dependency between prior event signal operations on the same queue or+-- the host, and subsequent commands. 'cmdWaitEvents' /must/ not be used to+-- wait on event signal operations occurring on other queues.+--+-- The first synchronization scope only includes event signal operations+-- that operate on members of @pEvents@, and the operations that+-- happened-before the event signal operations. Event signal operations+-- performed by 'cmdSetEvent' that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- are included in the first synchronization scope, if the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>+-- pipeline stage in their @stageMask@ parameter is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>+-- than or equal to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>+-- pipeline stage in @srcStageMask@. Event signal operations performed by+-- 'Vulkan.Core10.Event.setEvent' are only included in the first+-- synchronization scope if+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' is+-- included in @srcStageMask@.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- The second synchronization scope is limited to operations on the+-- pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@.+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to accesses in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@. Within that, the first access scope only+-- includes the first access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the first access scope+-- includes no accesses.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to accesses in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@. Within that, the second access scope only+-- includes the second access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the second access scope+-- includes no accesses.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04090# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04091# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04092# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04093# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04094# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04095# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04096# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04097# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04098# Any pipeline stage+--     included in @srcStageMask@ /must/ be supported by the capabilities+--     of the queue family specified by the @queueFamilyIndex@ member of+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-03937# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>+--     feature is not enabled, @srcStageMask@ /must/ not be @0@+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04090# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04091# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04092# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04093# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04094# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04095# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04096# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04097# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04098# Any pipeline stage+--     included in @dstStageMask@ /must/ be supported by the capabilities+--     of the queue family specified by the @queueFamilyIndex@ member of+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-03937# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>+--     feature is not enabled, @dstStageMask@ /must/ not be @0@+--+-- -   #VUID-vkCmdWaitEvents-srcAccessMask-02815# The @srcAccessMask@+--     member of each element of @pMemoryBarriers@ /must/ only include+--     access flags that are supported by one or more of the pipeline+--     stages in @srcStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdWaitEvents-dstAccessMask-02816# The @dstAccessMask@+--     member of each element of @pMemoryBarriers@ /must/ only include+--     access flags that are supported by one or more of the pipeline+--     stages in @dstStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817# For any element+--     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @srcQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @srcAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @srcStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818# For any element+--     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @dstQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @dstAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @dstStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819# For any element of+--     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @srcQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @srcAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @srcStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820# For any element of+--     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @dstQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @dstAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @dstStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-01158# @srcStageMask@ /must/ be+--     the bitwise OR of the @stageMask@ parameter used in previous calls+--     to 'cmdSetEvent' with any of the elements of @pEvents@ and+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'+--     if any of the elements of @pEvents@ was set using+--     'Vulkan.Core10.Event.setEvent'+--+-- -   #VUID-vkCmdWaitEvents-pEvents-01163# If @pEvents@ includes one or+--     more events that will be signaled by 'Vulkan.Core10.Event.setEvent'+--     after @commandBuffer@ has been submitted to a queue, then+--     'cmdWaitEvents' /must/ not be called inside a render pass instance+--+-- -   #VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803# The+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any+--     element of @pBufferMemoryBarriers@ or @pImageMemoryBarriers@ /must/+--     be equal+--+-- -   #VUID-vkCmdWaitEvents-commandBuffer-01167# @commandBuffer@’s current+--     device mask /must/ include exactly one physical device+--+-- -   #VUID-vkCmdWaitEvents-pEvents-03847# Elements of @pEvents@ /must/+--     not have been signaled by+--     'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdWaitEvents-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdWaitEvents-pEvents-parameter# @pEvents@ /must/ be a valid+--     pointer to an array of @eventCount@ valid+--     'Vulkan.Core10.Handles.Event' handles+--+-- -   #VUID-vkCmdWaitEvents-srcStageMask-parameter# @srcStageMask@ /must/+--     be a valid combination of+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+--     values+--+-- -   #VUID-vkCmdWaitEvents-dstStageMask-parameter# @dstStageMask@ /must/+--     be a valid combination of+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+--     values+--+-- -   #VUID-vkCmdWaitEvents-pMemoryBarriers-parameter# If+--     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid+--     pointer to an array of @memoryBarrierCount@ valid+--     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures+--+-- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter# If+--     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@+--     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@+--     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures+--+-- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter# If+--     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/+--     be a valid pointer to an array of @imageMemoryBarrierCount@ valid+--     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures+--+-- -   #VUID-vkCmdWaitEvents-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-vkCmdWaitEvents-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdWaitEvents-eventCount-arraylength# @eventCount@ /must/ be+--     greater than @0@+--+-- -   #VUID-vkCmdWaitEvents-commonparent# Both of @commandBuffer@, and the+--     elements of @pEvents@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Vulkan.Core10.OtherTypes.MemoryBarrier',+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdWaitEvents :: forall io+               . (MonadIO io)+              => -- | @commandBuffer@ is the command buffer into which the command is+                 -- recorded.+                 CommandBuffer+              -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.+                 ("events" ::: Vector Event)+              -> -- | @srcStageMask@ is a bitmask of+                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                 -- specifying the+                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.+                 ("srcStageMask" ::: PipelineStageFlags)+              -> -- | @dstStageMask@ is a bitmask of+                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                 -- specifying the+                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.+                 ("dstStageMask" ::: PipelineStageFlags)+              -> -- | @pMemoryBarriers@ is a pointer to an array of+                 -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.+                 ("memoryBarriers" ::: Vector MemoryBarrier)+              -> -- | @pBufferMemoryBarriers@ is a pointer to an array of+                 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.+                 ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)+              -> -- | @pImageMemoryBarriers@ is a pointer to an array of+                 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.+                 ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))+              -> io ()+cmdWaitEvents = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsUnsafe++-- | A variant of 'cmdWaitEvents' which makes a *safe* FFI call+cmdWaitEventsSafe :: forall io+                   . (MonadIO io)+                  => -- | @commandBuffer@ is the command buffer into which the command is+                     -- recorded.+                     CommandBuffer+                  -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.+                     ("events" ::: Vector Event)+                  -> -- | @srcStageMask@ is a bitmask of+                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                     -- specifying the+                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.+                     ("srcStageMask" ::: PipelineStageFlags)+                  -> -- | @dstStageMask@ is a bitmask of+                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                     -- specifying the+                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.+                     ("dstStageMask" ::: PipelineStageFlags)+                  -> -- | @pMemoryBarriers@ is a pointer to an array of+                     -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.+                     ("memoryBarriers" ::: Vector MemoryBarrier)+                  -> -- | @pBufferMemoryBarriers@ is a pointer to an array of+                     -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.+                     ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)+                  -> -- | @pImageMemoryBarriers@ is a pointer to an array of+                     -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.+                     ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))+                  -> io ()+cmdWaitEventsSafe = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsSafe+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdPipelineBarrier+  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()++-- | vkCmdPipelineBarrier - Insert a memory dependency+--+-- = Description+--+-- 'cmdPipelineBarrier' operates almost identically to+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdPipelineBarrier2KHR',+-- except that the scopes and barriers are defined as direct parameters+-- rather than being defined by an+-- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'.+--+-- When 'cmdPipelineBarrier' is submitted to a queue, it defines a memory+-- dependency between commands that were submitted before it, and those+-- submitted after it.+--+-- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the+-- first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the+-- first synchronization scope includes only commands that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- within the same subpass. In either case, the first synchronization scope+-- is limited to operations on the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@.+--+-- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the+-- second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the+-- second synchronization scope includes only commands that occur later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- within the same subpass. In either case, the second synchronization+-- scope is limited to operations on the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@.+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to accesses in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@. Within that, the first access scope only+-- includes the first access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the first access scope+-- includes no accesses.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to accesses in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@. Within that, the second access scope only+-- includes the second access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the second access scope+-- includes no accesses.+--+-- If @dependencyFlags@ includes+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT', then+-- any dependency between+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space>+-- pipeline stages is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>+-- - otherwise it is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-global>.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04090# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04091# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04092# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04093# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04094# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04095# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04096# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04097# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+--     feature is not enabled, @srcStageMask@ /must/ not contain+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04098# Any pipeline stage+--     included in @srcStageMask@ /must/ be supported by the capabilities+--     of the queue family specified by the @queueFamilyIndex@ member of+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-03937# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>+--     feature is not enabled, @srcStageMask@ /must/ not be @0@+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04090# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04091# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04092# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04093# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04094# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04095# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04096# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04097# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+--     feature is not enabled, @dstStageMask@ /must/ not contain+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04098# Any pipeline stage+--     included in @dstStageMask@ /must/ be supported by the capabilities+--     of the queue family specified by the @queueFamilyIndex@ member of+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-03937# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>+--     feature is not enabled, @dstStageMask@ /must/ not be @0@+--+-- -   #VUID-vkCmdPipelineBarrier-srcAccessMask-02815# The @srcAccessMask@+--     member of each element of @pMemoryBarriers@ /must/ only include+--     access flags that are supported by one or more of the pipeline+--     stages in @srcStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdPipelineBarrier-dstAccessMask-02816# The @dstAccessMask@+--     member of each element of @pMemoryBarriers@ /must/ only include+--     access flags that are supported by one or more of the pipeline+--     stages in @dstStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817# For any+--     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @srcQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @srcAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @srcStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818# For any+--     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @dstQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @dstAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @dstStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819# For any+--     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @srcQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @srcAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @srcStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820# For any+--     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and+--     @dstQueueFamilyIndex@ members are equal, or if its+--     @dstQueueFamilyIndex@ is the queue family index that was used to+--     create the command pool that @commandBuffer@ was allocated from,+--     then its @dstAccessMask@ member /must/ only contain access flags+--     that are supported by one or more of the pipeline stages in+--     @dstStageMask@, as specified in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- -   #VUID-vkCmdPipelineBarrier-pDependencies-02285# If+--     'cmdPipelineBarrier' is called within a render pass instance, the+--     render pass /must/ have been created with at least one+--     'Vulkan.Core10.Pass.SubpassDependency' instance in+--     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that+--     expresses a dependency from the current subpass to itself, with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scopes>+--     and+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>+--     that are all supersets of the scopes defined in this command+--+-- -   #VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178# If+--     'cmdPipelineBarrier' is called within a render pass instance, it+--     /must/ not include any buffer memory barriers+--+-- -   #VUID-vkCmdPipelineBarrier-image-04073# If 'cmdPipelineBarrier' is+--     called within a render pass instance, the @image@ member of any+--     image memory barrier included in this command /must/ be an+--     attachment used in the current subpass both as an input attachment,+--     and as either a color or depth\/stencil attachment+--+-- -   #VUID-vkCmdPipelineBarrier-oldLayout-01181# If 'cmdPipelineBarrier'+--     is called within a render pass instance, the @oldLayout@ and+--     @newLayout@ members of any image memory barrier included in this+--     command /must/ be equal+--+-- -   #VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182# If+--     'cmdPipelineBarrier' is called within a render pass instance, the+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any image+--     memory barrier included in this command /must/ be equal+--+-- -   #VUID-vkCmdPipelineBarrier-dependencyFlags-01186# If+--     'cmdPipelineBarrier' is called outside of a render pass instance,+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'+--     /must/ not be included in the dependency flags+--+-- -   #VUID-vkCmdPipelineBarrier-None-06191# If 'cmdPipelineBarrier' is+--     called within a render pass instance, the render pass /must/ not+--     have been started with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdPipelineBarrier-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-parameter# @srcStageMask@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+--     values+--+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-parameter# @dstStageMask@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+--     values+--+-- -   #VUID-vkCmdPipelineBarrier-dependencyFlags-parameter#+--     @dependencyFlags@ /must/ be a valid combination of+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' values+--+-- -   #VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter# If+--     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid+--     pointer to an array of @memoryBarrierCount@ valid+--     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures+--+-- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter# If+--     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@+--     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@+--     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures+--+-- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter# If+--     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/+--     be a valid pointer to an array of @imageMemoryBarrierCount@ valid+--     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures+--+-- -   #VUID-vkCmdPipelineBarrier-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-vkCmdPipelineBarrier-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics, or compute+--     operations+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Vulkan.Core10.OtherTypes.MemoryBarrier',+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdPipelineBarrier :: forall io+                    . (MonadIO io)+                   => -- | @commandBuffer@ is the command buffer into which the command is+                      -- recorded.+                      CommandBuffer+                   -> -- | @srcStageMask@ is a bitmask of+                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                      -- specifying the+                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stages>.+                      ("srcStageMask" ::: PipelineStageFlags)+                   -> -- | @dstStageMask@ is a bitmask of+                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+                      -- specifying the+                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stages>.+                      ("dstStageMask" ::: PipelineStageFlags)+                   -> -- | @dependencyFlags@ is a bitmask of+                      -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' specifying+                      -- how execution and memory dependencies are formed.+                      DependencyFlags+                   -> -- | @pMemoryBarriers@ is a pointer to an array of+                      -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.+                      ("memoryBarriers" ::: Vector MemoryBarrier)+                   -> -- | @pBufferMemoryBarriers@ is a pointer to an array of+                      -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.+                      ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)+                   -> -- | @pImageMemoryBarriers@ is a pointer to an array of+                      -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.+                      ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))+                   -> io ()+cmdPipelineBarrier commandBuffer srcStageMask dstStageMask dependencyFlags memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do+  let vkCmdPipelineBarrierPtr = pVkCmdPipelineBarrier (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdPipelineBarrierPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPipelineBarrier is null" Nothing Nothing+  let vkCmdPipelineBarrier' = mkVkCmdPipelineBarrier vkCmdPipelineBarrierPtr+  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)+  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)+  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)+  lift $ traceAroundEvent "vkCmdPipelineBarrier" (vkCmdPipelineBarrier' (commandBufferHandle (commandBuffer)) (srcStageMask) (dstStageMask) (dependencyFlags) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBeginQuery+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()++-- | vkCmdBeginQuery - Begin a query+--+-- = Description+--+-- If the @queryType@ of the pool is+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' and @flags@+-- contains+-- 'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT', an+-- implementation /must/ return a result that matches the actual number of+-- samples passed. This is described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion Occlusion Queries>.+--+-- Calling 'cmdBeginQuery' is equivalent to calling+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT'+-- with the @index@ parameter set to zero.+--+-- After beginning a query, that query is considered /active/ within the+-- command buffer it was called in until that same query is ended. Queries+-- active in a primary command buffer when secondary command buffers are+-- executed are considered active for those secondary command buffers.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBeginQuery-None-00807# All queries used by the command+--     /must/ be unavailable+--+-- -   #VUID-vkCmdBeginQuery-queryType-02804# The @queryType@ used to+--     create @queryPool@ /must/ not be+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'+--+-- -   #VUID-vkCmdBeginQuery-queryType-04728# The @queryType@ used to+--     create @queryPool@ /must/ not be+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--     or+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   #VUID-vkCmdBeginQuery-queryType-04729# The @queryType@ used to+--     create @queryPool@ /must/ not be+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'+--+-- -   #VUID-vkCmdBeginQuery-queryType-00800# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise precise occlusion queries>+--     feature is not enabled, or the @queryType@ used to create+--     @queryPool@ was not+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', @flags@ /must/+--     not contain+--     'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+--+-- -   #VUID-vkCmdBeginQuery-query-00802# @query@ /must/ be less than the+--     number of queries in @queryPool@+--+-- -   #VUID-vkCmdBeginQuery-queryType-00803# If the @queryType@ used to+--     create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', the+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBeginQuery-queryType-00804# If the @queryType@ used to+--     create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and+--     any of the @pipelineStatistics@ indicate graphics operations, the+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBeginQuery-queryType-00805# If the @queryType@ used to+--     create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and+--     any of the @pipelineStatistics@ indicate compute operations, the+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdBeginQuery-commandBuffer-01885# @commandBuffer@ /must/+--     not be a protected command buffer+--+-- -   #VUID-vkCmdBeginQuery-query-00808# If called within a render pass+--     instance, the sum of @query@ and the number of bits set in the+--     current subpass’s view mask /must/ be less than or equal to the+--     number of queries in @queryPool@+--+-- -   #VUID-vkCmdBeginQuery-queryPool-01922# @queryPool@ /must/ have been+--     created with a @queryType@ that differs from that of any queries+--     that are+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+--     within @commandBuffer@+--+-- -   #VUID-vkCmdBeginQuery-queryType-02327# If the @queryType@ used to+--     create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBeginQuery-queryType-02328# If the @queryType@ used to+--     create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--     then+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@+--     /must/ be supported+--+-- -   #VUID-vkCmdBeginQuery-queryPool-03223# If @queryPool@ was created+--     with a @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>+--     /must/ have been held before+--     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' was called on+--     @commandBuffer@+--+-- -   #VUID-vkCmdBeginQuery-queryPool-03224# If @queryPool@ was created+--     with a @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and+--     one of the counters used to create @queryPool@ was+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',+--     the query begin /must/ be the first recorded command in+--     @commandBuffer@+--+-- -   #VUID-vkCmdBeginQuery-queryPool-03225# If @queryPool@ was created+--     with a @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and+--     one of the counters used to create @queryPool@ was+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',+--     the begin command /must/ not be recorded within a render pass+--     instance+--+-- -   #VUID-vkCmdBeginQuery-queryPool-03226# If @queryPool@ was created+--     with a @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and+--     another query pool with a @queryType@+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' has+--     been used within @commandBuffer@, its parent primary command buffer+--     or secondary command buffer recorded within the same parent primary+--     command buffer as @commandBuffer@, the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterMultipleQueryPools performanceCounterMultipleQueryPools>+--     feature /must/ be enabled+--+-- -   #VUID-vkCmdBeginQuery-None-02863# If @queryPool@ was created with a+--     @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+--     this command /must/ not be recorded in a command buffer that, either+--     directly or through secondary command buffers, also contains a+--     'cmdResetQueryPool' command affecting the same query+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBeginQuery-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBeginQuery-queryPool-parameter# @queryPool@ /must/ be a+--     valid 'Vulkan.Core10.Handles.QueryPool' handle+--+-- -   #VUID-vkCmdBeginQuery-flags-parameter# @flags@ /must/ be a valid+--     combination of+--     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'+--     values+--+-- -   #VUID-vkCmdBeginQuery-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-vkCmdBeginQuery-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdBeginQuery-commonparent# Both of @commandBuffer@, and+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',+-- 'Vulkan.Core10.Handles.QueryPool'+cmdBeginQuery :: forall io+               . (MonadIO io)+              => -- | @commandBuffer@ is the command buffer into which this command will be+                 -- recorded.+                 CommandBuffer+              -> -- | @queryPool@ is the query pool that will manage the results of the query.+                 QueryPool+              -> -- | @query@ is the query index within the query pool that will contain the+                 -- results.+                 ("query" ::: Word32)+              -> -- | @flags@ is a bitmask of+                 -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'+                 -- specifying constraints on the types of queries that /can/ be performed.+                 QueryControlFlags+              -> io ()+cmdBeginQuery commandBuffer queryPool query flags = liftIO $ do+  let vkCmdBeginQueryPtr = pVkCmdBeginQuery (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdBeginQueryPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginQuery is null" Nothing Nothing+  let vkCmdBeginQuery' = mkVkCmdBeginQuery vkCmdBeginQueryPtr+  traceAroundEvent "vkCmdBeginQuery" (vkCmdBeginQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags))+  pure $ ()++-- | This function will call the supplied action between calls to+-- 'cmdBeginQuery' and 'cmdEndQuery'+--+-- Note that 'cmdEndQuery' is *not* called if an exception is thrown by the+-- inner action.+cmdUseQuery :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> io r -> io r+cmdUseQuery commandBuffer queryPool query flags a =+  (cmdBeginQuery commandBuffer queryPool query flags) *> a <* (cmdEndQuery commandBuffer queryPool query)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdEndQuery+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()++-- | vkCmdEndQuery - Ends a query+--+-- = Description+--+-- Calling 'cmdEndQuery' is equivalent to calling+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT' with+-- the @index@ parameter set to zero.+--+-- As queries operate asynchronously, ending a query does not immediately+-- set the query’s status to available. A query is considered /finished/+-- when the final results of the query are ready to be retrieved by+-- 'Vulkan.Core10.Query.getQueryPoolResults' and 'cmdCopyQueryPoolResults',+-- and this is when the query’s status is set to available.+--+-- Once a query is ended the query /must/ finish in finite time, unless the+-- state of the query is changed using other commands, e.g. by issuing a+-- reset of the query.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdEndQuery-None-01923# All queries used by the command+--     /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+--+-- -   #VUID-vkCmdEndQuery-query-00810# @query@ /must/ be less than the+--     number of queries in @queryPool@+--+-- -   #VUID-vkCmdEndQuery-commandBuffer-01886# @commandBuffer@ /must/ not+--     be a protected command buffer+--+-- -   #VUID-vkCmdEndQuery-query-00812# If 'cmdEndQuery' is called within a+--     render pass instance, the sum of @query@ and the number of bits set+--     in the current subpass’s view mask /must/ be less than or equal to+--     the number of queries in @queryPool@+--+-- -   #VUID-vkCmdEndQuery-queryPool-03227# If @queryPool@ was created with+--     a @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and+--     one or more of the counters used to create @queryPool@ was+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',+--     the 'cmdEndQuery' /must/ be the last recorded command in+--     @commandBuffer@+--+-- -   #VUID-vkCmdEndQuery-queryPool-03228# If @queryPool@ was created with+--     a @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and+--     one or more of the counters used to create @queryPool@ was+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',+--     the 'cmdEndQuery' /must/ not be recorded within a render pass+--     instance+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdEndQuery-commandBuffer-parameter# @commandBuffer@ /must/+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdEndQuery-queryPool-parameter# @queryPool@ /must/ be a+--     valid 'Vulkan.Core10.Handles.QueryPool' handle+--+-- -   #VUID-vkCmdEndQuery-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-vkCmdEndQuery-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdEndQuery-commonparent# Both of @commandBuffer@, and+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'+cmdEndQuery :: forall io+             . (MonadIO io)+            => -- | @commandBuffer@ is the command buffer into which this command will be+               -- recorded.+               CommandBuffer+            -> -- | @queryPool@ is the query pool that is managing the results of the query.+               QueryPool+            -> -- | @query@ is the query index within the query pool where the result is+               -- stored.+               ("query" ::: Word32)+            -> io ()+cmdEndQuery commandBuffer queryPool query = liftIO $ do+  let vkCmdEndQueryPtr = pVkCmdEndQuery (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdEndQueryPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndQuery is null" Nothing Nothing+  let vkCmdEndQuery' = mkVkCmdEndQuery vkCmdEndQueryPtr+  traceAroundEvent "vkCmdEndQuery" (vkCmdEndQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdResetQueryPool+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()++-- | vkCmdResetQueryPool - Reset queries in a query pool+--+-- = Description+--+-- When executed on a queue, this command sets the status of query indices+-- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.+--+-- If the @queryType@ used to create @queryPool@ was+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', this+-- command sets the status of query indices [@firstQuery@, @firstQuery@ ++-- @queryCount@ - 1] to unavailable for each pass of @queryPool@, as+-- indicated by a call to+-- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.+--+-- Note+--+-- Because 'cmdResetQueryPool' resets all the passes of the indicated+-- queries, applications must not record a 'cmdResetQueryPool' command for+-- a @queryPool@ created with+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' in a+-- command buffer that needs to be submitted multiple times as indicated by+-- a call to+-- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.+-- Otherwise applications will never be able to complete the recorded+-- queries.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdResetQueryPool-firstQuery-00796# @firstQuery@ /must/ be+--     less than the number of queries in @queryPool@+--+-- -   #VUID-vkCmdResetQueryPool-firstQuery-00797# The sum of @firstQuery@+--     and @queryCount@ /must/ be less than or equal to the number of+--     queries in @queryPool@+--+-- -   #VUID-vkCmdResetQueryPool-None-02841# All queries used by the+--     command /must/ not be active+--+-- -   #VUID-vkCmdResetQueryPool-firstQuery-02862# If @queryPool@ was+--     created with+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+--     this command /must/ not be recorded in a command buffer that, either+--     directly or through secondary command buffers, also contains begin+--     commands for a query from the set of queries [@firstQuery@,+--     @firstQuery@ + @queryCount@ - 1]+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdResetQueryPool-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdResetQueryPool-queryPool-parameter# @queryPool@ /must/ be+--     a valid 'Vulkan.Core10.Handles.QueryPool' handle+--+-- -   #VUID-vkCmdResetQueryPool-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-vkCmdResetQueryPool-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdResetQueryPool-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdResetQueryPool-commonparent# Both of @commandBuffer@, and+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'+cmdResetQueryPool :: forall io+                   . (MonadIO io)+                  => -- | @commandBuffer@ is the command buffer into which this command will be+                     -- recorded.+                     CommandBuffer+                  -> -- | @queryPool@ is the handle of the query pool managing the queries being+                     -- reset.+                     QueryPool+                  -> -- | @firstQuery@ is the initial query index to reset.+                     ("firstQuery" ::: Word32)+                  -> -- | @queryCount@ is the number of queries to reset.+                     ("queryCount" ::: Word32)+                  -> io ()+cmdResetQueryPool commandBuffer queryPool firstQuery queryCount = liftIO $ do+  let vkCmdResetQueryPoolPtr = pVkCmdResetQueryPool (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdResetQueryPoolPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetQueryPool is null" Nothing Nothing+  let vkCmdResetQueryPool' = mkVkCmdResetQueryPool vkCmdResetQueryPoolPtr+  traceAroundEvent "vkCmdResetQueryPool" (vkCmdResetQueryPool' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdWriteTimestamp+  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()++-- | vkCmdWriteTimestamp - Write a device timestamp into a query object+--+-- = Description+--+-- 'cmdWriteTimestamp' latches the value of the timer when all previous+-- commands have completed executing as far as the specified pipeline+-- stage, and writes the timestamp value to memory. When the timestamp+-- value is written, the availability status of the query is set to+-- available.+--+-- Note+--+-- If an implementation is unable to detect completion and latch the timer+-- at any specific stage of the pipeline, it /may/ instead do so at any+-- logically later stage.+--+-- Comparisons between timestamps are not meaningful if the timestamps are+-- written by commands submitted to different queues.+--+-- Note+--+-- An example of such a comparison is subtracting an older timestamp from a+-- newer one to determine the execution time of a sequence of commands.+--+-- If 'cmdWriteTimestamp' is called while executing a render pass instance+-- that has multiview enabled, the timestamp uses N consecutive query+-- indices in the query pool (starting at @query@) where N is the number of+-- bits set in the view mask of the subpass the command is executed in. The+-- resulting query values are determined by an implementation-dependent+-- choice of one of the following behaviors:+--+-- -   The first query is a timestamp value and (if more than one bit is+--     set in the view mask) zero is written to the remaining queries. If+--     two timestamps are written in the same subpass, the sum of the+--     execution time of all views between those commands is the difference+--     between the first query written by each command.+--+-- -   All N queries are timestamp values. If two timestamps are written in+--     the same subpass, the sum of the execution time of all views between+--     those commands is the sum of the difference between corresponding+--     queries written by each command. The difference between+--     corresponding queries /may/ be the execution time of a single view.+--+-- In either case, the application /can/ sum the differences between all N+-- queries to determine the total execution time.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04074# @pipelineStage@+--     /must/ be a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage>+--     for the queue family that was used to create the command pool that+--     @commandBuffer@ was allocated from+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04075# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @pipelineStage@ /must/ not be+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04076# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @pipelineStage@ /must/ not be+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04077# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>+--     feature is not enabled, @pipelineStage@ /must/ not be+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04078# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>+--     feature is not enabled, @pipelineStage@ /must/ not be+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04079# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>+--     feature is not enabled, @pipelineStage@ /must/ not be+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04080# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+--     feature is not enabled, @pipelineStage@ /must/ not be+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--     or+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04081# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+--     feature is not enabled, @pipelineStage@ /must/ not be+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   #VUID-vkCmdWriteTimestamp-queryPool-01416# @queryPool@ /must/ have+--     been created with a @queryType@ of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'+--+-- -   #VUID-vkCmdWriteTimestamp-queryPool-00828# The query identified by+--     @queryPool@ and @query@ /must/ be /unavailable/+--+-- -   #VUID-vkCmdWriteTimestamp-timestampValidBits-00829# The command+--     pool’s queue family /must/ support a non-zero @timestampValidBits@+--+-- -   #VUID-vkCmdWriteTimestamp-query-04904# @query@ /must/ be less than+--     the number of queries in @queryPool@+--+-- -   #VUID-vkCmdWriteTimestamp-None-00830# All queries used by the+--     command /must/ be unavailable+--+-- -   #VUID-vkCmdWriteTimestamp-query-00831# If 'cmdWriteTimestamp' is+--     called within a render pass instance, the sum of @query@ and the+--     number of bits set in the current subpass’s view mask /must/ be less+--     than or equal to the number of queries in @queryPool@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdWriteTimestamp-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-parameter# @pipelineStage@+--     /must/ be a valid+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+--     value+--+-- -   #VUID-vkCmdWriteTimestamp-queryPool-parameter# @queryPool@ /must/ be+--     a valid 'Vulkan.Core10.Handles.QueryPool' handle+--+-- -   #VUID-vkCmdWriteTimestamp-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-vkCmdWriteTimestamp-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support transfer, graphics, or compute+--     operations+--+-- -   #VUID-vkCmdWriteTimestamp-commonparent# Both of @commandBuffer@, and+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',+-- 'Vulkan.Core10.Handles.QueryPool'+cmdWriteTimestamp :: forall io+                   . (MonadIO io)+                  => -- | @commandBuffer@ is the command buffer into which the command will be+                     -- recorded.+                     CommandBuffer+                  -> -- | @pipelineStage@ is a+                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' value,+                     -- specifying a stage of the pipeline.+                     PipelineStageFlagBits+                  -> -- | @queryPool@ is the query pool that will manage the timestamp.+                     QueryPool+                  -> -- | @query@ is the query within the query pool that will contain the+                     -- timestamp.+                     ("query" ::: Word32)+                  -> io ()+cmdWriteTimestamp commandBuffer pipelineStage queryPool query = liftIO $ do+  let vkCmdWriteTimestampPtr = pVkCmdWriteTimestamp (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdWriteTimestampPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteTimestamp is null" Nothing Nothing+  let vkCmdWriteTimestamp' = mkVkCmdWriteTimestamp vkCmdWriteTimestampPtr+  traceAroundEvent "vkCmdWriteTimestamp" (vkCmdWriteTimestamp' (commandBufferHandle (commandBuffer)) (pipelineStage) (queryPool) (query))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyQueryPoolResults+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()++-- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool+-- to a buffer object+--+-- = Description+--+-- 'cmdCopyQueryPoolResults' is guaranteed to see the effect of previous+-- uses of 'cmdResetQueryPool' in the same queue, without any additional+-- synchronization. Thus, the results will always reflect the most recent+-- use of the query.+--+-- @flags@ has the same possible values described above for the @flags@+-- parameter of 'Vulkan.Core10.Query.getQueryPoolResults', but the+-- different style of execution causes some subtle behavioral differences.+-- Because 'cmdCopyQueryPoolResults' executes in order with respect to+-- other query commands, there is less ambiguity about which use of a query+-- is being requested.+--+-- Results for all requested occlusion queries, pipeline statistics+-- queries, transform feedback queries, and timestamp queries are written+-- as 64-bit unsigned integer values if+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set or+-- 32-bit unsigned integer values otherwise. Performance queries store+-- results in a tightly packed array whose type is determined by the @unit@+-- member of the corresponding+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR'.+--+-- If neither of+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' and+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'+-- are set, results are only written out for queries in the available+-- state.+--+-- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is+-- set, the implementation will wait for each query’s status to be in the+-- available state before retrieving the numerical results for that query.+-- This is guaranteed to reflect the most recent use of the query on the+-- same queue, assuming that the query is not being simultaneously used by+-- other queues. If the query does not become available in a finite amount+-- of time (e.g. due to not issuing a query since the last reset), a+-- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error /may/ occur.+--+-- Similarly, if+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'+-- is set and+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is not+-- set, the availability is guaranteed to reflect the most recent use of+-- the query on the same queue, assuming that the query is not being+-- simultaneously used by other queues. As with+-- 'Vulkan.Core10.Query.getQueryPoolResults', implementations /must/+-- guarantee that if they return a non-zero availability value, then the+-- numerical results are valid.+--+-- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT' is+-- set, 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is+-- not set, and the query’s status is unavailable, an intermediate result+-- value between zero and the final result value is written for that query.+--+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+-- /must/ not be used if the pool’s @queryType@ is+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'.+--+-- 'cmdCopyQueryPoolResults' is considered to be a transfer operation, and+-- its writes to buffer memory /must/ be synchronized using+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'+-- and 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'+-- before using the results.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyQueryPoolResults-dstOffset-00819# @dstOffset@ /must/+--     be less than the size of @dstBuffer@+--+-- -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00820# @firstQuery@+--     /must/ be less than the number of queries in @queryPool@+--+-- -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00821# The sum of+--     @firstQuery@ and @queryCount@ /must/ be less than or equal to the+--     number of queries in @queryPool@+--+-- -   #VUID-vkCmdCopyQueryPoolResults-flags-00822# If+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not+--     set in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of+--     @4@+--+-- -   #VUID-vkCmdCopyQueryPoolResults-flags-00823# If+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set+--     in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of @8@+--+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824# @dstBuffer@ /must/+--     have enough storage, from @dstOffset@, to contain the result of each+--     query, as described+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayout here>+--+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825# @dstBuffer@ /must/+--     have been created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+--     usage flag+--+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826# If @dstBuffer@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-00827# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP', @flags@ /must/+--     not contain+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+--+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03232# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+--     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR'::@allowCommandBufferQueryCopies@+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'+--+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03233# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+--     @flags@ /must/ not contain+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT',+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+--     or 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+--+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03234# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+--     the @queryPool@ /must/ have been submitted once for each pass as+--     retrieved via a call to+--     'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'+--+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-02734#+--     'cmdCopyQueryPoolResults' /must/ not be called if the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyQueryPoolResults-queryPool-parameter# @queryPool@+--     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle+--+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter# @dstBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdCopyQueryPoolResults-flags-parameter# @flags@ /must/ be a+--     valid combination of+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' values+--+-- -   #VUID-vkCmdCopyQueryPoolResults-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-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdCopyQueryPoolResults-renderpass# This command /must/ only+--     be called outside of a render pass instance+--+-- -   #VUID-vkCmdCopyQueryPoolResults-commonparent# Each of+--     @commandBuffer@, @dstBuffer@, and @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Handles.QueryPool',+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'+cmdCopyQueryPoolResults :: forall io+                         . (MonadIO io)+                        => -- | @commandBuffer@ is the command buffer into which this command will be+                           -- recorded.+                           CommandBuffer+                        -> -- | @queryPool@ is the query pool managing the queries containing the+                           -- desired results.+                           QueryPool+                        -> -- | @firstQuery@ is the initial query index.+                           ("firstQuery" ::: Word32)+                        -> -- | @queryCount@ is the number of queries. @firstQuery@ and @queryCount@+                           -- together define a range of queries.+                           ("queryCount" ::: Word32)+                        -> -- | @dstBuffer@ is a 'Vulkan.Core10.Handles.Buffer' object that will receive+                           -- the results of the copy command.+                           ("dstBuffer" ::: Buffer)+                        -> -- | @dstOffset@ is an offset into @dstBuffer@.+                           ("dstOffset" ::: DeviceSize)+                        -> -- | @stride@ is the stride in bytes between results for individual queries+                           -- within @dstBuffer@. The required size of the backing memory for+                           -- @dstBuffer@ is determined as described above for+                           -- 'Vulkan.Core10.Query.getQueryPoolResults'.+                           ("stride" ::: DeviceSize)+                        -> -- | @flags@ is a bitmask of+                           -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' specifying+                           -- how and when results are returned.+                           QueryResultFlags+                        -> io ()+cmdCopyQueryPoolResults commandBuffer queryPool firstQuery queryCount dstBuffer dstOffset stride flags = liftIO $ do+  let vkCmdCopyQueryPoolResultsPtr = pVkCmdCopyQueryPoolResults (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdCopyQueryPoolResultsPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyQueryPoolResults is null" Nothing Nothing+  let vkCmdCopyQueryPoolResults' = mkVkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResultsPtr+  traceAroundEvent "vkCmdCopyQueryPoolResults" (vkCmdCopyQueryPoolResults' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount) (dstBuffer) (dstOffset) (stride) (flags))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdPushConstants+  :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()++-- | vkCmdPushConstants - Update the values of push constants+--+-- = Description+--+-- When a command buffer begins recording, all push constant values are+-- undefined. Reads of undefined push constant values by the executing+-- shader return undefined values.+--+-- Push constant values /can/ be updated incrementally, causing shader+-- stages in @stageFlags@ to read the new data from @pValues@ for push+-- constants modified by this command, while still reading the previous+-- data for push constants not modified by this command. When a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline command>+-- is issued, the bound pipeline’s layout /must/ be compatible with the+-- layouts used to set the values of all push constants in the pipeline+-- layout’s push constant ranges, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.+-- Binding a pipeline with a layout that is not compatible with the push+-- constant layout does not disturb the push constant values.+--+-- Note+--+-- As @stageFlags@ needs to include all flags the relevant push constant+-- ranges were created with, any flags that are not supported by the queue+-- family that the 'Vulkan.Core10.Handles.CommandPool' used to allocate+-- @commandBuffer@ was created on are ignored.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdPushConstants-offset-01795# For each byte in the range+--     specified by @offset@ and @size@ and for each shader stage in+--     @stageFlags@, there /must/ be a push constant range in @layout@ that+--     includes that byte and that stage+--+-- -   #VUID-vkCmdPushConstants-offset-01796# For each byte in the range+--     specified by @offset@ and @size@ and for each push constant range+--     that overlaps that byte, @stageFlags@ /must/ include all stages in+--     that push constant range’s+--     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@+--+-- -   #VUID-vkCmdPushConstants-offset-00368# @offset@ /must/ be a multiple+--     of @4@+--+-- -   #VUID-vkCmdPushConstants-size-00369# @size@ /must/ be a multiple of+--     @4@+--+-- -   #VUID-vkCmdPushConstants-offset-00370# @offset@ /must/ be less than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@+--+-- -   #VUID-vkCmdPushConstants-size-00371# @size@ /must/ be less than or+--     equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@+--     minus @offset@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdPushConstants-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdPushConstants-layout-parameter# @layout@ /must/ be a+--     valid 'Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   #VUID-vkCmdPushConstants-stageFlags-parameter# @stageFlags@ /must/+--     be a valid combination of+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values+--+-- -   #VUID-vkCmdPushConstants-stageFlags-requiredbitmask# @stageFlags@+--     /must/ not be @0@+--+-- -   #VUID-vkCmdPushConstants-pValues-parameter# @pValues@ /must/ be a+--     valid pointer to an array of @size@ bytes+--+-- -   #VUID-vkCmdPushConstants-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-vkCmdPushConstants-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics, or compute operations+--+-- -   #VUID-vkCmdPushConstants-size-arraylength# @size@ /must/ be greater+--     than @0@+--+-- -   #VUID-vkCmdPushConstants-commonparent# Both of @commandBuffer@, and+--     @layout@ /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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Handles.PipelineLayout',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'+cmdPushConstants :: forall io+                  . (MonadIO io)+                 => -- | @commandBuffer@ is the command buffer in which the push constant update+                    -- will be recorded.+                    CommandBuffer+                 -> -- | @layout@ is the pipeline layout used to program the push constant+                    -- updates.+                    PipelineLayout+                 -> -- | @stageFlags@ is a bitmask of+                    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying+                    -- the shader stages that will use the push constants in the updated range.+                    ShaderStageFlags+                 -> -- | @offset@ is the start offset of the push constant range to update, in+                    -- units of bytes.+                    ("offset" ::: Word32)+                 -> -- | @size@ is the size of the push constant range to update, in units of+                    -- bytes.+                    ("size" ::: Word32)+                 -> -- | @pValues@ is a pointer to an array of @size@ bytes containing the new+                    -- push constant values.+                    ("values" ::: Ptr ())+                 -> io ()+cmdPushConstants commandBuffer layout stageFlags offset size values = liftIO $ do+  let vkCmdPushConstantsPtr = pVkCmdPushConstants (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdPushConstantsPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushConstants is null" Nothing Nothing+  let vkCmdPushConstants' = mkVkCmdPushConstants vkCmdPushConstantsPtr+  traceAroundEvent "vkCmdPushConstants" (vkCmdPushConstants' (commandBufferHandle (commandBuffer)) (layout) (stageFlags) (offset) (size) (values))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBeginRenderPass+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()++-- | vkCmdBeginRenderPass - Begin a new render pass+--+-- = Description+--+-- After beginning a render pass instance, the command buffer is ready to+-- record the commands for the first subpass of that render pass.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00895# If any of the+--     @initialLayout@ or @finalLayout@ member of the+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'+--     structures specified when creating the render pass specified in the+--     @renderPass@ member of @pRenderPassBegin@ is+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--     then the corresponding attachment image view of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+--     have been created with a @usage@ value including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+--+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-01758# If any of the+--     @initialLayout@ or @finalLayout@ member of the+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'+--     structures specified when creating the render pass specified in the+--     @renderPass@ member of @pRenderPassBegin@ is+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+--     then the corresponding attachment image view of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+--     have been created with a @usage@ value including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-02842# If any of the+--     @initialLayout@ or @finalLayout@ member of the+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'+--     structures specified when creating the render pass specified in the+--     @renderPass@ member of @pRenderPassBegin@ is+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--     then the corresponding attachment image view of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+--     have been created with a @usage@ value including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843# If any of the+--     @stencilInitialLayout@ or @stencilFinalLayout@ member of the+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+--     structures or the @stencilLayout@ member of the+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'+--     structures specified when creating the render pass specified in the+--     @renderPass@ member of @pRenderPassBegin@ is+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--     then the corresponding attachment image view of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+--     have been created with a @usage@ value including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00897# If any of the+--     @initialLayout@ or @finalLayout@ member of the+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'+--     structures specified when creating the render pass specified in the+--     @renderPass@ member of @pRenderPassBegin@ is+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'+--     then the corresponding attachment image view of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+--     have been created with a @usage@ value including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+--+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00898# If any of the+--     @initialLayout@ or @finalLayout@ member of the+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'+--     structures specified when creating the render pass specified in the+--     @renderPass@ member of @pRenderPassBegin@ is+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+--     then the corresponding attachment image view of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+--     have been created with a @usage@ value including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00899# If any of the+--     @initialLayout@ or @finalLayout@ member of the+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'+--     structures specified when creating the render pass specified in the+--     @renderPass@ member of @pRenderPassBegin@ is+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+--     then the corresponding attachment image view of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+--     have been created with a @usage@ value including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00900# If the+--     @initialLayout@ member of any of the+--     'Vulkan.Core10.Pass.AttachmentDescription' structures specified when+--     creating the render pass specified in the @renderPass@ member of+--     @pRenderPassBegin@ is not+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', then each+--     such @initialLayout@ /must/ be equal to the current layout of the+--     corresponding attachment image subresource of the framebuffer+--     specified in the @framebuffer@ member of @pRenderPassBegin@+--+-- -   #VUID-vkCmdBeginRenderPass-srcStageMask-00901# The @srcStageMask@+--     and @dstStageMask@ members of any element of the @pDependencies@+--     member of 'Vulkan.Core10.Pass.RenderPassCreateInfo' used to create+--     @renderPass@ /must/ be supported by the capabilities of the queue+--     family identified by the @queueFamilyIndex@ member of the+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to create the+--     command pool which @commandBuffer@ was allocated from+--+-- -   #VUID-vkCmdBeginRenderPass-framebuffer-02532# For any attachment in+--     @framebuffer@ that is used by @renderPass@ and is bound to memory+--     locations that are also bound to another attachment used by+--     @renderPass@, and if at least one of those uses causes either+--     attachment to be written to, both attachments /must/ have had the+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'+--     set+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBeginRenderPass-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter#+--     @pRenderPassBegin@ /must/ be a valid pointer to a valid+--     'RenderPassBeginInfo' structure+--+-- -   #VUID-vkCmdBeginRenderPass-contents-parameter# @contents@ /must/ be+--     a valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value+--+-- -   #VUID-vkCmdBeginRenderPass-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-vkCmdBeginRenderPass-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBeginRenderPass-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdBeginRenderPass-bufferlevel# @commandBuffer@ /must/ be a+--     primary 'Vulkan.Core10.Handles.CommandBuffer'+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderPassBeginInfo',+-- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'+cmdBeginRenderPass :: forall a io+                    . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io)+                   => -- | @commandBuffer@ is the command buffer in which to record the command.+                      CommandBuffer+                   -> -- | @pRenderPassBegin@ is a pointer to a 'RenderPassBeginInfo' structure+                      -- specifying the render pass to begin an instance of, and the framebuffer+                      -- the instance uses.+                      (RenderPassBeginInfo a)+                   -> -- | @contents@ is a 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'+                      -- value specifying how the commands in the first subpass will be provided.+                      SubpassContents+                   -> io ()+cmdBeginRenderPass commandBuffer renderPassBegin contents = liftIO . evalContT $ do+  let vkCmdBeginRenderPassPtr = pVkCmdBeginRenderPass (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBeginRenderPassPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginRenderPass is null" Nothing Nothing+  let vkCmdBeginRenderPass' = mkVkCmdBeginRenderPass vkCmdBeginRenderPassPtr+  pRenderPassBegin <- ContT $ withCStruct (renderPassBegin)+  lift $ traceAroundEvent "vkCmdBeginRenderPass" (vkCmdBeginRenderPass' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderPassBegin) (contents))+  pure $ ()++-- | This function will call the supplied action between calls to+-- 'cmdBeginRenderPass' and 'cmdEndRenderPass'+--+-- Note that 'cmdEndRenderPass' is *not* called if an exception is thrown+-- by the inner action.+cmdUseRenderPass :: forall a io r . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io r -> io r+cmdUseRenderPass commandBuffer pRenderPassBegin contents a =+  (cmdBeginRenderPass commandBuffer pRenderPassBegin contents) *> a <* (cmdEndRenderPass commandBuffer)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdNextSubpass+  :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> SubpassContents -> IO ()++-- | vkCmdNextSubpass - Transition to the next subpass of a render pass+--+-- = Description+--+-- The subpass index for a render pass begins at zero when+-- 'cmdBeginRenderPass' is recorded, and increments each time+-- 'cmdNextSubpass' is recorded.+--+-- Moving to the next subpass automatically performs any multisample+-- resolve operations in the subpass being ended. End-of-subpass+-- multisample resolves are treated as color attachment writes for the+-- purposes of synchronization. This applies to resolve operations for both+-- color and depth\/stencil attachments. That is, they are considered to+-- execute in the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'+-- pipeline stage and their writes are synchronized with+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.+-- Synchronization between rendering within a subpass and any resolve+-- operations at the end of the subpass occurs automatically, without need+-- for explicit dependencies or pipeline barriers. However, if the resolve+-- attachment is also used in a different subpass, an explicit dependency+-- is needed.+--+-- After transitioning to the next subpass, the application /can/ record+-- the commands for that subpass.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdNextSubpass-None-00909# The current subpass index /must/+--     be less than the number of subpasses in the render pass minus one+--+-- -   #VUID-vkCmdNextSubpass-None-02349# This command /must/ not be+--     recorded when transform feedback is active+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdNextSubpass-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdNextSubpass-contents-parameter# @contents@ /must/ be a+--     valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value+--+-- -   #VUID-vkCmdNextSubpass-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-vkCmdNextSubpass-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdNextSubpass-renderpass# This command /must/ only be+--     called inside of a render pass instance+--+-- -   #VUID-vkCmdNextSubpass-bufferlevel# @commandBuffer@ /must/ be a+--     primary 'Vulkan.Core10.Handles.CommandBuffer'+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'+cmdNextSubpass :: forall io+                . (MonadIO io)+               => -- | @commandBuffer@ is the command buffer in which to record the command.+                  CommandBuffer+               -> -- | @contents@ specifies how the commands in the next subpass will be+                  -- provided, in the same fashion as the corresponding parameter of+                  -- 'cmdBeginRenderPass'.+                  SubpassContents+               -> io ()+cmdNextSubpass commandBuffer contents = liftIO $ do+  let vkCmdNextSubpassPtr = pVkCmdNextSubpass (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdNextSubpassPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdNextSubpass is null" Nothing Nothing+  let vkCmdNextSubpass' = mkVkCmdNextSubpass vkCmdNextSubpassPtr+  traceAroundEvent "vkCmdNextSubpass" (vkCmdNextSubpass' (commandBufferHandle (commandBuffer)) (contents))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdEndRenderPass+  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()++-- | vkCmdEndRenderPass - End the current render pass+--+-- = Description+--+-- Ending a render pass instance performs any multisample resolve+-- operations on the final subpass.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdEndRenderPass-None-00910# The current subpass index+--     /must/ be equal to the number of subpasses in the render pass minus+--     one+--+-- -   #VUID-vkCmdEndRenderPass-None-02351# This command /must/ not be+--     recorded when transform feedback is active+--+-- -   #VUID-vkCmdEndRenderPass-None-06170# The current render pass+--     instance /must/ not have been begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdEndRenderPass-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdEndRenderPass-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-vkCmdEndRenderPass-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdEndRenderPass-renderpass# This command /must/ only be+--     called inside of a render pass instance+--+-- -   #VUID-vkCmdEndRenderPass-bufferlevel# @commandBuffer@ /must/ be a+--     primary 'Vulkan.Core10.Handles.CommandBuffer'+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdEndRenderPass :: forall io+                  . (MonadIO io)+                 => -- | @commandBuffer@ is the command buffer in which to end the current render+                    -- pass instance.+                    CommandBuffer+                 -> io ()+cmdEndRenderPass commandBuffer = liftIO $ do+  let vkCmdEndRenderPassPtr = pVkCmdEndRenderPass (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdEndRenderPassPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRenderPass is null" Nothing Nothing+  let vkCmdEndRenderPass' = mkVkCmdEndRenderPass vkCmdEndRenderPassPtr+  traceAroundEvent "vkCmdEndRenderPass" (vkCmdEndRenderPass' (commandBufferHandle (commandBuffer)))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdExecuteCommands+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()++-- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary+-- command buffer+--+-- = Description+--+-- If any element of @pCommandBuffers@ was not recorded with the+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+-- flag, and it was recorded into any other primary command buffer which is+-- currently in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable or recording state>,+-- that primary command buffer becomes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00088# Each element of+--     @pCommandBuffers@ /must/ have been allocated with a @level@ of+--     'Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00089# Each element of+--     @pCommandBuffers@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00091# If any element of+--     @pCommandBuffers@ was not recorded with the+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+--     flag, it /must/ not be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00092# If any element of+--     @pCommandBuffers@ was not recorded with the+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+--     flag, it /must/ not have already been recorded to @commandBuffer@+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00093# If any element of+--     @pCommandBuffers@ was not recorded with the+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+--     flag, it /must/ not appear more than once in @pCommandBuffers@+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00094# Each element of+--     @pCommandBuffers@ /must/ have been allocated from a+--     'Vulkan.Core10.Handles.CommandPool' that was created for the same+--     queue family as the 'Vulkan.Core10.Handles.CommandPool' from which+--     @commandBuffer@ was allocated+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00096# If+--     'cmdExecuteCommands' is being called within a render pass instance,+--     each element of @pCommandBuffers@ /must/ have been recorded with the+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00099# If+--     'cmdExecuteCommands' is being called within a render pass instance,+--     and any element of @pCommandBuffers@ was recorded with+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@framebuffer@+--     not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', that+--     'Vulkan.Core10.Handles.Framebuffer' /must/ match the+--     'Vulkan.Core10.Handles.Framebuffer' used in the current render pass+--     instance+--+-- -   #VUID-vkCmdExecuteCommands-contents-06018# If 'cmdExecuteCommands'+--     is being called within a render pass instance begun with+--     'cmdBeginRenderPass', its @contents@ parameter /must/ have been set+--     to+--     'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06019# If+--     'cmdExecuteCommands' is being called within a render pass instance+--     begun with 'cmdBeginRenderPass', each element of @pCommandBuffers@+--     /must/ have been recorded with+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@subpass@+--     set to the index of the subpass which the given command buffer will+--     be executed in+--+-- -   #VUID-vkCmdExecuteCommands-pBeginInfo-06020# If 'cmdExecuteCommands'+--     is being called within a render pass instance begun with+--     'cmdBeginRenderPass', the render passes specified in the+--     @pBeginInfo->pInheritanceInfo->renderPass@ members of the+--     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands used to+--     begin recording each element of @pCommandBuffers@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+--     with the current render pass+--+-- -   #VUID-vkCmdExecuteCommands-pNext-02865# If 'cmdExecuteCommands' is+--     being called within a render pass instance that included+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'+--     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of+--     @pCommandBuffers@ /must/ have been recorded with+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'+--     in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'+--+-- -   #VUID-vkCmdExecuteCommands-pNext-02866# If 'cmdExecuteCommands' is+--     being called within a render pass instance that included+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'+--     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of+--     @pCommandBuffers@ /must/ have been recorded with+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@transform@+--     identical to+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@+--+-- -   #VUID-vkCmdExecuteCommands-pNext-02867# If 'cmdExecuteCommands' is+--     being called within a render pass instance that included+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'+--     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of+--     @pCommandBuffers@ /must/ have been recorded with+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@renderArea@+--     identical to 'RenderPassBeginInfo'::@renderArea@+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00100# If+--     'cmdExecuteCommands' is not being called within a render pass+--     instance, each element of @pCommandBuffers@ /must/ not have been+--     recorded with the+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+--+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00101# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>+--     feature is not enabled, @commandBuffer@ /must/ not have any queries+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+--+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00102# If @commandBuffer@+--     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,+--     then each element of @pCommandBuffers@ /must/ have been recorded+--     with+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@occlusionQueryEnable@+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE'+--+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00103# If @commandBuffer@+--     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,+--     then each element of @pCommandBuffers@ /must/ have been recorded+--     with+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@queryFlags@+--     having all bits set that are set for the query+--+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00104# If @commandBuffer@+--     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+--     query+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,+--     then each element of @pCommandBuffers@ /must/ have been recorded+--     with+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@pipelineStatistics@+--     having all bits set that are set in the+--     'Vulkan.Core10.Handles.QueryPool' the query uses+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00105# Each element of+--     @pCommandBuffers@ /must/ not begin any query types that are+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+--     in @commandBuffer@+--+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-01820# If @commandBuffer@+--     is a protected command buffer, then each element of+--     @pCommandBuffers@ /must/ be a protected command buffer+--+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-01821# If @commandBuffer@+--     is an unprotected command buffer, then each element of+--     @pCommandBuffers@ /must/ be an unprotected command buffer+--+-- -   #VUID-vkCmdExecuteCommands-None-02286# This command /must/ not be+--     recorded when transform feedback is active+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06021# If+--     @pCommandBuffers@ contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     there /must/ be no action or synchronization commands between that+--     render pass instance and any render pass instance that resumes it+--+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06022# If+--     @pCommandBuffers@ contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     there /must/ be no render pass instances between that render pass+--     instance and any render pass instance that resumes it+--+-- -   #VUID-vkCmdExecuteCommands-variableSampleLocations-06023# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>+--     limit is not supported, and any element of @pCommandBuffers@+--     contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     where a graphics pipeline has been bound, any pipelines bound in the+--     render pass instance that resumes it, or any subsequent render pass+--     instances that resume from that one and so on, /must/ use the same+--     sample locations+--+-- -   #VUID-vkCmdExecuteCommands-flags-06024# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     its+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@flags@+--     parameter /must/ have included+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR'+--+-- -   #VUID-vkCmdExecuteCommands-pBeginInfo-06025# If 'cmdExecuteCommands'+--     is being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the render passes specified in the+--     @pBeginInfo->pInheritanceInfo->renderPass@ members of the+--     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands used to+--     begin recording each element of @pCommandBuffers@ /must/ be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdExecuteCommands-flags-06026# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the @flags@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@flags@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     excluding+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR'+--+-- -   #VUID-vkCmdExecuteCommands-colorAttachmentCount-06027# If+--     'cmdExecuteCommands' is being called within a render pass instance+--     begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the @colorAttachmentCount@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--+-- -   #VUID-vkCmdExecuteCommands-imageView-06028# If 'cmdExecuteCommands'+--     is being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     if the @imageView@ member of an element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding+--     element of the @pColorAttachmentFormats@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the format used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-pDepthAttachment-06029# If+--     'cmdExecuteCommands' is being called within a render pass instance+--     begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     if the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->imageView@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+--     @depthAttachmentFormat@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the format used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-pStencilAttachment-06030# If+--     'cmdExecuteCommands' is being called within a render pass instance+--     begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     if the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->imageView@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+--     @stencilAttachmentFormat@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the format used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-viewMask-06031# If 'cmdExecuteCommands'+--     is being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the @viewMask@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--+-- -   #VUID-vkCmdExecuteCommands-pNext-06032# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure, if the @imageView@ member of an element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding+--     element of the @pColorAttachmentSamples@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the sample count used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-pNext-06033# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure, if the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->imageView@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+--     @depthStencilAttachmentSamples@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the sample count used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-pNext-06034# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure, if the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->imageView@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the+--     @depthStencilAttachmentSamples@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure included in the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@+--     used to begin recording each element of @pCommandBuffers@ /must/ be+--     equal to the sample count used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-pNext-06035# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not+--     include a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure, if the @imageView@ member of an element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@+--     /must/ be equal to the sample count used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-pNext-06036# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not+--     include a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure, if the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->imageView@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@+--     /must/ be equal to the sample count used to create that image view+--+-- -   #VUID-vkCmdExecuteCommands-pNext-06037# If 'cmdExecuteCommands' is+--     being called within a render pass instance begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and the @pNext@ chain of+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not+--     include a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     structure, if the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->imageView@+--     parameter to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@+--     /must/ be equal to the sample count used to create that image view -- -- == Valid Usage (Implicit) --
src/Vulkan/Core10/Device.hs view
@@ -110,6 +110,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (PhysicalDeviceDeviceMemoryReportFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)@@ -758,6 +759,7 @@ --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV', --     'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT', --     'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeaturesKHR', --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT', --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',@@ -919,6 +921,7 @@   getNext DeviceCreateInfo{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceRGBA10X6FormatsFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeaturesKHR = Just f
src/Vulkan/Core10/DeviceInitialization.hs view
@@ -1292,7 +1292,7 @@ -- -- Implicit layers /must/ be disabled if they do not support a version at -- least as high as @apiVersion@. See the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#LoaderAndLayerInterface Vulkan Loader Specification and Architecture Overview>+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#LoaderInterfaceArchitecture “Architecture of the Vulkan Loader Interfaces”> -- document for additional information. -- -- Note
src/Vulkan/Core10/Enums/AttachmentLoadOp.hs view
@@ -23,7 +23,8 @@ -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'Vulkan.Core10.Pass.AttachmentDescription',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR' newtype AttachmentLoadOp = AttachmentLoadOp Int32   deriving newtype (Eq, Ord, Storable, Zero) 
src/Vulkan/Core10/Enums/AttachmentStoreOp.hs view
@@ -2,7 +2,7 @@ -- No documentation found for Chapter "AttachmentStoreOp" module Vulkan.Core10.Enums.AttachmentStoreOp  (AttachmentStoreOp( ATTACHMENT_STORE_OP_STORE                                                                 , ATTACHMENT_STORE_OP_DONT_CARE-                                                                , ATTACHMENT_STORE_OP_NONE_EXT+                                                                , ATTACHMENT_STORE_OP_NONE_KHR                                                                 , ..                                                                 )) where @@ -30,7 +30,8 @@ -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'Vulkan.Core10.Pass.AttachmentDescription',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR' newtype AttachmentStoreOp = AttachmentStoreOp Int32   deriving newtype (Eq, Ord, Storable, Zero) @@ -49,14 +50,14 @@ -- For attachments with a color format, this uses the access type -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'. pattern ATTACHMENT_STORE_OP_DONT_CARE = AttachmentStoreOp 1--- | 'ATTACHMENT_STORE_OP_NONE_EXT' specifies the contents within the render--- area are not modified after rendering. However, if the attachment was--- written to during the render pass, the contents of the attachment will--- be undefined inside the render area.-pattern ATTACHMENT_STORE_OP_NONE_EXT  = AttachmentStoreOp 1000301000+-- | 'ATTACHMENT_STORE_OP_NONE_KHR' specifies the contents within the render+-- area are not accessed by the store operation. However, if the attachment+-- was written to during the render pass, the contents of the attachment+-- will be undefined inside the render area.+pattern ATTACHMENT_STORE_OP_NONE_KHR  = AttachmentStoreOp 1000301000 {-# complete ATTACHMENT_STORE_OP_STORE,              ATTACHMENT_STORE_OP_DONT_CARE,-             ATTACHMENT_STORE_OP_NONE_EXT :: AttachmentStoreOp #-}+             ATTACHMENT_STORE_OP_NONE_KHR :: AttachmentStoreOp #-}  conNameAttachmentStoreOp :: String conNameAttachmentStoreOp = "AttachmentStoreOp"@@ -68,7 +69,7 @@ showTableAttachmentStoreOp =   [ (ATTACHMENT_STORE_OP_STORE    , "STORE")   , (ATTACHMENT_STORE_OP_DONT_CARE, "DONT_CARE")-  , (ATTACHMENT_STORE_OP_NONE_EXT , "NONE_EXT")+  , (ATTACHMENT_STORE_OP_NONE_KHR , "NONE_KHR")   ]  instance Show AttachmentStoreOp where
src/Vulkan/Core10/Enums/Format.hs view
@@ -270,6 +270,7 @@ -- 'Vulkan.Core10.Pass.AttachmentDescription', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2', -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR', -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo', -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV', -- 'Vulkan.Core10.Image.ImageCreateInfo',@@ -278,6 +279,7 @@ -- 'Vulkan.Core10.ImageView.ImageViewCreateInfo', -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2', -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR', -- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT', -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo', -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',
src/Vulkan/Core10/Enums/ImageLayout.hs view
@@ -73,6 +73,9 @@ -- 'Vulkan.Core10.Image.ImageCreateInfo', -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier', -- 'Vulkan.Extensions.VK_KHR_synchronization2.ImageMemoryBarrier2KHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR', -- 'Vulkan.Extensions.VK_KHR_copy_commands2.ResolveImageInfo2KHR', -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.cmdBindInvocationMaskHUAWEI', -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',
src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs view
@@ -19,6 +19,8 @@                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR+                                                                           , PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT+                                                                           , PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR                                                                            , PIPELINE_CREATE_DISPATCH_BASE_BIT                                                                            , PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT                                                                            , ..@@ -151,6 +153,14 @@ -- -   'PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV' specifies that the --     pipeline is allowed to use @OpTraceRayMotionNV@. --+-- -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--     specifies that the pipeline will be used with a fragment shading+--     rate attachment.+--+-- -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--     specifies that the pipeline will be used with a fragment density map+--     attachment.+-- -- It is valid to set both 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' and -- 'PIPELINE_CREATE_DERIVATIVE_BIT'. This allows a pipeline to be both a -- parent and possibly a child in a pipeline hierarchy. See@@ -200,43 +210,56 @@ pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00008000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR" pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00004000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"+pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PipelineCreateFlagBits 0x00400000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"+pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR =+  PipelineCreateFlagBits 0x00200000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"-pattern PIPELINE_CREATE_DISPATCH_BASE_BIT                           = PipelineCreateFlagBits 0x00000010+pattern PIPELINE_CREATE_DISPATCH_BASE_BIT                = PipelineCreateFlagBits 0x00000010 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"-pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT            = PipelineCreateFlagBits 0x00000008+pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = PipelineCreateFlagBits 0x00000008  conNamePipelineCreateFlagBits :: String conNamePipelineCreateFlagBits = "PipelineCreateFlagBits"  enumPrefixPipelineCreateFlagBits :: String-enumPrefixPipelineCreateFlagBits = "PIPELINE_CREATE_"+enumPrefixPipelineCreateFlagBits = "PIPELINE_"  showTablePipelineCreateFlagBits :: [(PipelineCreateFlagBits, String)] showTablePipelineCreateFlagBits =-  [ (PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                 , "DISABLE_OPTIMIZATION_BIT")-  , (PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                    , "ALLOW_DERIVATIVES_BIT")-  , (PIPELINE_CREATE_DERIVATIVE_BIT                           , "DERIVATIVE_BIT")-  , (PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV          , "RAY_TRACING_ALLOW_MOTION_BIT_NV")-  , (PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT          , "EARLY_RETURN_ON_FAILURE_BIT_EXT")-  , (PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, "FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT")-  , (PIPELINE_CREATE_LIBRARY_BIT_KHR                          , "LIBRARY_BIT_KHR")-  , (PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                 , "INDIRECT_BINDABLE_BIT_NV")-  , (PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR , "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR")-  , (PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR               , "CAPTURE_STATISTICS_BIT_KHR")-  , (PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                     , "DEFER_COMPILE_BIT_NV")+  [ (PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                 , "CREATE_DISABLE_OPTIMIZATION_BIT")+  , (PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                    , "CREATE_ALLOW_DERIVATIVES_BIT")+  , (PIPELINE_CREATE_DERIVATIVE_BIT                           , "CREATE_DERIVATIVE_BIT")+  , (PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV          , "CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV")+  , (PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT          , "CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT")+  , (PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, "CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT")+  , (PIPELINE_CREATE_LIBRARY_BIT_KHR                          , "CREATE_LIBRARY_BIT_KHR")+  , (PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                 , "CREATE_INDIRECT_BINDABLE_BIT_NV")+  , (PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR , "CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR")+  , (PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR               , "CREATE_CAPTURE_STATISTICS_BIT_KHR")+  , (PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                     , "CREATE_DEFER_COMPILE_BIT_NV")   , ( PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR-    , "RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"+    , "CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"     )-  , (PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR    , "RAY_TRACING_SKIP_AABBS_BIT_KHR")-  , (PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR, "RAY_TRACING_SKIP_TRIANGLES_BIT_KHR")+  , (PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR    , "CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR")+  , (PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR, "CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR")   , ( PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR-    , "RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"+    , "CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"     )-  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR       , "RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR")-  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR")-  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR    , "RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR")-  , (PIPELINE_CREATE_DISPATCH_BASE_BIT                              , "DISPATCH_BASE_BIT")-  , (PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT               , "VIEW_INDEX_FROM_DEVICE_INDEX_BIT")+  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, "CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR")+  , ( PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR+    , "CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"+    )+  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, "CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR")+  , ( PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT+    , "RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"+    )+  , ( PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR+    , "RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"+    )+  , (PIPELINE_CREATE_DISPATCH_BASE_BIT               , "CREATE_DISPATCH_BASE_BIT")+  , (PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, "CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT")   ]  instance Show PipelineCreateFlagBits where
src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs view
@@ -191,7 +191,7 @@ -- stage of the pipeline where the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment> -- or--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-attachment shading rate image>+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image> -- is read to determine the fragment shading rate for portions of a -- rasterized primitive. pattern PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits 0x00400000
src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs view
@@ -20,7 +20,7 @@ type RenderPassCreateFlags = RenderPassCreateFlagBits  -- | VkRenderPassCreateFlagBits - Bitmask specifying additional properties of--- a renderpass+-- a render pass -- -- = See Also --@@ -30,7 +30,7 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM' specifies that the created--- renderpass is compatible with+-- render pass is compatible with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>. pattern RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = RenderPassCreateFlagBits 0x00000002 
src/Vulkan/Core10/Enums/SampleCountFlagBits.hs view
@@ -33,6 +33,8 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'Vulkan.Core10.Pass.AttachmentDescription', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR', -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV', -- 'Vulkan.Core10.Image.ImageCreateInfo', -- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
src/Vulkan/Core10/Enums/StructureType.hs view
@@ -407,6 +407,15 @@                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV                                                         , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP+                                                        , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX+                                                        , STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD+                                                        , STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT+                                                        , STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR+                                                        , STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR+                                                        , STRUCTURE_TYPE_RENDERING_INFO_KHR                                                         , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD                                                         , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX                                                         , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX@@ -592,6 +601,7 @@ -- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2', -- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD', -- 'Vulkan.CStruct.Extends.BaseInStructure', -- 'Vulkan.CStruct.Extends.BaseOutStructure', -- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',@@ -627,6 +637,7 @@ -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT', -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo', -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR', -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV', -- 'Vulkan.Extensions.VK_KHR_synchronization2.CommandBufferSubmitInfoKHR', -- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo',@@ -804,6 +815,7 @@ -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryZirconHandlePropertiesFUCHSIA', -- 'Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT', -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX', -- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeCreateInfoVALVE', -- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceConfigurationAcquireInfoINTEL', -- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionKHR',@@ -846,6 +858,7 @@ -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT', -- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties', -- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeaturesKHR', -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',@@ -1013,6 +1026,7 @@ -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo', -- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV', -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT', -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',@@ -1055,6 +1069,10 @@ -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo', -- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT', -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR', -- 'Vulkan.Extensions.VK_KHR_copy_commands2.ResolveImageInfo2KHR', -- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT', -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',@@ -1985,6 +2003,24 @@ pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = StructureType 1000050000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP" pattern STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = StructureType 1000049000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"+pattern STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX    = StructureType 1000044009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"+pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD          = StructureType 1000044008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"+pattern STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = StructureType 1000044007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"+pattern STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = StructureType 1000044006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = StructureType 1000044004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = StructureType 1000044003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR        = StructureType 1000044002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR"+pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR             = StructureType 1000044001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_INFO_KHR"+pattern STRUCTURE_TYPE_RENDERING_INFO_KHR                        = StructureType 1000044000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD" pattern STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD  = StructureType 1000041000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"@@ -2676,6 +2712,15 @@              STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,              STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,+             STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,+             STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD,+             STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,+             STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,+             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR,+             STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR,+             STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR,+             STRUCTURE_TYPE_RENDERING_INFO_KHR,              STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,              STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,              STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,@@ -3448,12 +3493,25 @@     , "PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"     )   , (STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP, "STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP")-  , (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD , "TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD")-  , (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX        , "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX")-  , (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX               , "IMAGE_VIEW_HANDLE_INFO_NVX")-  , (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX                       , "CU_LAUNCH_INFO_NVX")-  , (STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX              , "CU_FUNCTION_CREATE_INFO_NVX")-  , (STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX                , "CU_MODULE_CREATE_INFO_NVX")+  , (STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX   , "MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX")+  , (STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD         , "ATTACHMENT_SAMPLE_COUNT_INFO_AMD")+  , ( STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT+    , "RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR+    , "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"+    )+  , (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR , "COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR, "PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR")+  , (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR            , "PIPELINE_RENDERING_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR                 , "RENDERING_ATTACHMENT_INFO_KHR")+  , (STRUCTURE_TYPE_RENDERING_INFO_KHR                            , "RENDERING_INFO_KHR")+  , (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD      , "TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD")+  , (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX             , "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX")+  , (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX                    , "IMAGE_VIEW_HANDLE_INFO_NVX")+  , (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX                            , "CU_LAUNCH_INFO_NVX")+  , (STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX                   , "CU_FUNCTION_CREATE_INFO_NVX")+  , (STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX                     , "CU_MODULE_CREATE_INFO_NVX")   , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT     , "PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"     )
src/Vulkan/Core10/FundamentalTypes.hs view
@@ -192,6 +192,7 @@ -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV', -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR', -- 'Rect2D', 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR', -- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT', -- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT', -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',@@ -332,6 +333,7 @@ -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV', -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', -- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR', -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT', -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor',@@ -411,6 +413,7 @@ -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV', -- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX', -- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL', -- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceValueDataINTEL', -- 'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',@@ -441,6 +444,7 @@ -- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT', -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeaturesKHR', -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
src/Vulkan/Core10/Handles.hs view
@@ -514,6 +514,7 @@ -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2', -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR>, -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',@@ -580,6 +581,7 @@ -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdEndRenderPass2', -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdEndRenderingKHR', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR>, -- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands',@@ -868,6 +870,9 @@ -- 'Vulkan.Core10.Pass.FramebufferCreateInfo', -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX', -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>, -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.cmdBindInvocationMaskHUAWEI', -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',
src/Vulkan/Core10/Image.hs view
@@ -1373,6 +1373,10 @@ --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo', --     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo', --     'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileEXT VkVideoEncodeH265ProfileEXT>, --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>, --     or --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
src/Vulkan/Core10/ImageView.hs view
@@ -1031,7 +1031,7 @@ --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', --     the @usage@ member of the --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'---     instance /must/ not include any bits that were not set in the+--     structure /must/ not include any bits that were not set in the --     @usage@ member of the --     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo' --     structure used to create @image@@@ -1118,6 +1118,10 @@ --     'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT', --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo', --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileEXT VkVideoEncodeH265ProfileEXT>, --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>, --     or --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
src/Vulkan/Core10/Pass.hs view
@@ -1020,8 +1020,8 @@ -- not read from the corresponding input attachment index. Fragment shaders -- /can/ use subpass input variables to access the contents of an input -- attachment at the fragment’s (x, y, layer) framebuffer coordinates.--- Input attachments /must/ not be used by any subpasses within a--- renderpass that enables+-- Input attachments /must/ not be used by any subpasses within a render+-- pass that enables -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>. -- -- Each element of the @pColorAttachments@ array corresponds to an output@@ -2008,7 +2008,7 @@ -- -- Other than the exceptions listed below, applications /must/ ensure that -- all accesses to memory that backs image subresources used as attachments--- in a given renderpass instance either happen-before the+-- in a given render pass instance either happen-before the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops load operations> -- for those attachments, or happen-after the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops store operations>@@ -2058,79 +2058,88 @@ -- -- == Valid Usage ----- -   #VUID-VkFramebufferCreateInfo-attachmentCount-00876#---     @attachmentCount@ /must/ be equal to the attachment count specified---     in @renderPass@+-- -   #VUID-VkFramebufferCreateInfo-attachmentCount-00876# If @renderpass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @attachmentCount@+--     /must/ be equal to the attachment count specified in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-flags-02778# If @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-flags-02778# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ does not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     and @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid --     pointer to an array of @attachmentCount@ valid --     'Vulkan.Core10.Handles.ImageView' handles ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-00877# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-00877# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a color attachment or --     resolve attachment by @renderPass@ /must/ have been created with a --     @usage@ value including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02633# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02633# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a depth\/stencil --     attachment by @renderPass@ /must/ have been created with a @usage@ --     value including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02634# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02634# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a depth\/stencil --     resolve attachment by @renderPass@ /must/ have been created with a --     @usage@ value including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-00879# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-00879# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ does not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input attachment --     by @renderPass@ /must/ have been created with a @usage@ value --     including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02552# Each element of+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02552# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', each element of --     @pAttachments@ that is used as a fragment density map attachment by --     @renderPass@ /must/ not have been created with a @flags@ value --     including --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02553# If @renderPass@ has---     a fragment density map attachment and+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02553# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @renderPass@ has a+--     fragment density map attachment, and --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages non-subsample image feature> --     is not enabled, each element of @pAttachments@ /must/ have been --     created with a @flags@ value including --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' --     unless that element is the fragment density map attachment ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-00880# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-00880# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ /must/ have been created with a --     'Vulkan.Core10.Enums.Format.Format' value that matches the --     'Vulkan.Core10.Enums.Format.Format' specified by the corresponding --     'AttachmentDescription' in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-00881# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-00881# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ /must/ have been created with a --     @samples@ value that matches the @samples@ value specified by the --     corresponding 'AttachmentDescription' in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04533# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04533# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input, color,@@ -2138,7 +2147,8 @@ --     been created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@width@ --     greater than or equal to @width@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04534# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04534# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input, color,@@ -2146,7 +2156,8 @@ --     been created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@height@ --     greater than or equal to @height@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04535# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04535# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input, color,@@ -2155,40 +2166,46 @@ --     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@subresourceRange.layerCount@ --     greater than or equal to @layers@ ----- -   #VUID-VkFramebufferCreateInfo-renderPass-04536# If @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-04536# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was --     specified with non-zero view masks, each element of @pAttachments@ --     that is used as an input, color, resolve, or depth\/stencil --     attachment by @renderPass@ /must/ have a @layerCount@ greater than --     the index of the most significant bit set in any of those view masks ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02746# If @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02746# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was --     specified with non-zero view masks, each element of @pAttachments@ --     that is referenced by @fragmentDensityMapAttachment@ /must/ have a --     @layerCount@ equal to @1@ or greater than the index of the most --     significant bit set in any of those view masks ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02747# If @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02747# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was --     not specified with non-zero view masks, each element of --     @pAttachments@ that is referenced by @fragmentDensityMapAttachment@ --     /must/ have a @layerCount@ equal to @1@ ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02555# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02555# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is referenced by --     @fragmentDensityMapAttachment@ /must/ have a width at least as large --     as --     \(\left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02556# If @flags@ does---     not include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02556# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is referenced by --     @fragmentDensityMapAttachment@ /must/ have a height at least as --     large as --     \(\left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-flags-04537# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04537# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     and @renderPass@ was specified with non-zero view masks, each@@ -2198,7 +2215,8 @@ --     greater than the index of the most significant bit set in any of --     those view masks ----- -   #VUID-VkFramebufferCreateInfo-flags-04538# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04538# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     and @renderPass@ was not specified with non-zero view masks, each@@ -2207,7 +2225,8 @@ --     by @renderPass@ /must/ have a @layerCount@ that is either @1@, or --     greater than @layers@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04539# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04539# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is used as a@@ -2218,7 +2237,8 @@ --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR' --     which references that attachment ----- -   #VUID-VkFramebufferCreateInfo-flags-04540# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04540# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is used as a@@ -2246,23 +2266,24 @@ -- -- -   #VUID-VkFramebufferCreateInfo-width-00886# @width@ /must/ be less --     than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferWidth@+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth> -- -- -   #VUID-VkFramebufferCreateInfo-height-00887# @height@ /must/ be --     greater than @0@ -- -- -   #VUID-VkFramebufferCreateInfo-height-00888# @height@ /must/ be less --     than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight> -- -- -   #VUID-VkFramebufferCreateInfo-layers-00889# @layers@ /must/ be --     greater than @0@ -- -- -   #VUID-VkFramebufferCreateInfo-layers-00890# @layers@ /must/ be less --     than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferLayers@+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers> ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02531# If @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02531# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was --     specified with non-zero view masks, @layers@ /must/ be @1@ -- -- -   #VUID-VkFramebufferCreateInfo-pAttachments-00891# If @flags@ does@@ -2278,45 +2299,50 @@ -- -- -   #VUID-VkFramebufferCreateInfo-flags-03190# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',---     the @pNext@ chain /must/ include an instance of+--     the @pNext@ chain /must/ include a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+--     structure -- -- -   #VUID-VkFramebufferCreateInfo-flags-03191# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',---     the @attachmentImageInfoCount@ member of an instance of+--     the @attachmentImageInfoCount@ member of a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'---     in the @pNext@ chain /must/ be equal to either zero or+--     structure in the @pNext@ chain /must/ be equal to either zero or --     @attachmentCount@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04541# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04541# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @width@ member of any element of the @pAttachmentImageInfos@---     member of an instance of+--     member of a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'---     in the @pNext@ chain that is used as an input, color, resolve or---     depth\/stencil attachment in @renderPass@ /must/ be greater than or---     equal to @width@+--     structure in the @pNext@ chain that is used as an input, color,+--     resolve or depth\/stencil attachment in @renderPass@ /must/ be+--     greater than or equal to @width@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04542# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04542# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @height@ member of any element of the @pAttachmentImageInfos@---     member of an instance of+--     member of a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'---     in the @pNext@ chain that is used as an input, color, resolve or---     depth\/stencil attachment in @renderPass@ /must/ be greater than or---     equal to @height@+--     structure in the @pNext@ chain that is used as an input, color,+--     resolve or depth\/stencil attachment in @renderPass@ /must/ be+--     greater than or equal to @height@ ----- -   #VUID-VkFramebufferCreateInfo-flags-03196# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03196# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @width@ member of any element of the @pAttachmentImageInfos@---     member of an instance of+--     member of a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'---     in the @pNext@ chain that is referenced by+--     structure in the @pNext@ chain that is referenced by --     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@ --     in @renderPass@ /must/ be greater than or equal to --     \(\left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-flags-03197# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03197# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @height@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2326,12 +2352,13 @@ --     in @renderPass@ /must/ be greater than or equal to --     \(\left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-flags-04543# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04543# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @width@ member of any element of the @pAttachmentImageInfos@---     member of an instance of+--     member of a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'---     in the @pNext@ chain that is used as a+--     structure in the @pNext@ chain that is used as a --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment> --     /must/ be greater than or equal to ⌈@width@ \/ @texelWidth@⌉, where --     @texelWidth@ is the largest value of@@ -2339,12 +2366,13 @@ --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR' --     which references that attachment ----- -   #VUID-VkFramebufferCreateInfo-flags-04544# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04544# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @height@ member of any element of the @pAttachmentImageInfos@---     member of an instance of+--     member of a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'---     in the @pNext@ chain that is used as a+--     structure in the @pNext@ chain that is used as a --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment> --     /must/ be greater than or equal to ⌈@height@ \/ @texelHeight@⌉, --     where @texelHeight@ is the largest value of@@ -2352,16 +2380,18 @@ --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR' --     which references that attachment ----- -   #VUID-VkFramebufferCreateInfo-flags-04545# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04545# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @layerCount@ member of any element of the---     @pAttachmentImageInfos@ member of an instance of+--     @pAttachmentImageInfos@ member of a --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'---     in the @pNext@ chain that is used as a+--     structure in the @pNext@ chain that is used as a --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment> --     /must/ be either @1@, or greater than or equal to @layers@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04587# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04587# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     and @renderPass@ was specified with non-zero view masks, each --     element of @pAttachments@ that is used as a@@ -2370,8 +2400,9 @@ --     greater than the index of the most significant bit set in any of --     those view masks ----- -   #VUID-VkFramebufferCreateInfo-renderPass-03198# If multiview is---     enabled for @renderPass@, and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-renderPass-03198# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', multiview is enabled+--     for @renderPass@, and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @layerCount@ member of any element of the --     @pAttachmentImageInfos@ member of a@@ -2381,7 +2412,8 @@ --     greater than the maximum bit index set in the view mask in the --     subpasses in which it is used in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-renderPass-04546# If multiview is not+-- -   #VUID-VkFramebufferCreateInfo-renderPass-04546# If @renderpass@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', multiview is not --     enabled for @renderPass@, and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @layerCount@ member of any element of the@@ -2391,7 +2423,8 @@ --     resolve, or depth\/stencil attachment in @renderPass@ /must/ be --     greater than or equal to @layers@ ----- -   #VUID-VkFramebufferCreateInfo-flags-03201# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03201# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2401,7 +2434,8 @@ --     /must/ include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03202# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03202# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2410,7 +2444,8 @@ --     used as a depth\/stencil attachment by @renderPass@ /must/ include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03203# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03203# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2420,7 +2455,8 @@ --     include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03204# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03204# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2429,7 +2465,8 @@ --     used as an input attachment by @renderPass@ /must/ include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03205# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03205# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     at least one element of the @pViewFormats@ member of any element of --     the @pAttachmentImageInfos@ member of a@@ -2445,7 +2482,8 @@ --     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@viewType@ not equal --     to 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D' ----- -   #VUID-VkFramebufferCreateInfo-flags-04548# If @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04548# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a fragment shading@@ -2453,7 +2491,8 @@ --     @usage@ value including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' ----- -   #VUID-VkFramebufferCreateInfo-flags-04549# If @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04549# If @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a
src/Vulkan/Core10/Pipeline.hs view
@@ -126,6 +126,7 @@ import Vulkan.CStruct.Extends (withSomeCStruct) import Vulkan.NamedType ((:::)) import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (AttachmentSampleCountInfoAMD) import Vulkan.Core10.Enums.BlendFactor (BlendFactor) import Vulkan.Core10.Enums.BlendOp (BlendOp) import Vulkan.Core10.FundamentalTypes (Bool32)@@ -147,6 +148,7 @@ import Vulkan.Core10.Enums.FrontFace (FrontFace) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV) import Vulkan.Core10.Enums.LogicOp (LogicOp)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (MultiviewPerViewAttributesInfoNVX) import Vulkan.CStruct.Extends (PeekChain) import Vulkan.CStruct.Extends (PeekChain(..)) import Vulkan.Core10.Handles (Pipeline)@@ -177,6 +179,7 @@ import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags) import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PipelineRenderingCreateInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT) import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)@@ -3690,7 +3693,8 @@ --     shader code /must/ write to a matching output variable, decorated --     with @PrimitiveId@, in all execution paths ----- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00741# If the pipeline is+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06038# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is --     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state> --     the fragment shader /must/ not read from any input attachment that@@ -3719,7 +3723,8 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces> --     chapter ----- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-04890# If the pipeline is+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06039# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is --     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>, --     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with@@ -3728,7 +3733,8 @@ --     @depthWriteEnable@ member of @pDepthStencilState@ /must/ be --     'Vulkan.Core10.FundamentalTypes.FALSE' ----- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-04891# If the pipeline is+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06040# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is --     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>, --     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with@@ -3738,8 +3744,9 @@ --     and @back@ members of @pDepthStencilState@ /must/ be --     'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP' ----- -   #VUID-VkGraphicsPipelineCreateInfo-blendEnable-04717# If the---     pipeline is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06041# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is+--     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>, --     then for each color attachment in the subpass, if the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>@@ -3750,8 +3757,9 @@ --     @pAttachments@ member of @pColorBlendState@ /must/ be --     'Vulkan.Core10.FundamentalTypes.FALSE' ----- -   #VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746# If the---     pipeline is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06042# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is+--     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>, --     and the subpass uses color attachments, the @attachmentCount@ member --     of @pColorBlendState@ /must/ be equal to the @colorAttachmentCount@@@ -3806,22 +3814,25 @@ --     @pMultisampleState@ /must/ be a valid pointer to a valid --     'PipelineMultisampleStateCreateInfo' structure ----- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752# If---     the pipeline is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06043# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is+--     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>, --     and @subpass@ uses a depth\/stencil attachment, @pDepthStencilState@ --     /must/ be a valid pointer to a valid --     'PipelineDepthStencilStateCreateInfo' structure ----- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753# If---     the pipeline is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06044# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is+--     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>, --     and @subpass@ uses color attachments, @pColorBlendState@ /must/ be a --     valid pointer to a valid 'PipelineColorBlendStateCreateInfo' --     structure ----- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-04493# If---     the pipeline is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06045# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is+--     being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>, --     @pColorBlendState->attachmentCount@ /must/ be greater than the index --     of all color attachments that are not@@ -3961,33 +3972,34 @@ --     @pMultisampleState@ /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-VkGraphicsPipelineCreateInfo-subpass-00759# @subpass@ /must/---     be a valid subpass within @renderPass@+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06046# If @renderPass@+--     is a valid renderPass, @subpass@ /must/ be a valid subpass within+--     @renderPass@ ----- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00760# If the pipeline---     is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06047# If @renderPass@+--     is a valid renderPass, the pipeline is being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>, --     and the @renderPass@ has multiview enabled and @subpass@ has more --     than one bit set in the view mask and @multiviewTessellationShader@ --     is not enabled, then @pStages@ /must/ not include tessellation --     shaders ----- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00761# If the pipeline---     is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06048# If @renderPass@+--     is a valid renderPass, the pipeline is being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>, --     and the @renderPass@ has multiview enabled and @subpass@ has more --     than one bit set in the view mask and @multiviewGeometryShader@ is --     not enabled, then @pStages@ /must/ not include a geometry shader ----- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00762# If the pipeline---     is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06049# If @renderPass@+--     is a valid renderPass, the pipeline is being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>, --     and the @renderPass@ has multiview enabled and @subpass@ has more --     than one bit set in the view mask, shaders in the pipeline /must/ --     not write to the @Layer@ built-in output ----- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00763# If the pipeline---     is being created with+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06050# If @renderPass@+--     is a valid renderPass and the pipeline is being created with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>, --     and the @renderPass@ has multiview enabled, then all shaders /must/ --     not include variables decorated with the @Layer@ built-in decoration@@ -4583,6 +4595,120 @@ --     and if @pResolveAttachments@ is not @NULL@, then each resolve --     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' --+-- -   #VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06052# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>+--     feature is not enabled, @renderPass@ /must/ not be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06053# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and either of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::depthAttachmentFormat+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::stencilAttachmentFormat+--     are not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',+--     @pDepthStencilState@ /must/ be a valid pointer to a valid+--     'PipelineDepthStencilStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06054# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::colorAttachmentCount+--     is not equal to @0@, @pColorBlendState@ /must/ be a valid pointer to+--     a valid 'PipelineColorBlendStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06055# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @pColorBlendState->attachmentCount@ /must/ be equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::colorAttachmentCount+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06056# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     the fragment shader /must/ not read from any input attachment+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06057# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     the @viewMask@ member of a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'+--     structure included in the @pNext@ chain is not @0@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-tess multiviewTessellationShader>+--     feature is not enabled, then @pStages@ /must/ not include+--     tessellation shaders+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06058# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     the @viewMask@ member of a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'+--     structure included in the @pNext@ chain is not @0@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-gs multiviewGeometryShader>+--     feature is not enabled, then @pStages@ /must/ not include a geometry+--     shader+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06059# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the @viewMask@ member of a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'+--     structure included in the @pNext@ chain is not @0@, shaders in+--     @pStages@ /must/ not include variables decorated with the @Layer@+--     built-in decoration in their interfaces+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06060# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pColorBlendState->attachmentCount@ /must/ be equal to the+--     @colorAttachmentCount@ member of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'+--     structure included in the @pNext@ chain+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06061# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     fragment shaders in @pStages@ /must/ not include the+--     @InputAttachment@ capability+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06062# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', for+--     each color attachment format defined by the+--     @pColorAttachmentFormats@ member of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR',+--     if its+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential 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-VkGraphicsPipelineCreateInfo-renderPass-06063# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the+--     @pNext@ chain includes+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV',+--     the @colorAttachmentCount@ member of that structure /must/ be equal+--     to the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkGraphicsPipelineCreateInfo-sType-sType# @sType@ /must/ be@@ -4591,12 +4717,15 @@ -- -   #VUID-VkGraphicsPipelineCreateInfo-pNext-pNext# Each @pNext@ member --     of any structure (including this one) in the @pNext@ chain /must/ be --     either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD', --     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX', --     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD', --     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT', --     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT', --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV', --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR', --     or --     'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV' --@@ -4623,7 +4752,8 @@ -- -   #VUID-VkGraphicsPipelineCreateInfo-layout-parameter# @layout@ /must/ --     be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle ----- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter#+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter# If+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', --     @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass' --     handle --@@ -4691,14 +4821,12 @@     multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)   , -- | @pDepthStencilState@ is a pointer to a     -- 'PipelineDepthStencilStateCreateInfo' structure, and is ignored if the-    -- pipeline has rasterization disabled or if the subpass of the render pass-    -- the pipeline is created against does not use a depth\/stencil-    -- attachment.+    -- pipeline has rasterization disabled or if no depth\/stencil attachment+    -- is used.     depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo   , -- | @pColorBlendState@ is a pointer to a 'PipelineColorBlendStateCreateInfo'     -- structure, and is ignored if the pipeline has rasterization disabled or-    -- if the subpass of the render pass the pipeline is created against does-    -- not use any color attachments.+    -- if no color attachments are used.     colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)   , -- | @pDynamicState@ is a pointer to a 'PipelineDynamicStateCreateInfo'     -- structure, and is used to indicate which properties of the pipeline@@ -4710,9 +4838,9 @@     -- pipeline and descriptor sets used with the pipeline.     layout :: PipelineLayout   , -- | @renderPass@ is a handle to a render pass object describing the-    -- environment in which the pipeline will be used; the pipeline /must/ only-    -- be used with an instance of any render pass compatible with the one-    -- provided. See+    -- environment in which the pipeline will be used. The pipeline /must/ only+    -- be used with a render pass instance compatible with the one provided.+    -- See     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>     -- for more information.     renderPass :: RenderPass@@ -4737,6 +4865,9 @@   getNext GraphicsPipelineCreateInfo{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends GraphicsPipelineCreateInfo e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f+    | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f+    | Just Refl <- eqT @e @PipelineRenderingCreateInfoKHR = Just f     | Just Refl <- eqT @e @PipelineFragmentShadingRateEnumStateCreateInfoNV = Just f     | Just Refl <- eqT @e @PipelineFragmentShadingRateStateCreateInfoKHR = Just f     | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f@@ -4806,7 +4937,6 @@     pRasterizationState'' <- ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo ((SomeStruct zero)) (cont . castPtr)     lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''     lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (zero)-    lift $ poke ((p `plusPtr` 112 :: Ptr RenderPass)) (zero)     lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (zero)     lift $ f
src/Vulkan/Core10/Query.hs view
@@ -543,6 +543,10 @@ --     @NULL@ or a pointer to a valid instance of --     'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR', --     'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileEXT VkVideoEncodeH265ProfileEXT>, --     or --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR> --
src/Vulkan/Core10/Queue.hs view
@@ -707,6 +707,40 @@ --     'Vulkan.Core10.FundamentalTypes.TRUE', then each element of the --     @pCommandBuffers@ array /must/ be a protected command buffer --+-- -   #VUID-VkSubmitInfo-pCommandBuffers-06193# If @pCommandBuffers@+--     contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension resumed render pass instances>,+--     they /must/ be suspended by a render pass instance earlier in+--     submission order within @pCommandBuffers@+--+-- -   #VUID-VkSubmitInfo-pCommandBuffers-06014# If @pCommandBuffers@+--     contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     they /must/ be resumed by a render pass instance later in submission+--     order within @pCommandBuffers@+--+-- -   #VUID-VkSubmitInfo-pCommandBuffers-06015# If @pCommandBuffers@+--     contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     there /must/ be no action or synchronization commands between that+--     render pass instance and the render pass instance that resumes it+--+-- -   #VUID-VkSubmitInfo-pCommandBuffers-06016# If @pCommandBuffers@+--     contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     there /must/ be no render pass instances between that render pass+--     instance and the render pass instance that resumes it+--+-- -   #VUID-VkSubmitInfo-variableSampleLocations-06017# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>+--     limit is not supported, and any element of @pCommandBuffers@+--     contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     where a graphics pipeline has been bound, any pipelines bound in the+--     render pass instance that resumes it, or any subsequent render pass+--     instances that resume from that one and so on, /must/ use the same+--     sample locations+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkSubmitInfo-sType-sType# @sType@ /must/ be
src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs view
@@ -329,7 +329,7 @@ -- -- The queue returned by 'getDeviceQueue2' /must/ have the same @flags@ -- value from this structure as that used at device creation time in a--- 'Vulkan.Core10.Device.DeviceQueueCreateInfo' instance. If no matching+-- 'Vulkan.Core10.Device.DeviceQueueCreateInfo' structure. If no matching -- @flags@ were specified at device creation time, then the handle returned -- in @pQueue@ /must/ be @NULL@. --
src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs view
@@ -734,7 +734,7 @@ -- The @deviceMask@ serves several purposes. It is an upper bound on the -- set of physical devices that /can/ be used during the render pass -- instance, and the initial device mask when the render pass instance--- begins. In addition, commands transitioning to the next subpass in the+-- begins. In addition, commands transitioning to the next subpass in a -- render pass instance and commands ending the render pass instance, and, -- accordingly render pass attachment load, store, and resolve operations -- and subpass dependencies corresponding to the render pass instance, are@@ -772,6 +772,24 @@ -- -   #VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908# --     @deviceRenderAreaCount@ /must/ either be zero or equal to the number --     of physical devices in the logical device+--+-- -   #VUID-VkDeviceGroupRenderPassBeginInfo-offset-06166# The @offset.x@+--     member of any element of @pDeviceRenderAreas@ /must/ be greater than+--     or equal to 0+--+-- -   #VUID-VkDeviceGroupRenderPassBeginInfo-offset-06167# The @offset.y@+--     member of any element of @pDeviceRenderAreas@ /must/ be greater than+--     or equal to 0+--+-- -   #VUID-VkDeviceGroupRenderPassBeginInfo-offset-06168# The sum of the+--     @offset.x@ and @extent.width@ members of any element of+--     @pDeviceRenderAreas@ /must/ be less than or equal to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>+--+-- -   #VUID-VkDeviceGroupRenderPassBeginInfo-offset-06169# The sum of the+--     @offset.y@ and @extent.height@ members of any element of+--     @pDeviceRenderAreas@ /must/ be less than or equal to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight> -- -- == Valid Usage (Implicit) --
src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -125,6 +125,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)@@ -711,6 +712,7 @@   getNext PhysicalDeviceFeatures2{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceRGBA10X6FormatsFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeaturesKHR = Just f@@ -1045,6 +1047,10 @@ --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesList2EXT', --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT', --     'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatProperties3KHR',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileEXT VkVideoEncodeH265ProfileEXT>, --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>, --     or --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs view
@@ -30,6 +30,7 @@ -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve VK_KHR_depth_stencil_resolve>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR', -- 'ResolveModeFlags', -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve' newtype ResolveModeFlagBits = ResolveModeFlagBits Flags
src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs view
@@ -549,6 +549,10 @@ -- -   #VUID-vkCmdEndRenderPass2-None-02352# This command /must/ not be --     recorded when transform feedback is active --+-- -   #VUID-vkCmdEndRenderPass2-None-06171# The current render pass+--     instance /must/ not have been begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+-- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdEndRenderPass2-commandBuffer-parameter# @commandBuffer@@@ -1126,12 +1130,13 @@ -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewMasks@ -- has on each corresponding subpass. ----- If an instance of+-- If a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR'--- is included in the @pNext@ chain, @pFragmentShadingRateAttachment@ is--- not @NULL@, and its @attachment@ member is not--- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the identified--- attachment defines a fragment shading rate attachment for that subpass.+-- structure is included in the @pNext@ chain,+-- @pFragmentShadingRateAttachment@ is not @NULL@, and its @attachment@+-- member is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the+-- identified attachment defines a fragment shading rate attachment for+-- that subpass. -- -- == Valid Usage --@@ -1486,12 +1491,12 @@ -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewOffsets@ -- has on each corresponding subpass dependency. ----- If an instance of--- 'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR' is--- included in the @pNext@ chain, @srcStageMask@, @dstStageMask@,--- @srcAccessMask@, and @dstAccessMask@ parameters are ignored. The--- synchronization and access scopes instead are defined by the parameters--- of 'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR'.+-- If a 'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR'+-- structure is included in the @pNext@ chain, @srcStageMask@,+-- @dstStageMask@, @srcAccessMask@, and @dstAccessMask@ parameters are+-- ignored. The synchronization and access scopes instead are defined by+-- the parameters of+-- 'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR'. -- -- == Valid Usage --
src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs view
@@ -417,10 +417,10 @@ -- -   #VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141# If --     the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -429,10 +429,10 @@ -- -   #VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142# If --     the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -556,6 +556,242 @@ --     /must/ have been called in the current command buffer prior to this --     draw command --+-- -   #VUID-vkCmdDrawIndirectCount-imageView-06172# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectCount-imageView-06173# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectCount-imageView-06174# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectCount-imageView-06175# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectCount-imageView-06176# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectCount-imageView-06177# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectCount-viewMask-06178# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06179# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06180# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06181# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06182# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectCount-imageView-06183# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndirectCount-imageView-06184# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndirectCount-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndirectCount-pDepthAttachment-06186# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndirectCount-pDepthAttachment-06189# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06190# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectCount-renderPass-06198# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   #VUID-vkCmdDrawIndirectCount-None-04007# All vertex input bindings --     accessed via vertex input variables declared in the vertex shader --     entry point’s interface /must/ have either valid or@@ -1108,10 +1344,10 @@ -- -   #VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1120,10 +1356,10 @@ -- -   #VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1247,6 +1483,242 @@ --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT' --     /must/ have been called in the current command buffer prior to this --     draw command+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06172# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirectCount-imageView-06173# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirectCount-imageView-06174# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirectCount-imageView-06175# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirectCount-imageView-06176# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirectCount-imageView-06177# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndexedIndirectCount-viewMask-06178# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06180# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06181# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06182# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06183# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06184# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06189# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06190# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04007# All vertex input --     bindings accessed via vertex input variables declared in the vertex
src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs view
@@ -141,7 +141,7 @@ -- 'Vulkan.Core10.Enums.StructureType.StructureType' data FramebufferAttachmentsCreateInfo = FramebufferAttachmentsCreateInfo   { -- | @pAttachmentImageInfos@ is a pointer to an array of-    -- 'FramebufferAttachmentImageInfo' instances, each of which describes a+    -- 'FramebufferAttachmentImageInfo' structures, each of which describes a     -- number of parameters of the corresponding attachment in a render pass     -- instance.     attachmentImageInfos :: Vector FramebufferAttachmentImageInfo }
src/Vulkan/Dynamic.hs view
@@ -312,6 +312,7 @@ import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo) import {-# SOURCE #-} Vulkan.Core10.Pass (RenderPassCreateInfo) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (RenderPassCreateInfo2)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ResolveImageInfo2KHR) import {-# SOURCE #-} Vulkan.Core10.Enums.Result (Result) import {-# SOURCE #-} Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)@@ -1036,6 +1037,8 @@   , pVkSetBufferCollectionImageConstraintsFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pImageConstraintsInfo" ::: Ptr ImageConstraintsInfoFUCHSIA) -> IO Result)   , pVkDestroyBufferCollectionFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())   , pVkGetBufferCollectionPropertiesFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pProperties" ::: Ptr BufferCollectionPropertiesFUCHSIA) -> IO Result)+  , pVkCmdBeginRenderingKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfoKHR)) -> IO ())+  , pVkCmdEndRenderingKHR :: FunPtr (Ptr CommandBuffer_T -> IO ())   }  deriving instance Eq DeviceCmds@@ -1086,7 +1089,7 @@     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr 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)@@ -1463,6 +1466,8 @@   vkSetBufferCollectionImageConstraintsFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkSetBufferCollectionImageConstraintsFUCHSIA"#)   vkDestroyBufferCollectionFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkDestroyBufferCollectionFUCHSIA"#)   vkGetBufferCollectionPropertiesFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetBufferCollectionPropertiesFUCHSIA"#)+  vkCmdBeginRenderingKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBeginRenderingKHR"#)+  vkCmdEndRenderingKHR <- getDeviceProcAddr' handle (Ptr "vkCmdEndRenderingKHR"#)   pure $ DeviceCmds handle     (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)@@ -1820,4 +1825,6 @@     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pImageConstraintsInfo" ::: Ptr ImageConstraintsInfoFUCHSIA) -> IO Result) vkSetBufferCollectionImageConstraintsFUCHSIA)     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyBufferCollectionFUCHSIA)     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pProperties" ::: Ptr BufferCollectionPropertiesFUCHSIA) -> IO Result) vkGetBufferCollectionPropertiesFUCHSIA)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfoKHR)) -> IO ()) vkCmdBeginRenderingKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderingKHR) 
src/Vulkan/Extensions.hs view
@@ -143,6 +143,7 @@                           , module Vulkan.Extensions.VK_KHR_display_swapchain                           , module Vulkan.Extensions.VK_KHR_draw_indirect_count                           , module Vulkan.Extensions.VK_KHR_driver_properties+                          , module Vulkan.Extensions.VK_KHR_dynamic_rendering                           , module Vulkan.Extensions.VK_KHR_external_fence                           , module Vulkan.Extensions.VK_KHR_external_fence_capabilities                           , module Vulkan.Extensions.VK_KHR_external_fence_fd@@ -403,6 +404,7 @@ import Vulkan.Extensions.VK_KHR_display_swapchain import Vulkan.Extensions.VK_KHR_draw_indirect_count import Vulkan.Extensions.VK_KHR_driver_properties+import Vulkan.Extensions.VK_KHR_dynamic_rendering import Vulkan.Extensions.VK_KHR_external_fence import Vulkan.Extensions.VK_KHR_external_fence_capabilities import Vulkan.Extensions.VK_KHR_external_fence_fd
src/Vulkan/Extensions/Dependencies.hs view
@@ -100,6 +100,7 @@ import Vulkan.Extensions.VK_KHR_display (pattern KHR_DISPLAY_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_display_swapchain (pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_driver_properties (pattern KHR_DRIVER_PROPERTIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_dynamic_rendering (pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_external_fence_capabilities (pattern KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_external_fence (pattern KHR_EXTERNAL_FENCE_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_external_fence_fd (pattern KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME)@@ -211,6 +212,7 @@   EXT_DEBUG_MARKER_EXTENSION_NAME              -> [EXT_DEBUG_REPORT_EXTENSION_NAME]   EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME        -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_DYNAMIC_RENDERING_EXTENSION_NAME         -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]   NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME       -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   KHR_MULTIVIEW_EXTENSION_NAME                 -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs view
@@ -89,6 +89,8 @@ --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', --     'Vulkan.Core10.Device.DeviceCreateInfo': --+--     -   'PhysicalDeviceBufferAddressFeaturesEXT'+-- --     -   'PhysicalDeviceBufferDeviceAddressFeaturesEXT' -- -- == New Enum Constants@@ -116,6 +118,8 @@ --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT' -- --     -   'STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT' -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT' --
src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot view
@@ -89,6 +89,8 @@ --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', --     'Vulkan.Core10.Device.DeviceCreateInfo': --+--     -   'PhysicalDeviceBufferAddressFeaturesEXT'+-- --     -   'PhysicalDeviceBufferDeviceAddressFeaturesEXT' -- -- == New Enum Constants@@ -116,6 +118,8 @@ --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT' -- --     -   'STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT' -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT' --
src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs view
@@ -143,7 +143,7 @@ -- -   Revision 2, 2018-05-21 (Vikram Kushwaha) -- --     -   Add new pipeline stage, access flags and limit conditional---         rendering to a subpass or entire renderpass.+--         rendering to a subpass or entire render pass. -- -- = See Also --
src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot view
@@ -143,7 +143,7 @@ -- -   Revision 2, 2018-05-21 (Vikram Kushwaha) -- --     -   Add new pipeline stage, access flags and limit conditional---         rendering to a subpass or entire renderpass.+--         rendering to a subpass or entire render pass. -- -- = See Also --
src/Vulkan/Extensions/VK_EXT_debug_report.hs view
@@ -112,6 +112,8 @@ -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT' --+--     -   'STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT'+-- -- If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1> -- is supported:
src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot view
@@ -112,6 +112,8 @@ -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT' --+--     -   'STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT'+-- -- If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1> -- is supported:
src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs view
@@ -78,6 +78,8 @@ -- -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType': --+--     -   'STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT'+-- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT' -- -- == Version History
src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot view
@@ -78,6 +78,8 @@ -- -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType': --+--     -   'STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT'+-- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT' -- -- == Version History
src/Vulkan/Extensions/VK_EXT_load_store_op_none.hs view
@@ -41,9 +41,8 @@ -- -- == Description ----- This extension incorporates--- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_EXT'--- from @VK_QCOM_render_pass_store_ops@, enabling applications to avoid+-- This extension incorporates 'ATTACHMENT_STORE_OP_NONE_EXT' from+-- @VK_QCOM_render_pass_store_ops@, enabling applications to avoid -- unnecessary synchronization when an attachment is not written during a -- render pass. --@@ -51,10 +50,10 @@ -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_NONE_EXT' is -- introduced to avoid unnecessary synchronization when an attachment is -- not used during a render pass at all. In combination with--- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_EXT',--- this is useful as an alternative to preserve attachments in applications--- that cannot decide if an attachment will be used in a render pass until--- after the necessary pipelines have been created.+-- 'ATTACHMENT_STORE_OP_NONE_EXT', this is useful as an alternative to+-- preserve attachments in applications that cannot decide if an attachment+-- will be used in a render pass until after the necessary pipelines have+-- been created. -- -- == New Enum Constants --@@ -68,7 +67,7 @@ -- -- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp': -----     -   'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_EXT'+--     -   'ATTACHMENT_STORE_OP_NONE_EXT' -- -- == Version History --@@ -89,13 +88,18 @@ -- -- This page is a generated document. Fixes and changes should be made to -- the generator scripts, not directly.-module Vulkan.Extensions.VK_EXT_load_store_op_none  ( EXT_LOAD_STORE_OP_NONE_SPEC_VERSION+module Vulkan.Extensions.VK_EXT_load_store_op_none  ( pattern ATTACHMENT_STORE_OP_NONE_EXT+                                                    , EXT_LOAD_STORE_OP_NONE_SPEC_VERSION                                                     , pattern EXT_LOAD_STORE_OP_NONE_SPEC_VERSION                                                     , EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME                                                     , pattern EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME                                                     ) where  import Data.String (IsString)+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE_KHR))+-- No documentation found for TopLevel "VK_ATTACHMENT_STORE_OP_NONE_EXT"+pattern ATTACHMENT_STORE_OP_NONE_EXT = ATTACHMENT_STORE_OP_NONE_KHR+  type EXT_LOAD_STORE_OP_NONE_SPEC_VERSION = 1 
src/Vulkan/Extensions/VK_EXT_multi_draw.hs view
@@ -571,10 +571,10 @@ -- -   #VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04141# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -583,10 +583,10 @@ -- -   #VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -710,6 +710,242 @@ --     /must/ have been called in the current command buffer prior to this --     draw command --+-- -   #VUID-vkCmdDrawMultiEXT-imageView-06172# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiEXT-imageView-06173# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiEXT-imageView-06174# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiEXT-imageView-06175# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiEXT-imageView-06176# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiEXT-imageView-06177# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiEXT-viewMask-06178# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06180# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06181# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06182# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiEXT-imageView-06183# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawMultiEXT-imageView-06184# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMultiEXT-pDepthAttachment-06186# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMultiEXT-pDepthAttachment-06189# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06190# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiEXT-renderPass-06198# If the current render pass+--     instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-02712# If @commandBuffer@ is a --     protected command buffer, any resource written to by the --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind@@ -1218,10 +1454,10 @@ -- -   #VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04141# If --     the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1230,10 +1466,10 @@ -- -   #VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142# If --     the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1356,6 +1592,242 @@ --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT' --     /must/ have been called in the current command buffer prior to this --     draw command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06172# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiIndexedEXT-imageView-06173# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiIndexedEXT-imageView-06174# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiIndexedEXT-imageView-06175# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiIndexedEXT-imageView-06176# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiIndexedEXT-imageView-06177# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMultiIndexedEXT-viewMask-06178# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06180# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06181# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06182# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06183# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06184# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06189# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06190# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-renderPass-06198# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712# If --     @commandBuffer@ is a protected command buffer, any resource written
src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs view
@@ -169,6 +169,8 @@ -- -- -   Extending 'Vulkan.Core10.Enums.Result.Result': --+--     -   'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'+-- --     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT' -- -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot view
@@ -169,6 +169,8 @@ -- -- -   Extending 'Vulkan.Core10.Enums.Result.Result': --+--     -   'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'+-- --     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT' -- -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs view
@@ -121,18 +121,18 @@ -- -- 1) At what granularity should this state be set? ----- __RESOLVED__: At pipeline bind, with an optional per-renderpass+-- __RESOLVED__: At pipeline bind, with an optional per-render pass -- restriction. -- -- The most natural place to put this state is in the graphics pipeline -- object. Some implementations require it to be known when creating the -- pipeline, and pipeline state is convenient for implementing OpenGL 3.2’s -- glProvokingVertex, which can change the state between draw calls.--- However, some implementations can only change it approximately--- renderpass granularity. To accommodate both, provoking vertex will be--- pipeline state, but implementations can require that only one mode is--- used within a renderpass instance; the renderpass’s mode is chosen--- implicitly when the first pipeline is bound.+-- However, some implementations can only change it approximately render+-- pass granularity. To accommodate both, provoking vertex will be pipeline+-- state, but implementations can require that only one mode is used within+-- a render pass instance; the render pass’s mode is chosen implicitly when+-- the first pipeline is bound. -- -- 2) Does the provoking vertex mode affect the order that vertices are -- written to transform feedback buffers?@@ -338,7 +338,7 @@ data PhysicalDeviceProvokingVertexPropertiesEXT = PhysicalDeviceProvokingVertexPropertiesEXT   { -- | #limits-provokingVertexModePerPipeline# @provokingVertexModePerPipeline@     -- indicates whether the implementation supports graphics pipelines with-    -- different provoking vertex modes within the same renderpass instance.+    -- different provoking vertex modes within the same render pass instance.     provokingVertexModePerPipeline :: Bool   , -- | #limits-transformFeedbackPreservesTriangleFanProvokingVertex#     -- @transformFeedbackPreservesTriangleFanProvokingVertex@ indicates whether@@ -398,8 +398,8 @@ -- -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>--- limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then the all pipelines--- bound within a renderpass instance /must/ have the same+-- limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then all pipelines+-- bound within a render pass instance /must/ have the same -- @provokingVertexMode@. -- -- == Valid Usage
src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot view
@@ -121,18 +121,18 @@ -- -- 1) At what granularity should this state be set? ----- __RESOLVED__: At pipeline bind, with an optional per-renderpass+-- __RESOLVED__: At pipeline bind, with an optional per-render pass -- restriction. -- -- The most natural place to put this state is in the graphics pipeline -- object. Some implementations require it to be known when creating the -- pipeline, and pipeline state is convenient for implementing OpenGL 3.2’s -- glProvokingVertex, which can change the state between draw calls.--- However, some implementations can only change it approximately--- renderpass granularity. To accommodate both, provoking vertex will be--- pipeline state, but implementations can require that only one mode is--- used within a renderpass instance; the renderpass’s mode is chosen--- implicitly when the first pipeline is bound.+-- However, some implementations can only change it approximately render+-- pass granularity. To accommodate both, provoking vertex will be pipeline+-- state, but implementations can require that only one mode is used within+-- a render pass instance; the render pass’s mode is chosen implicitly when+-- the first pipeline is bound. -- -- 2) Does the provoking vertex mode affect the order that vertices are -- written to transform feedback buffers?
src/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs view
@@ -62,6 +62,8 @@ -- --     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_BT709_NONLINEAR_EXT' --+--     -   'COLOR_SPACE_DCI_P3_LINEAR_EXT'+-- --     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DCI_P3_NONLINEAR_EXT' -- --     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DISPLAY_P3_LINEAR_EXT'
src/Vulkan/Extensions/VK_EXT_transform_feedback.hs view
@@ -1574,10 +1574,10 @@ -- -   #VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1586,10 +1586,10 @@ -- -   #VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1713,6 +1713,242 @@ --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT' --     /must/ have been called in the current command buffer prior to this --     draw command+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06172# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectByteCountEXT-imageView-06173# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectByteCountEXT-imageView-06174# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectByteCountEXT-imageView-06175# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectByteCountEXT-imageView-06176# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectByteCountEXT-imageView-06177# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawIndirectByteCountEXT-viewMask-06178# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06180# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06181# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06182# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06183# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06189# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06190# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04007# All vertex input --     bindings accessed via vertex input variables declared in the vertex
src/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs view
@@ -52,6 +52,10 @@ -- -- == New Enum Constants --+-- -   'GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME'+--+-- -   'GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION'+-- -- -   'GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME' -- -- -   'GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION'
src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs view
@@ -799,9 +799,9 @@ -- 'Vulkan.Core10.Enums.StructureType.StructureType' data SubpassShadingPipelineCreateInfoHUAWEI = SubpassShadingPipelineCreateInfoHUAWEI   { -- | @renderPass@ is a handle to a render pass object describing the-    -- environment in which the pipeline will be used; the pipeline /must/ only-    -- be used with an instance of any render pass compatible with the one-    -- provided. See+    -- environment in which the pipeline will be used. The pipeline /must/ only+    -- be used with a render pass instance compatible with the one provided.+    -- See     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>     -- for more information.     renderPass :: RenderPass
src/Vulkan/Extensions/VK_INTEL_performance_query.hs view
@@ -97,6 +97,8 @@ -- -- -   Extending 'Vulkan.Core10.Query.QueryPoolCreateInfo': --+--     -   'QueryPoolCreateInfoINTEL'+-- --     -   'QueryPoolPerformanceQueryCreateInfoINTEL' -- -- == New Unions@@ -140,6 +142,8 @@ --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL' -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL'+--+--     -   'STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL' -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL' --
src/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot view
@@ -97,6 +97,8 @@ -- -- -   Extending 'Vulkan.Core10.Query.QueryPoolCreateInfo': --+--     -   'QueryPoolCreateInfoINTEL'+-- --     -   'QueryPoolPerformanceQueryCreateInfoINTEL' -- -- == New Unions@@ -140,6 +142,8 @@ --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL' -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL'+--+--     -   'STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL' -- --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL' --
src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs view
@@ -5424,6 +5424,12 @@ -- vertex motion in its instances /must/ set -- 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' in @flags@. --+-- Members @srcAccelerationStructure@ and @dstAccelerationStructure@ /may/+-- be the same or different for an update operation (when @mode@ is+-- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'). If they are the same,+-- the update happens in-place. Otherwise, the target acceleration+-- structure is updated and the source is not modified.+-- -- == Valid Usage -- -- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654# @type@@@ -6953,9 +6959,10 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' indicates that the--- specified acceleration structure /can/ be updated with @update@ of+-- specified acceleration structure /can/ be updated with a @mode@ of+-- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' in+-- 'AccelerationStructureBuildGeometryInfoKHR' or an @update@ of -- 'Vulkan.Core10.FundamentalTypes.TRUE' in--- 'cmdBuildAccelerationStructuresKHR' or -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV' . pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR      = BuildAccelerationStructureFlagBitsKHR 0x00000001 -- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' indicates that
src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs view
@@ -56,7 +56,7 @@ -- way that can be easily extended by other extensions through the -- substructures of render pass creation. The Vulkan 1.0 render pass -- creation sub-structures do not include @sType@\/@pNext@ members.--- Additionally, the renderpass begin\/next\/end commands have been+-- Additionally, the render pass begin\/next\/end commands have been -- augmented with new extensible structures for passing additional subpass -- information. --
src/Vulkan/Extensions/VK_KHR_device_group.hs view
@@ -148,7 +148,8 @@ -- --     -   'MemoryAllocateFlagsInfoKHR' ----- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo':+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR': -- --     -   'DeviceGroupRenderPassBeginInfoKHR' --
src/Vulkan/Extensions/VK_KHR_display_swapchain.hs view
@@ -159,7 +159,7 @@ -- -   Revision 4, 2015-09-08 (James Jones) -- --     -   Allow creating multiple swap chains that share the same images---         using a single call to vkCreateSwapChainKHR().+--         using a single call to vkCreateSwapchainKHR(). -- -- -   Revision 5, 2015-09-10 (Alon Or-bach) --
src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot view
@@ -159,7 +159,7 @@ -- -   Revision 4, 2015-09-08 (James Jones) -- --     -   Allow creating multiple swap chains that share the same images---         using a single call to vkCreateSwapChainKHR().+--         using a single call to vkCreateSwapchainKHR(). -- -- -   Revision 5, 2015-09-10 (Alon Or-bach) --
+ src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs view
@@ -0,0 +1,2320 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_dynamic_rendering - device extension+--+-- == VK_KHR_dynamic_rendering+--+-- [__Name String__]+--     @VK_KHR_dynamic_rendering@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     45+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_dynamic_rendering] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_dynamic_rendering extension>> >+--+-- [__Extension Proposal__]+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_dynamic_rendering.asciidoc VK_KHR_dynamic_rendering>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-10-06+--+-- [__Contributors__]+--+--     -   Tobias Hector, AMD+--+--     -   Arseny Kapoulkine, Roblox+--+--     -   François Duranleau, Gameloft+--+--     -   Stuart Smith, AMD+--+--     -   Hai Nguyen, Google+--+--     -   Jean-François Roy, Google+--+--     -   Jeff Leger, Qualcomm+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Piers Daniell, Nvidia+--+--     -   James Fitzpatrick, Imagination+--+--     -   Piotr Byszewski, Mobica+--+--     -   Jesse Hall, Google+--+--     -   Mike Blumenkrantz, Valve+--+-- == Description+--+-- This extension allows applications to create single-pass render pass+-- instances without needing to create render pass objects or framebuffers.+-- Dynamic render passes can also span across multiple primary command+-- buffers, rather than relying on secondary command buffers.+--+-- This extension also incorporates+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'+-- from <VK_QCOM_render_pass_store_ops.html VK_QCOM_render_pass_store_ops>,+-- enabling applications to avoid unnecessary synchronization when an+-- attachment is not written during a render pass.+--+-- == New Commands+--+-- -   'cmdBeginRenderingKHR'+--+-- -   'cmdEndRenderingKHR'+--+-- == New Structures+--+-- -   'RenderingAttachmentInfoKHR'+--+-- -   'RenderingInfoKHR'+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':+--+--     -   'CommandBufferInheritanceRenderingInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineRenderingCreateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDynamicRenderingFeaturesKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'AttachmentSampleCountInfoAMD'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>+-- is supported:+--+-- -   Extending 'RenderingInfoKHR':+--+--     -   'RenderingFragmentDensityMapAttachmentInfoEXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>+-- is supported:+--+-- -   Extending 'RenderingInfoKHR':+--+--     -   'RenderingFragmentShadingRateAttachmentInfoKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'AttachmentSampleCountInfoNV'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+--     'RenderingInfoKHR':+--+--     -   'MultiviewPerViewAttributesInfoNVX'+--+-- == New Enums+--+-- -   'RenderingFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'RenderingFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DYNAMIC_RENDERING_EXTENSION_NAME'+--+-- -   'KHR_DYNAMIC_RENDERING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':+--+--     -   'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'+--+-- == Version History+--+-- -   Revision 1, 2021-10-06 (Tobias Hector)+--+--     -   Initial revision+--+-- = See Also+--+-- 'CommandBufferInheritanceRenderingInfoKHR',+-- 'PhysicalDeviceDynamicRenderingFeaturesKHR',+-- 'PipelineRenderingCreateInfoKHR', 'RenderingAttachmentInfoKHR',+-- 'RenderingFlagBitsKHR', 'RenderingFlagsKHR', 'RenderingInfoKHR',+-- 'cmdBeginRenderingKHR', 'cmdEndRenderingKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_dynamic_rendering  ( cmdBeginRenderingKHR+                                                   , cmdUseRenderingKHR+                                                   , cmdEndRenderingKHR+                                                   , pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV+                                                   , PipelineRenderingCreateInfoKHR(..)+                                                   , RenderingInfoKHR(..)+                                                   , RenderingAttachmentInfoKHR(..)+                                                   , RenderingFragmentShadingRateAttachmentInfoKHR(..)+                                                   , RenderingFragmentDensityMapAttachmentInfoEXT(..)+                                                   , PhysicalDeviceDynamicRenderingFeaturesKHR(..)+                                                   , CommandBufferInheritanceRenderingInfoKHR(..)+                                                   , AttachmentSampleCountInfoAMD(..)+                                                   , MultiviewPerViewAttributesInfoNVX(..)+                                                   , RenderingFlagsKHR+                                                   , RenderingFlagBitsKHR( RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR+                                                                         , RENDERING_SUSPENDING_BIT_KHR+                                                                         , RENDERING_RESUMING_BIT_KHR+                                                                         , ..+                                                                         )+                                                   , AttachmentSampleCountInfoNV+                                                   , KHR_DYNAMIC_RENDERING_SPEC_VERSION+                                                   , pattern KHR_DYNAMIC_RENDERING_SPEC_VERSION+                                                   , KHR_DYNAMIC_RENDERING_EXTENSION_NAME+                                                   , pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME+                                                   ) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import Vulkan.Internal.Utils (traceAroundEvent)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytes)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Show (showString)+import Numeric (showHex)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Zero (Zero)+import Vulkan.Zero (Zero(..))+import Control.Monad.IO.Class (MonadIO)+import Data.Bits (Bits)+import Data.Bits (FiniteBits)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+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 GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Vulkan.CStruct.Utils (advancePtrBytes)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.CStruct.Extends (forgetExtensions)+import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp)+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.CStruct.Extends (Chain)+import Vulkan.Core10.CommandBufferBuilding (ClearValue)+import Vulkan.Core10.Handles (CommandBuffer)+import Vulkan.Core10.Handles (CommandBuffer(..))+import Vulkan.Core10.Handles (CommandBuffer_T)+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginRenderingKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndRenderingKHR))+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)+import Vulkan.CStruct.Extends (Extends)+import Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct.Extends (Extensible(..))+import Vulkan.Core10.FundamentalTypes (Extent2D)+import Vulkan.Core10.FundamentalTypes (Flags)+import Vulkan.Core10.Enums.Format (Format)+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Vulkan.Core10.Handles (ImageView)+import Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct.Extends (PokeChain(..))+import Vulkan.Core10.FundamentalTypes (Rect2D)+import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Vulkan.CStruct.Extends (SomeStruct)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INFO_KHR))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBeginRenderingKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfoKHR) -> IO ()++-- | vkCmdBeginRenderingKHR - Begin a dynamic render pass instance+--+-- = Description+--+-- After beginning a render pass instance, the command buffer is ready to+-- record+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing draw commands>.+--+-- If @pRenderingInfo->flags@ includes 'RENDERING_RESUMING_BIT_KHR' then+-- this render pass is resumed from a render pass instance that has been+-- suspended earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBeginRenderingKHR-dynamicRendering-06446# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>+--     feature /must/ be enabled+--+-- -   #VUID-vkCmdBeginRenderingKHR-commandBuffer-06068# If @commandBuffer@+--     is a secondary command buffer, @pRenderingInfo->flags@ /must/ not+--     include 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBeginRenderingKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBeginRenderingKHR-pRenderingInfo-parameter#+--     @pRenderingInfo@ /must/ be a valid pointer to a valid+--     'RenderingInfoKHR' structure+--+-- -   #VUID-vkCmdBeginRenderingKHR-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-vkCmdBeginRenderingKHR-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBeginRenderingKHR-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderingInfoKHR'+cmdBeginRenderingKHR :: forall a io+                      . (Extendss RenderingInfoKHR a, PokeChain a, MonadIO io)+                     => -- | @commandBuffer@ is the command buffer in which to record the command.+                        CommandBuffer+                     -> -- | @pRenderingInfo@ is a pointer to a 'RenderingInfoKHR' structure+                        -- specifying details of the render pass instance to begin.+                        (RenderingInfoKHR a)+                     -> io ()+cmdBeginRenderingKHR commandBuffer renderingInfo = liftIO . evalContT $ do+  let vkCmdBeginRenderingKHRPtr = pVkCmdBeginRenderingKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBeginRenderingKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginRenderingKHR is null" Nothing Nothing+  let vkCmdBeginRenderingKHR' = mkVkCmdBeginRenderingKHR vkCmdBeginRenderingKHRPtr+  pRenderingInfo <- ContT $ withCStruct (renderingInfo)+  lift $ traceAroundEvent "vkCmdBeginRenderingKHR" (vkCmdBeginRenderingKHR' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderingInfo))+  pure $ ()++-- | This function will call the supplied action between calls to+-- 'cmdBeginRenderingKHR' and 'cmdEndRenderingKHR'+--+-- Note that 'cmdEndRenderingKHR' is *not* called if an exception is thrown+-- by the inner action.+cmdUseRenderingKHR :: forall a io r . (Extendss RenderingInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> RenderingInfoKHR a -> io r -> io r+cmdUseRenderingKHR commandBuffer pRenderingInfo a =+  (cmdBeginRenderingKHR commandBuffer pRenderingInfo) *> a <* (cmdEndRenderingKHR commandBuffer)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdEndRenderingKHR+  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()++-- | vkCmdEndRenderingKHR - End a dynamic render pass instance+--+-- = Description+--+-- If the value of @pRenderingInfo->flags@ used to begin this render pass+-- instance included 'RENDERING_SUSPENDING_BIT_KHR', then this render pass+-- is suspended and will be resumed later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdEndRenderingKHR-None-06161# The current render pass+--     instance /must/ have been begun with 'cmdBeginRenderingKHR'+--+-- -   #VUID-vkCmdEndRenderingKHR-commandBuffer-06162# The current render+--     pass instance /must/ have been begun in @commandBuffer@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdEndRenderingKHR-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdEndRenderingKHR-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-vkCmdEndRenderingKHR-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdEndRenderingKHR-renderpass# This command /must/ only be+--     called inside of a render pass instance+--+-- == 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#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdEndRenderingKHR :: forall io+                    . (MonadIO io)+                   => -- | @commandBuffer@ is the command buffer in which to record the command.+                      CommandBuffer+                   -> io ()+cmdEndRenderingKHR commandBuffer = liftIO $ do+  let vkCmdEndRenderingKHRPtr = pVkCmdEndRenderingKHR (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdEndRenderingKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRenderingKHR is null" Nothing Nothing+  let vkCmdEndRenderingKHR' = mkVkCmdEndRenderingKHR vkCmdEndRenderingKHRPtr+  traceAroundEvent "vkCmdEndRenderingKHR" (vkCmdEndRenderingKHR' (commandBufferHandle (commandBuffer)))+  pure $ ()+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV"+pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD+++-- | VkPipelineRenderingCreateInfoKHR - Structure specifying attachment+-- formats+--+-- = Description+--+-- When a pipeline is created without a 'Vulkan.Core10.Handles.RenderPass',+-- if this structure is present in the @pNext@ chain of+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it specifies the+-- view mask and format of attachments used for rendering. If this+-- structure is not specified, and the pipeline does not include a+-- 'Vulkan.Core10.Handles.RenderPass', @viewMask@ and+-- @colorAttachmentCount@ are @0@, and @depthAttachmentFormat@ and+-- @stencilAttachmentFormat@ are+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'. If a graphics pipeline is+-- created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters of+-- this structure are ignored.+--+-- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of+-- @pColorAttachmentFormats@ is+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the+-- corresponding attachment is unused within the render pass. Valid formats+-- indicate that an attachment /can/ be used - but it is still valid to set+-- the attachment to @NULL@ when beginning rendering.+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-pColorAttachmentFormats-06064#+--     If any element of @pColorAttachmentFormats@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-depthAttachmentFormat-06065#+--     If @depthAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-stencilAttachmentFormat-06164#+--     If @stencilAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-depthAttachmentFormat-06165#+--     If @depthAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and+--     @stencilAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',+--     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-multiview-06066# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>+--     feature is not enabled, @viewMask@ /must/ be @0@+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-viewMask-06067# The index of+--     the most significant bit in @viewMask@ /must/ be less than+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-pColorAttachmentFormats-parameter#+--     If @colorAttachmentCount@ is not @0@, @pColorAttachmentFormats@+--     /must/ be a valid pointer to an array of @colorAttachmentCount@+--     valid 'Vulkan.Core10.Enums.Format.Format' values+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-depthAttachmentFormat-parameter#+--     @depthAttachmentFormat@ /must/ be a valid+--     'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-stencilAttachmentFormat-parameter#+--     @stencilAttachmentFormat@ /must/ be a valid+--     'Vulkan.Core10.Enums.Format.Format' value+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.Enums.Format.Format',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfoKHR+  { -- | @viewMask@ is the viewMask used for rendering.+    viewMask :: Word32+  , -- | @pColorAttachmentFormats@ is an array of+    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color+    -- attachments used in this pipeline.+    colorAttachmentFormats :: Vector Format+  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value+    -- defining the format of the depth attachment used in this pipeline.+    depthAttachmentFormat :: Format+  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value+    -- defining the format of the stencil attachment used in this pipeline.+    stencilAttachmentFormat :: Format+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineRenderingCreateInfoKHR)+#endif+deriving instance Show PipelineRenderingCreateInfoKHR++instance ToCStruct PipelineRenderingCreateInfoKHR where+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineRenderingCreateInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (viewMask)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentFormats)) :: Word32))+    pPColorAttachmentFormats' <- ContT $ allocaBytes @Format ((Data.Vector.length (colorAttachmentFormats)) * 4)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (colorAttachmentFormats)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Format))) (pPColorAttachmentFormats')+    lift $ poke ((p `plusPtr` 32 :: Ptr Format)) (depthAttachmentFormat)+    lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (stencilAttachmentFormat)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Format)) (zero)+    poke ((p `plusPtr` 36 :: Ptr Format)) (zero)+    f++instance FromCStruct PipelineRenderingCreateInfoKHR where+  peekCStruct p = do+    viewMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 24 :: Ptr (Ptr Format)))+    pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Format ((pColorAttachmentFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))+    depthAttachmentFormat <- peek @Format ((p `plusPtr` 32 :: Ptr Format))+    stencilAttachmentFormat <- peek @Format ((p `plusPtr` 36 :: Ptr Format))+    pure $ PipelineRenderingCreateInfoKHR+             viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat++instance Zero PipelineRenderingCreateInfoKHR where+  zero = PipelineRenderingCreateInfoKHR+           zero+           mempty+           zero+           zero+++-- | VkRenderingInfoKHR - Structure specifying render pass instance begin+-- info+--+-- = Description+--+-- If @viewMask@ is not @0@, multiview is enabled.+--+-- If there’s an instance of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+-- included in the @pNext@ chain and its @deviceCount@ member is not @0@,+-- then @renderArea@ is ignored, and the render area is defined per-device+-- by that structure.+--+-- Each element of the @pColorAttachments@ array corresponds to an output+-- location in the shader, i.e. if the shader declares an output variable+-- decorated with a @Location@ value of __X__, then it uses the attachment+-- provided in @pColorAttachments@[__X__]. If the @imageView@ member of any+-- element of @pColorAttachments@ is+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', writes to the corresponding+-- location by a fragment are discarded.+--+-- == Valid Usage+--+-- -   #VUID-VkRenderingInfoKHR-viewMask-06069# If @viewMask@ is @0@,+--     @layerCount@ /must/ not be @0@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06070# If neither the+--     @VK_AMD_mixed_attachment_samples@ nor the+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled,+--     @imageView@ members of @pDepthAttachment@, @pStencilAttachment@, and+--     elements of @pColorAttachments@ that are not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created+--     with the same @sampleCount@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06077# If the @pNext@ chain does not+--     contain+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     or its @deviceRenderAreaCount@ member is equal to 0,+--     @renderArea.offset.x@ /must/ be greater than or equal to 0+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06078# If the @pNext@ chain does not+--     contain+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     or its @deviceRenderAreaCount@ member is equal to 0,+--     @renderArea.offset.y@ /must/ be greater than or equal to 0+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06079# 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 width of+--     the @imageView@ member of any element of @pColorAttachments@,+--     @pDepthAttachment@, or @pStencilAttachment@ that is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or+--     equal to @renderArea.offset.x@ + @renderArea.extent.width@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06080# 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 height of+--     the @imageView@ member of any element of @pColorAttachments@,+--     @pDepthAttachment@, or @pStencilAttachment@ that is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or+--     equal to @renderArea.offset.y@ + @renderArea.extent.height@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06081# If the @pNext@ chain contains+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+--     the @offset.x@ member of each element of @pDeviceRenderAreas@ /must/+--     be greater than or equal to 0+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06082# If the @pNext@ chain contains+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+--     the @offset.y@ member of each element of @pDeviceRenderAreas@ /must/+--     be greater than or equal to 0+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06083# If the @pNext@ chain contains+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+--     the width of the @imageView@ member of any element of+--     @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@+--     that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be+--     greater than or equal to the sum of the @offset.x@ and+--     @extent.width@ members of each element of @pDeviceRenderAreas@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06084# If the @pNext@ chain contains+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+--     the height of the @imageView@ member of any element of+--     @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@+--     that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be+--     greater than or equal to the sum of the @offset.y@ and+--     @extent.height@ members of each element of @pDeviceRenderAreas@+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06085# If neither+--     @pDepthAttachment@ or @pStencilAttachment@ are @NULL@ and the+--     @imageView@ member of either structure is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @imageView@ member of+--     each structure /must/ be the same+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06086# If neither+--     @pDepthAttachment@ or @pStencilAttachment@ are @NULL@, and the+--     @resolveMode@ member of each is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the+--     @resolveImageView@ member of each structure /must/ be the same+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06087# If+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an+--     element of @pColorAttachments@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', that @imageView@ /must/+--     have been created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06088# If+--     @pDepthAttachment@ is not @NULL@ and @pDepthAttachment->imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pDepthAttachment->imageView@ /must/ have been created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06089# If+--     @pStencilAttachment@ is not @NULL@ and+--     @pStencilAttachment->imageView@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pStencilAttachment->imageView@ /must/ have been created with a+--     stencil usage including+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06090# If+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an+--     element of @pColorAttachments@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of+--     that element of @pColorAttachments@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06091# If+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an+--     element of @pColorAttachments@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@+--     member of that element of @pColorAttachments@ is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its+--     @resolveImageLayout@ member /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06092# If+--     @pDepthAttachment@ is not @NULL@ and @pDepthAttachment->imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pDepthAttachment->layout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06093# If+--     @pDepthAttachment@ is not @NULL@, @pDepthAttachment->imageView@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     @pDepthAttachment->resolveMode@ is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @pDepthAttachment->resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06094# If+--     @pStencilAttachment@ is not @NULL@ and+--     @pStencilAttachment->imageView@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pStencilAttachment->layout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06095# If+--     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     @pStencilAttachment->resolveMode@ is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @pStencilAttachment->resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06096# If+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an+--     element of @pColorAttachments@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of+--     that element of @pColorAttachments@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06097# If+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an+--     element of @pColorAttachments@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@+--     member of that element of @pColorAttachments@ is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its+--     @resolveImageLayout@ member /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06098# If+--     @pDepthAttachment@ is not @NULL@, @pDepthAttachment->imageView@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     @pDepthAttachment->resolveMode@ is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @pDepthAttachment->resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06099# If+--     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     @pStencilAttachment->resolveMode@ is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @pStencilAttachment->resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06100# If+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an+--     element of @pColorAttachments@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of+--     that element of @pColorAttachments@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06101# If+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an+--     element of @pColorAttachments@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@+--     member of that element of @pColorAttachments@ is not+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its+--     @resolveImageLayout@ member /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06102# If+--     @pDepthAttachment@ is not @NULL@ and @pDepthAttachment->imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pDepthAttachment->resolveMode@ /must/ be one of the bits set in+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedDepthResolveModes@+--+-- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06103# If+--     @pStencilAttachment@ is not @NULL@ and+--     @pStencilAttachment->imageView@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pStencilAttachment->resolveMode@ /must/ be one of the bits set in+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedStencilResolveModes@+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06104# If+--     @pDepthAttachment@ or @pStencilAttachment@ are both not @NULL@,+--     @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@+--     are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the @resolveMode@ of both+--     structures /must/ be the same value+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06105# If+--     @pDepthAttachment@ or @pStencilAttachment@ are both not @NULL@,+--     @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@+--     are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and the @resolveMode@ of+--     neither structure is+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the+--     @resolveMode@ of both structures /must/ be the same value+--+-- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06106#+--     @colorAttachmentCount@ /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06107# If the @imageView@ member+--     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages non-subsample image feature>+--     is not enabled, valid @imageView@ and @resolveImageView@ members of+--     @pDepthAttachment@, @pStencilAttachment@, and each element of+--     @pColorAttachments@ /must/ be a 'Vulkan.Core10.Handles.ImageView'+--     created with+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06108# If the @imageView@ member+--     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@,+--     @imageView@ /must/ have a @layerCount@ greater than or equal to the+--     index of the most significant bit in @viewMask@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06109# If the @imageView@ member+--     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@,+--     @imageView@ /must/ have a @layerCount@ equal to @1@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06112# If the @pNext@ chain does not+--     contain+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     or its @deviceRenderAreaCount@ member is equal to 0 and the+--     @imageView@ member of a+--     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in+--     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @imageView@ /must/ have a width greater than or equal to+--     \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\)+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06113# If the @pNext@ chain contains+--     a+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     structure, its @deviceRenderAreaCount@ member is not 0, and the+--     @imageView@ member of a+--     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in+--     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @imageView@ /must/ have a width greater than or equal to+--     \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\)+--     for each element of @pDeviceRenderAreas@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06114# If the @pNext@ chain does not+--     contain+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     or its @deviceRenderAreaCount@ member is equal to 0 and the+--     @imageView@ member of a+--     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in+--     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @imageView@ /must/ have a height greater than or equal to+--     \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\)+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06115# If the @pNext@ chain contains+--     a+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     structure, its @deviceRenderAreaCount@ member is not 0, and the+--     @imageView@ member of a+--     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in+--     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @imageView@ /must/ have a height greater than or equal to+--     \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\)+--     for each element of @pDeviceRenderAreas@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06116# If the @imageView@ member+--     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to+--     the @imageView@ or @resolveImageView@ member of @pDepthAttachment@,+--     @pStencilAttachment@, or any element of @pColorAttachments@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06119# If the @pNext@ chain does not+--     contain+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     or its @deviceRenderAreaCount@ member is equal to 0 and the+--     @imageView@ member of a+--     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included+--     in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a+--     width greater than or equal to+--     \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\)+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06120# If the @pNext@ chain contains+--     a+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     structure, its @deviceRenderAreaCount@ member is not 0, and the+--     @imageView@ member of a+--     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included+--     in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a+--     width greater than or equal to+--     \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\)+--     for each element of @pDeviceRenderAreas@+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06121# If the @pNext@ chain does not+--     contain+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     or its @deviceRenderAreaCount@ member is equal to 0 and the+--     @imageView@ member of a+--     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included+--     in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a+--     height greater than or equal to+--     \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)+--+-- -   #VUID-VkRenderingInfoKHR-pNext-06122# If the @pNext@ chain contains+--     a+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+--     structure, its @deviceRenderAreaCount@ member is not 0, and the+--     @imageView@ member of a+--     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included+--     in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a+--     height greater than or equal to+--     \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)+--     for each element of @pDeviceRenderAreas@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06123# If the @imageView@ member+--     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@,+--     @imageView@ /must/ have a @layerCount@ that is either equal to @1@+--     or greater than or equal to @layerCount@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06124# If the @imageView@ member+--     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@,+--     @imageView@ /must/ have a @layerCount@ that either equal to @1@ or+--     greater than or equal to the index of the most significant bit in+--     @viewMask@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06125# If the @imageView@ member+--     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to+--     the @imageView@ or @resolveImageView@ member of @pDepthAttachment@,+--     @pStencilAttachment@, or any element of @pColorAttachments@+--+-- -   #VUID-VkRenderingInfoKHR-imageView-06126# If the @imageView@ member+--     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure+--     included in the @pNext@ chain is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to+--     the @imageView@ member of a+--     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in+--     the @pNext@ chain+--+-- -   #VUID-VkRenderingInfoKHR-multiview-06127# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>+--     feature is not enabled, @viewMask@ /must/ be @0@+--+-- -   #VUID-VkRenderingInfoKHR-viewMask-06128# The index of the most+--     significant bit in @viewMask@ /must/ be less than+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRenderingInfoKHR-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO_KHR'+--+-- -   #VUID-VkRenderingInfoKHR-pNext-pNext# Each @pNext@ member of any+--     structure (including this one) in the @pNext@ chain /must/ be either+--     @NULL@ or a pointer to a valid instance of+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+--     'MultiviewPerViewAttributesInfoNVX',+--     'RenderingFragmentDensityMapAttachmentInfoEXT', or+--     'RenderingFragmentShadingRateAttachmentInfoKHR'+--+-- -   #VUID-VkRenderingInfoKHR-sType-unique# The @sType@ value of each+--     struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkRenderingInfoKHR-flags-parameter# @flags@ /must/ be a valid+--     combination of 'RenderingFlagBitsKHR' values+--+-- -   #VUID-VkRenderingInfoKHR-pColorAttachments-parameter# If+--     @colorAttachmentCount@ is not @0@, @pColorAttachments@ /must/ be a+--     valid pointer to an array of @colorAttachmentCount@ valid+--     'RenderingAttachmentInfoKHR' structures+--+-- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-parameter# If+--     @pDepthAttachment@ is not @NULL@, @pDepthAttachment@ /must/ be a+--     valid pointer to a valid 'RenderingAttachmentInfoKHR' structure+--+-- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-parameter# If+--     @pStencilAttachment@ is not @NULL@, @pStencilAttachment@ /must/ be a+--     valid pointer to a valid 'RenderingAttachmentInfoKHR' structure+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'RenderingAttachmentInfoKHR',+-- 'RenderingFlagsKHR', 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdBeginRenderingKHR'+data RenderingInfoKHR (es :: [Type]) = RenderingInfoKHR+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of 'RenderingFlagBitsKHR'.+    flags :: RenderingFlagsKHR+  , -- | @renderArea@ is the render area that is affected by the render pass+    -- instance.+    renderArea :: Rect2D+  , -- | @layerCount@ is the number of layers rendered to in each attachment when+    -- @viewMask@ is @0@.+    layerCount :: Word32+  , -- | @viewMask@ is the view mask indicating the indices of attachment layers+    -- that will be rendered when it is not @0@.+    viewMask :: Word32+  , -- | @pColorAttachments@ is a pointer to an array of @colorAttachmentCount@+    -- 'RenderingAttachmentInfoKHR' structures describing any color attachments+    -- used.+    colorAttachments :: Vector RenderingAttachmentInfoKHR+  , -- | @pDepthAttachment@ is a pointer to a 'RenderingAttachmentInfoKHR'+    -- structure describing a depth attachment.+    depthAttachment :: Maybe RenderingAttachmentInfoKHR+  , -- | @pStencilAttachment@ is a pointer to a 'RenderingAttachmentInfoKHR'+    -- structure describing a stencil attachment.+    stencilAttachment :: Maybe RenderingAttachmentInfoKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RenderingInfoKHR (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (RenderingInfoKHR es)++instance Extensible RenderingInfoKHR where+  extensibleTypeName = "RenderingInfoKHR"+  setNext x next = x{next = next}+  getNext RenderingInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f+    | Just Refl <- eqT @e @RenderingFragmentDensityMapAttachmentInfoEXT = Just f+    | Just Refl <- eqT @e @RenderingFragmentShadingRateAttachmentInfoKHR = Just f+    | Just Refl <- eqT @e @DeviceGroupRenderPassBeginInfo = Just f+    | otherwise = Nothing++instance (Extendss RenderingInfoKHR es, PokeChain es) => ToCStruct (RenderingInfoKHR es) where+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RenderingInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr RenderingFlagsKHR)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (renderArea)+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (layerCount)+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (viewMask)+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachments)) :: Word32))+    pPColorAttachments' <- ContT $ allocaBytes @RenderingAttachmentInfoKHR ((Data.Vector.length (colorAttachments)) * 72)+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (72 * (i)) :: Ptr RenderingAttachmentInfoKHR) (e) . ($ ())) (colorAttachments)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr RenderingAttachmentInfoKHR))) (pPColorAttachments')+    pDepthAttachment'' <- case (depthAttachment) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr RenderingAttachmentInfoKHR))) pDepthAttachment''+    pStencilAttachment'' <- case (stencilAttachment) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr RenderingAttachmentInfoKHR))) pStencilAttachment''+    lift $ f+  cStructSize = 72+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (zero)+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+    lift $ f++instance es ~ '[] => Zero (RenderingInfoKHR es) where+  zero = RenderingInfoKHR+           ()+           zero+           zero+           zero+           zero+           mempty+           Nothing+           Nothing+++-- | VkRenderingAttachmentInfoKHR - Structure specifying attachment+-- information+--+-- = Description+--+-- Values in @imageView@ are loaded and stored according to the values of+-- @loadOp@ and @storeOp@, within the render area for each device specified+-- in 'RenderingInfoKHR'. If @imageView@ is+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', other members of this+-- structure are ignored; writes to this attachment will be discarded, and+-- no load, store, or resolve operations will be performed.+--+-- If @resolveMode@ is+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', then+-- @resolveImageView@ is ignored. If @resolveMode@ is not+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', values in+-- @resolveImageView@ within the render area become undefined once+-- rendering begins. At the end of rendering, the color values written to+-- each pixel location in @imageView@ will be resolved according to+-- @resolveMode@ and stored into the the same location in+-- @resolveImageView@.+--+-- Note+--+-- The resolve mode and store operation are independent; it is valid to+-- write both resolved and unresolved values, and equally valid to discard+-- the unresolved values while writing the resolved ones.+--+-- Store and resolve operations are only performed at the end of a render+-- pass instance that does not specify the 'RENDERING_SUSPENDING_BIT_KHR'+-- flag.+--+-- Load operations are only performed at the beginning of a render pass+-- instance that does not specify the 'RENDERING_RESUMING_BIT_KHR' flag.+--+-- Image contents at the end of a suspended render pass instance remain+-- defined for access by a resuming render pass instance.+--+-- == Valid Usage+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06129# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has a+--     non-integer color format, @resolveMode@ /must/ be+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06130# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has an integer+--     color format, @resolveMode@ /must/ be+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06132# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @imageView@ /must/ not have a sample count of+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06133# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageView@ /must/ have a sample count of+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06134# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @imageView@ and @resolveImageView@ /must/ have the same+--     'Vulkan.Core10.Enums.Format.Format'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06135# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not+--     be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06136# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06137# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06138# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not+--     be+--     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06139# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageLayout@ /must/ not be+--     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06140# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not+--     be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06141# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06142# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06143# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not+--     be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06144# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06145# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not+--     be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06146# If @imageView@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+--     @resolveImageLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-pNext-pNext# @pNext@ /must/ be+--     @NULL@+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-parameter# If+--     @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'+--     handle+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-imageLayout-parameter#+--     @imageLayout@ /must/ be a valid+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-resolveMode-parameter# If+--     @resolveMode@ is not @0@, @resolveMode@ /must/ be a valid+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-resolveImageView-parameter# If+--     @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @resolveImageView@ /must/ be a valid+--     'Vulkan.Core10.Handles.ImageView' handle+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-resolveImageLayout-parameter#+--     @resolveImageLayout@ /must/ be a valid+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-loadOp-parameter# @loadOp@ /must/+--     be a valid 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'+--     value+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-storeOp-parameter# @storeOp@+--     /must/ be a valid+--     'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' value+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-clearValue-parameter#+--     @clearValue@ /must/ be a valid+--     'Vulkan.Core10.CommandBufferBuilding.ClearValue' union+--+-- -   #VUID-VkRenderingAttachmentInfoKHR-commonparent# Both of+--     @imageView@, and @resolveImageView@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp',+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp',+-- 'Vulkan.Core10.CommandBufferBuilding.ClearValue',+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Vulkan.Core10.Handles.ImageView', 'RenderingInfoKHR',+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data RenderingAttachmentInfoKHR = RenderingAttachmentInfoKHR+  { -- | @imageView@ is the image view that will be used for rendering.+    imageView :: ImageView+  , -- | @imageLayout@ is the layout that @imageView@ will be in during+    -- rendering.+    imageLayout :: ImageLayout+  , -- | @resolveMode@ is a+    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value+    -- defining how multisampled data written to @imageView@ will be resolved.+    resolveMode :: ResolveModeFlagBits+  , -- | @resolveImageView@ is an image view used to write resolved multisample+    -- data at the end of rendering.+    resolveImageView :: ImageView+  , -- | @resolveImageLayout@ is the layout that @resolveImageView@ will be in+    -- during rendering.+    resolveImageLayout :: ImageLayout+  , -- | @loadOp@ is a 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'+    -- value specifying how the contents of @imageView@ are treated at the+    -- start of the render pass instance.+    loadOp :: AttachmentLoadOp+  , -- | @storeOp@ is a 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+    -- value specifying how the contents of @imageView@ are treated at the end+    -- of the render pass instance.+    storeOp :: AttachmentStoreOp+  , -- | @clearValue@ is a 'Vulkan.Core10.CommandBufferBuilding.ClearValue'+    -- structure that defines values used to clear @imageView@ when @loadOp@ is+    -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'.+    clearValue :: ClearValue+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RenderingAttachmentInfoKHR)+#endif+deriving instance Show RenderingAttachmentInfoKHR++instance ToCStruct RenderingAttachmentInfoKHR where+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RenderingAttachmentInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)+    lift $ poke ((p `plusPtr` 28 :: Ptr ResolveModeFlagBits)) (resolveMode)+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageView)) (resolveImageView)+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (resolveImageLayout)+    lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (loadOp)+    lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (storeOp)+    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (clearValue) . ($ ())+    lift $ f+  cStructSize = 72+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)+    lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (zero)+    lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (zero) . ($ ())+    lift $ f++instance Zero RenderingAttachmentInfoKHR where+  zero = RenderingAttachmentInfoKHR+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkRenderingFragmentShadingRateAttachmentInfoKHR - Structure specifying+-- fragment shading rate attachment information+--+-- = Description+--+-- This structure can be included in the @pNext@ chain of+-- 'RenderingInfoKHR' to define a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.+-- If @imageView@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or if this+-- structure isn’t specified, the implementation behaves as if a valid+-- shading rate attachment was specified with all texels specifying a+-- single pixel per fragment.+--+-- == Valid Usage+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06147#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @layout@ /must/ be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06148#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it+--     /must/ have been created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06149#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @shadingRateAttachmentTexelSize.width@ /must/ be a power of two+--     value+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06150#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal+--     to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06151#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @shadingRateAttachmentTexelSize.width@ /must/ be greater than or+--     equal to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06152#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @shadingRateAttachmentTexelSize.height@ /must/ be a power of two+--     value+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06153#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal+--     to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06154#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @shadingRateAttachmentTexelSize.height@ /must/ be greater than or+--     equal to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06155#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the+--     quotient of @shadingRateAttachmentTexelSize.width@ and+--     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal+--     to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06156#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the+--     quotient of @shadingRateAttachmentTexelSize.height@ and+--     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal+--     to+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-parameter#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'+--     handle+--+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageLayout-parameter#+--     @imageLayout@ /must/ be a valid+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Vulkan.Core10.Handles.ImageView',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data RenderingFragmentShadingRateAttachmentInfoKHR = RenderingFragmentShadingRateAttachmentInfoKHR+  { -- | @imageView@ is the image view that will be used as a fragment shading+    -- rate attachment.+    imageView :: ImageView+  , -- | @imageLayout@ is the layout that @imageView@ will be in during+    -- rendering.+    imageLayout :: ImageLayout+  , -- | @shadingRateAttachmentTexelSize@ specifies the number of pixels+    -- corresponding to each texel in @imageView@.+    shadingRateAttachmentTexelSize :: Extent2D+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RenderingFragmentShadingRateAttachmentInfoKHR)+#endif+deriving instance Show RenderingFragmentShadingRateAttachmentInfoKHR++instance ToCStruct RenderingFragmentShadingRateAttachmentInfoKHR where+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RenderingFragmentShadingRateAttachmentInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)+    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (shadingRateAttachmentTexelSize)+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (zero)+    f++instance FromCStruct RenderingFragmentShadingRateAttachmentInfoKHR where+  peekCStruct p = do+    imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))+    imageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))+    shadingRateAttachmentTexelSize <- peekCStruct @Extent2D ((p `plusPtr` 28 :: Ptr Extent2D))+    pure $ RenderingFragmentShadingRateAttachmentInfoKHR+             imageView imageLayout shadingRateAttachmentTexelSize++instance Storable RenderingFragmentShadingRateAttachmentInfoKHR where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RenderingFragmentShadingRateAttachmentInfoKHR where+  zero = RenderingFragmentShadingRateAttachmentInfoKHR+           zero+           zero+           zero+++-- | VkRenderingFragmentDensityMapAttachmentInfoEXT - Structure specifying+-- fragment shading rate attachment information+--+-- = Description+--+-- This structure can be included in the @pNext@ chain of+-- 'RenderingInfoKHR' to define a fragment density map. If @imageView@ is+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', If this structure isn’t+-- specified, @imageView@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- == Valid Usage+--+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06157#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @layout@ /must/ be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'+--+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06158#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it+--     /must/ have been created with+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06159#+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it+--     /must/ not have been created with+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'+--+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-parameter#+--     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'+--     handle+--+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageLayout-parameter#+--     @imageLayout@ /must/ be a valid+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Vulkan.Core10.Handles.ImageView',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data RenderingFragmentDensityMapAttachmentInfoEXT = RenderingFragmentDensityMapAttachmentInfoEXT+  { -- | @imageView@ is the image view that will be used as a fragment shading+    -- rate attachment.+    imageView :: ImageView+  , -- | @imageLayout@ is the layout that @imageView@ will be in during+    -- rendering.+    imageLayout :: ImageLayout+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RenderingFragmentDensityMapAttachmentInfoEXT)+#endif+deriving instance Show RenderingFragmentDensityMapAttachmentInfoEXT++instance ToCStruct RenderingFragmentDensityMapAttachmentInfoEXT where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RenderingFragmentDensityMapAttachmentInfoEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (zero)+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)+    f++instance FromCStruct RenderingFragmentDensityMapAttachmentInfoEXT where+  peekCStruct p = do+    imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))+    imageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))+    pure $ RenderingFragmentDensityMapAttachmentInfoEXT+             imageView imageLayout++instance Storable RenderingFragmentDensityMapAttachmentInfoEXT where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RenderingFragmentDensityMapAttachmentInfoEXT where+  zero = RenderingFragmentDensityMapAttachmentInfoEXT+           zero+           zero+++-- | VkPhysicalDeviceDynamicRenderingFeaturesKHR - Structure indicating+-- support for dynamic render pass instances+--+-- = Members+--+-- The members of the 'PhysicalDeviceDynamicRenderingFeaturesKHR' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceDynamicRenderingFeaturesKHR' 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. 'PhysicalDeviceDynamicRenderingFeaturesKHR' /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_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeaturesKHR+  { -- | #features-dynamicRendering# @dynamicRendering@ specifies that the+    -- implementation supports dynamic render pass instances using the+    -- 'cmdBeginRenderingKHR' command.+    dynamicRendering :: Bool }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceDynamicRenderingFeaturesKHR)+#endif+deriving instance Show PhysicalDeviceDynamicRenderingFeaturesKHR++instance ToCStruct PhysicalDeviceDynamicRenderingFeaturesKHR where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceDynamicRenderingFeaturesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dynamicRendering))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceDynamicRenderingFeaturesKHR where+  peekCStruct p = do+    dynamicRendering <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceDynamicRenderingFeaturesKHR+             (bool32ToBool dynamicRendering)++instance Storable PhysicalDeviceDynamicRenderingFeaturesKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDynamicRenderingFeaturesKHR where+  zero = PhysicalDeviceDynamicRenderingFeaturesKHR+           zero+++-- | VkCommandBufferInheritanceRenderingInfoKHR - Structure specifying+-- command buffer inheritance info for dynamic render pass instances+--+-- = Description+--+-- If the @pNext@ chain of+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes a+-- 'CommandBufferInheritanceRenderingInfoKHR' structure, then that+-- structure controls parameters of dynamic render pass instances that the+-- 'Vulkan.Core10.Handles.CommandBuffer' /can/ be executed within. If+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@+-- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', or+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+-- is not specified in+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@,+-- parameters of this structure are ignored.+--+-- If @colorAttachmentCount@ is @0@ and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>+-- feature is enabled, @rasterizationSamples@ is ignored.+--+-- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of+-- @pColorAttachmentFormats@ is+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the+-- corresponding attachment is unused within the render pass.+--+-- == Valid Usage+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-colorAttachmentCount-06004#+--     If @colorAttachmentCount@ is not @0@, @rasterizationSamples@ /must/+--     be a valid+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-variableMultisampleRate-06005#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>+--     feature is not enabled, @rasterizationSamples@ /must/ be a valid+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-06006#+--     If any element of @pColorAttachmentFormats@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-depthAttachmentFormat-06007#+--     If @depthAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-stencilAttachmentFormat-06199#+--     If @stencilAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-depthAttachmentFormat-06200#+--     If @depthAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and+--     @stencilAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',+--     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-multiview-06008# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>+--     feature is not enabled, @viewMask@ /must/ be @0@+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-viewMask-06009# The+--     index of the most significant bit in @viewMask@ /must/ be less than+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-flags-parameter#+--     @flags@ /must/ be a valid combination of 'RenderingFlagBitsKHR'+--     values+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-parameter#+--     @pColorAttachmentFormats@ /must/ be a valid pointer to an array of+--     @colorAttachmentCount@ valid 'Vulkan.Core10.Enums.Format.Format'+--     values+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-depthAttachmentFormat-parameter#+--     @depthAttachmentFormat@ /must/ be a valid+--     'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-stencilAttachmentFormat-parameter#+--     @stencilAttachmentFormat@ /must/ be a valid+--     'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-rasterizationSamples-parameter#+--     If @rasterizationSamples@ is not @0@, @rasterizationSamples@ /must/+--     be a valid+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-colorAttachmentCount-arraylength#+--     @colorAttachmentCount@ /must/ be greater than @0@+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'Vulkan.Core10.Enums.Format.Format', 'RenderingFlagsKHR',+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfoKHR+  { -- | @flags@ is a bitmask of 'RenderingFlagBitsKHR' used by the render pass+    -- instance.+    flags :: RenderingFlagsKHR+  , -- | @viewMask@ is the view mask used for rendering.+    viewMask :: Word32+  , -- | @pColorAttachmentFormats@ is an array of+    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color+    -- attachments.+    colorAttachmentFormats :: Vector Format+  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value+    -- defining the format of the depth attachment.+    depthAttachmentFormat :: Format+  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value+    -- defining the format of the stencil attachment.+    stencilAttachmentFormat :: Format+  , -- | @rasterizationSamples@ is a+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying+    -- the number of samples used in rasterization.+    rasterizationSamples :: SampleCountFlagBits+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (CommandBufferInheritanceRenderingInfoKHR)+#endif+deriving instance Show CommandBufferInheritanceRenderingInfoKHR++instance ToCStruct CommandBufferInheritanceRenderingInfoKHR where+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p CommandBufferInheritanceRenderingInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr RenderingFlagsKHR)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewMask)+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentFormats)) :: Word32))+    pPColorAttachmentFormats' <- ContT $ allocaBytes @Format ((Data.Vector.length (colorAttachmentFormats)) * 4)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (colorAttachmentFormats)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Format))) (pPColorAttachmentFormats')+    lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (depthAttachmentFormat)+    lift $ poke ((p `plusPtr` 44 :: Ptr Format)) (stencilAttachmentFormat)+    lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (rasterizationSamples)+    lift $ f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Format)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Format)) (zero)+    f++instance FromCStruct CommandBufferInheritanceRenderingInfoKHR where+  peekCStruct p = do+    flags <- peek @RenderingFlagsKHR ((p `plusPtr` 16 :: Ptr RenderingFlagsKHR))+    viewMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 32 :: Ptr (Ptr Format)))+    pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Format ((pColorAttachmentFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))+    depthAttachmentFormat <- peek @Format ((p `plusPtr` 40 :: Ptr Format))+    stencilAttachmentFormat <- peek @Format ((p `plusPtr` 44 :: Ptr Format))+    rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 48 :: Ptr SampleCountFlagBits))+    pure $ CommandBufferInheritanceRenderingInfoKHR+             flags viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat rasterizationSamples++instance Zero CommandBufferInheritanceRenderingInfoKHR where+  zero = CommandBufferInheritanceRenderingInfoKHR+           zero+           zero+           mempty+           zero+           zero+           zero+++-- | VkAttachmentSampleCountInfoAMD - Structure specifying command buffer+-- inheritance info for dynamic render pass instances+--+-- = Description+--+-- If+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@+-- is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+-- is specified in+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@, and the+-- @pNext@ chain of+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes+-- 'AttachmentSampleCountInfoAMD', then this structure defines the sample+-- counts of each attachment within the render pass instance. If+-- 'AttachmentSampleCountInfoAMD' is not included, the value of+-- 'CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@ is+-- used as the sample count for each attachment. If+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@+-- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', or+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+-- is not specified in+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@,+-- parameters of this structure are ignored.+--+-- 'AttachmentSampleCountInfoAMD' /can/ also be included in the @pNext@+-- chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'. When a+-- graphics pipeline is created without a+-- 'Vulkan.Core10.Handles.RenderPass', if this structure is present in the+-- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it+-- specifies the sample count of attachments used for rendering. If this+-- structure is not specified, and the pipeline does not include a+-- 'Vulkan.Core10.Handles.RenderPass', the value of+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+-- is used as the sample count for each attachment. If a graphics pipeline+-- is created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters+-- of this structure are ignored.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAttachmentSampleCountInfoAMD-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'+--+-- -   #VUID-VkAttachmentSampleCountInfoAMD-pColorAttachmentSamples-parameter#+--     @pColorAttachmentSamples@ /must/ be a valid pointer to an array of+--     @colorAttachmentCount@ valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values+--+-- -   #VUID-VkAttachmentSampleCountInfoAMD-depthStencilAttachmentSamples-parameter#+--     If @depthStencilAttachmentSamples@ is not @0@,+--     @depthStencilAttachmentSamples@ /must/ be a valid+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+--+-- -   #VUID-VkAttachmentSampleCountInfoAMD-colorAttachmentCount-arraylength#+--     @colorAttachmentCount@ /must/ be greater than @0@+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>,+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data AttachmentSampleCountInfoAMD = AttachmentSampleCountInfoAMD+  { -- | @pColorAttachmentSamples@ is an array of+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values+    -- defining the sample count of color attachments.+    colorAttachmentSamples :: Vector SampleCountFlagBits+  , -- | @depthStencilAttachmentSamples@ is a+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+    -- defining the sample count of a depth\/stencil attachment.+    depthStencilAttachmentSamples :: SampleCountFlagBits+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AttachmentSampleCountInfoAMD)+#endif+deriving instance Show AttachmentSampleCountInfoAMD++instance ToCStruct AttachmentSampleCountInfoAMD where+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AttachmentSampleCountInfoAMD{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentSamples)) :: Word32))+    pPColorAttachmentSamples' <- ContT $ allocaBytes @SampleCountFlagBits ((Data.Vector.length (colorAttachmentSamples)) * 4)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentSamples' `plusPtr` (4 * (i)) :: Ptr SampleCountFlagBits) (e)) (colorAttachmentSamples)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr SampleCountFlagBits))) (pPColorAttachmentSamples')+    lift $ poke ((p `plusPtr` 32 :: Ptr SampleCountFlagBits)) (depthStencilAttachmentSamples)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    f++instance FromCStruct AttachmentSampleCountInfoAMD where+  peekCStruct p = do+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pColorAttachmentSamples <- peek @(Ptr SampleCountFlagBits) ((p `plusPtr` 24 :: Ptr (Ptr SampleCountFlagBits)))+    pColorAttachmentSamples' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @SampleCountFlagBits ((pColorAttachmentSamples `advancePtrBytes` (4 * (i)) :: Ptr SampleCountFlagBits)))+    depthStencilAttachmentSamples <- peek @SampleCountFlagBits ((p `plusPtr` 32 :: Ptr SampleCountFlagBits))+    pure $ AttachmentSampleCountInfoAMD+             pColorAttachmentSamples' depthStencilAttachmentSamples++instance Zero AttachmentSampleCountInfoAMD where+  zero = AttachmentSampleCountInfoAMD+           mempty+           zero+++-- | VkMultiviewPerViewAttributesInfoNVX - Structure specifying the multiview+-- per-attribute properties+--+-- = Description+--+-- When dynamic render pass instances are being used, instead of specifying+-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'+-- or+-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX'+-- in the subpass description flags, the per-attibute properties of the+-- render pass instance /must/ be specified by the+-- 'MultiviewPerViewAttributesInfoNVX' structure Include the+-- 'MultiviewPerViewAttributesInfoNVX' structure in the @pNext@ chain of+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' when creating a+-- graphics pipeline for dynamic rendering, 'RenderingInfoKHR' when+-- starting a dynamic render pass instance, and+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' when+-- specifying the dynamic render pass instance parameters for secondary+-- command buffers.+--+-- == Valid Usage+--+-- -   #VUID-VkMultiviewPerViewAttributesInfoNVX-perViewAttributesPositionXOnly-06163#+--     If @perViewAttributesPositionXOnly@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE' then @perViewAttributes@+--     /must/ also be 'Vulkan.Core10.FundamentalTypes.TRUE'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkMultiviewPerViewAttributesInfoNVX-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data MultiviewPerViewAttributesInfoNVX = MultiviewPerViewAttributesInfoNVX+  { -- | @perViewAttributes@ specifies that shaders compiled for this pipeline+    -- write the attributes for all views in a single invocation of each vertex+    -- processing stage. All pipelines executed within a render pass instance+    -- that includes this bit /must/ write per-view attributes to the+    -- @*PerViewNV[]@ shader outputs, in addition to the non-per-view (e.g.+    -- @Position@) outputs.+    perViewAttributes :: Bool+  , -- | @perViewAttributesPositionXOnly@ specifies that shaders compiled for+    -- this pipeline use per-view positions which only differ in value in the x+    -- component. Per-view viewport mask /can/ also be used.+    perViewAttributesPositionXOnly :: Bool+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (MultiviewPerViewAttributesInfoNVX)+#endif+deriving instance Show MultiviewPerViewAttributesInfoNVX++instance ToCStruct MultiviewPerViewAttributesInfoNVX where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p MultiviewPerViewAttributesInfoNVX{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (perViewAttributes))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (perViewAttributesPositionXOnly))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)+    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 MultiviewPerViewAttributesInfoNVX where+  peekCStruct p = do+    perViewAttributes <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    perViewAttributesPositionXOnly <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    pure $ MultiviewPerViewAttributesInfoNVX+             (bool32ToBool perViewAttributes) (bool32ToBool perViewAttributesPositionXOnly)++instance Storable MultiviewPerViewAttributesInfoNVX where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MultiviewPerViewAttributesInfoNVX where+  zero = MultiviewPerViewAttributesInfoNVX+           zero+           zero+++type RenderingFlagsKHR = RenderingFlagBitsKHR++-- | VkRenderingFlagBitsKHR - Bitmask specifying additional properties of a+-- dynamic render pass instance+--+-- = Description+--+-- The contents of @pRenderingInfo@ /must/ match between suspended render+-- pass instances and the render pass instances that resume them, other+-- than the presence or absence of the 'RENDERING_RESUMING_BIT_KHR',+-- 'RENDERING_SUSPENDING_BIT_KHR', and+-- 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR' flags. No action+-- or synchronization commands, or other render pass instances, are allowed+-- between suspending and resuming render pass instances.+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,+-- 'RenderingFlagsKHR'+newtype RenderingFlagBitsKHR = RenderingFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR' specifies that+-- draw calls for the render pass instance will be recorded in secondary+-- command buffers.+pattern RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = RenderingFlagBitsKHR 0x00000001+-- | 'RENDERING_SUSPENDING_BIT_KHR' specifies that the render pass instance+-- will be suspended.+pattern RENDERING_SUSPENDING_BIT_KHR                         = RenderingFlagBitsKHR 0x00000002+-- | 'RENDERING_RESUMING_BIT_KHR' specifies that the render pass instance is+-- resuming an earlier suspended render pass instance.+pattern RENDERING_RESUMING_BIT_KHR                           = RenderingFlagBitsKHR 0x00000004++conNameRenderingFlagBitsKHR :: String+conNameRenderingFlagBitsKHR = "RenderingFlagBitsKHR"++enumPrefixRenderingFlagBitsKHR :: String+enumPrefixRenderingFlagBitsKHR = "RENDERING_"++showTableRenderingFlagBitsKHR :: [(RenderingFlagBitsKHR, String)]+showTableRenderingFlagBitsKHR =+  [ (RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR, "CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR")+  , (RENDERING_SUSPENDING_BIT_KHR                        , "SUSPENDING_BIT_KHR")+  , (RENDERING_RESUMING_BIT_KHR                          , "RESUMING_BIT_KHR")+  ]++instance Show RenderingFlagBitsKHR where+  showsPrec = enumShowsPrec enumPrefixRenderingFlagBitsKHR+                            showTableRenderingFlagBitsKHR+                            conNameRenderingFlagBitsKHR+                            (\(RenderingFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read RenderingFlagBitsKHR where+  readPrec = enumReadPrec enumPrefixRenderingFlagBitsKHR+                          showTableRenderingFlagBitsKHR+                          conNameRenderingFlagBitsKHR+                          RenderingFlagBitsKHR+++-- No documentation found for TopLevel "VkAttachmentSampleCountInfoNV"+type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD+++type KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION"+pattern KHR_DYNAMIC_RENDERING_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1+++type KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering"++-- No documentation found for TopLevel "VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME"+pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering"+
+ src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs-boot view
@@ -0,0 +1,339 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_dynamic_rendering - device extension+--+-- == VK_KHR_dynamic_rendering+--+-- [__Name String__]+--     @VK_KHR_dynamic_rendering@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     45+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_dynamic_rendering] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_dynamic_rendering extension>> >+--+-- [__Extension Proposal__]+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_dynamic_rendering.asciidoc VK_KHR_dynamic_rendering>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-10-06+--+-- [__Contributors__]+--+--     -   Tobias Hector, AMD+--+--     -   Arseny Kapoulkine, Roblox+--+--     -   François Duranleau, Gameloft+--+--     -   Stuart Smith, AMD+--+--     -   Hai Nguyen, Google+--+--     -   Jean-François Roy, Google+--+--     -   Jeff Leger, Qualcomm+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Piers Daniell, Nvidia+--+--     -   James Fitzpatrick, Imagination+--+--     -   Piotr Byszewski, Mobica+--+--     -   Jesse Hall, Google+--+--     -   Mike Blumenkrantz, Valve+--+-- == Description+--+-- This extension allows applications to create single-pass render pass+-- instances without needing to create render pass objects or framebuffers.+-- Dynamic render passes can also span across multiple primary command+-- buffers, rather than relying on secondary command buffers.+--+-- This extension also incorporates+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'+-- from <VK_QCOM_render_pass_store_ops.html VK_QCOM_render_pass_store_ops>,+-- enabling applications to avoid unnecessary synchronization when an+-- attachment is not written during a render pass.+--+-- == New Commands+--+-- -   'cmdBeginRenderingKHR'+--+-- -   'cmdEndRenderingKHR'+--+-- == New Structures+--+-- -   'RenderingAttachmentInfoKHR'+--+-- -   'RenderingInfoKHR'+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':+--+--     -   'CommandBufferInheritanceRenderingInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineRenderingCreateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDynamicRenderingFeaturesKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'AttachmentSampleCountInfoAMD'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>+-- is supported:+--+-- -   Extending 'RenderingInfoKHR':+--+--     -   'RenderingFragmentDensityMapAttachmentInfoEXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>+-- is supported:+--+-- -   Extending 'RenderingInfoKHR':+--+--     -   'RenderingFragmentShadingRateAttachmentInfoKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'AttachmentSampleCountInfoNV'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+--     'RenderingInfoKHR':+--+--     -   'MultiviewPerViewAttributesInfoNVX'+--+-- == New Enums+--+-- -   'RenderingFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'RenderingFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DYNAMIC_RENDERING_EXTENSION_NAME'+--+-- -   'KHR_DYNAMIC_RENDERING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':+--+--     -   'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'+--+-- == Version History+--+-- -   Revision 1, 2021-10-06 (Tobias Hector)+--+--     -   Initial revision+--+-- = See Also+--+-- 'CommandBufferInheritanceRenderingInfoKHR',+-- 'PhysicalDeviceDynamicRenderingFeaturesKHR',+-- 'PipelineRenderingCreateInfoKHR', 'RenderingAttachmentInfoKHR',+-- 'RenderingFlagBitsKHR', 'RenderingFlagsKHR', 'RenderingInfoKHR',+-- 'cmdBeginRenderingKHR', 'cmdEndRenderingKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_dynamic_rendering  ( AttachmentSampleCountInfoAMD+                                                   , CommandBufferInheritanceRenderingInfoKHR+                                                   , MultiviewPerViewAttributesInfoNVX+                                                   , PhysicalDeviceDynamicRenderingFeaturesKHR+                                                   , PipelineRenderingCreateInfoKHR+                                                   , RenderingAttachmentInfoKHR+                                                   , RenderingFragmentDensityMapAttachmentInfoEXT+                                                   , RenderingFragmentShadingRateAttachmentInfoKHR+                                                   , RenderingInfoKHR+                                                   ) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)+import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)+import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)+data AttachmentSampleCountInfoAMD++instance ToCStruct AttachmentSampleCountInfoAMD+instance Show AttachmentSampleCountInfoAMD++instance FromCStruct AttachmentSampleCountInfoAMD+++data CommandBufferInheritanceRenderingInfoKHR++instance ToCStruct CommandBufferInheritanceRenderingInfoKHR+instance Show CommandBufferInheritanceRenderingInfoKHR++instance FromCStruct CommandBufferInheritanceRenderingInfoKHR+++data MultiviewPerViewAttributesInfoNVX++instance ToCStruct MultiviewPerViewAttributesInfoNVX+instance Show MultiviewPerViewAttributesInfoNVX++instance FromCStruct MultiviewPerViewAttributesInfoNVX+++data PhysicalDeviceDynamicRenderingFeaturesKHR++instance ToCStruct PhysicalDeviceDynamicRenderingFeaturesKHR+instance Show PhysicalDeviceDynamicRenderingFeaturesKHR++instance FromCStruct PhysicalDeviceDynamicRenderingFeaturesKHR+++data PipelineRenderingCreateInfoKHR++instance ToCStruct PipelineRenderingCreateInfoKHR+instance Show PipelineRenderingCreateInfoKHR++instance FromCStruct PipelineRenderingCreateInfoKHR+++data RenderingAttachmentInfoKHR++instance ToCStruct RenderingAttachmentInfoKHR+instance Show RenderingAttachmentInfoKHR+++data RenderingFragmentDensityMapAttachmentInfoEXT++instance ToCStruct RenderingFragmentDensityMapAttachmentInfoEXT+instance Show RenderingFragmentDensityMapAttachmentInfoEXT++instance FromCStruct RenderingFragmentDensityMapAttachmentInfoEXT+++data RenderingFragmentShadingRateAttachmentInfoKHR++instance ToCStruct RenderingFragmentShadingRateAttachmentInfoKHR+instance Show RenderingFragmentShadingRateAttachmentInfoKHR++instance FromCStruct RenderingFragmentShadingRateAttachmentInfoKHR+++type role RenderingInfoKHR nominal+data RenderingInfoKHR (es :: [Type])++instance (Extendss RenderingInfoKHR es, PokeChain es) => ToCStruct (RenderingInfoKHR es)+instance Show (Chain es) => Show (RenderingInfoKHR es)+
src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs view
@@ -507,23 +507,11 @@ -- -- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT' ----- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT'--- -- The implementation /must/ ensure the access rights allow read and write -- access to the memory. ----- For handles of the following types:------ -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT'------ -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT'------ The access rights /must/ be:------ -   @GENERIC_ALL@------     [1]---         <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights>+-- [1]+--     <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights> -- -- == Valid Usage --@@ -531,10 +519,6 @@ --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@ --     does not include --     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT',---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT',---     or---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT', --     a 'ExportMemoryWin32HandleInfoKHR' structure /must/ not be included --     in the @pNext@ chain of 'Vulkan.Core10.Memory.MemoryAllocateInfo' --
src/Vulkan/Extensions/VK_KHR_maintenance1.hs view
@@ -135,6 +135,10 @@ -- -- == New Enum Constants --+-- -   'KHR_MAINTENANCE1_EXTENSION_NAME'+--+-- -   'KHR_MAINTENANCE1_SPEC_VERSION'+-- -- -   'KHR_MAINTENANCE_1_EXTENSION_NAME' -- -- -   'KHR_MAINTENANCE_1_SPEC_VERSION'
src/Vulkan/Extensions/VK_KHR_maintenance2.hs view
@@ -131,6 +131,10 @@ -- -- == New Enum Constants --+-- -   'KHR_MAINTENANCE2_EXTENSION_NAME'+--+-- -   'KHR_MAINTENANCE2_SPEC_VERSION'+-- -- -   'KHR_MAINTENANCE_2_EXTENSION_NAME' -- -- -   'KHR_MAINTENANCE_2_SPEC_VERSION'
src/Vulkan/Extensions/VK_KHR_maintenance3.hs view
@@ -84,6 +84,10 @@ -- -- == New Enum Constants --+-- -   'KHR_MAINTENANCE3_EXTENSION_NAME'+--+-- -   'KHR_MAINTENANCE3_SPEC_VERSION'+-- -- -   'KHR_MAINTENANCE_3_EXTENSION_NAME' -- -- -   'KHR_MAINTENANCE_3_SPEC_VERSION'
src/Vulkan/Extensions/VK_KHR_present_id.hs view
@@ -250,7 +250,7 @@ -- -   #VUID-VkPresentIdKHR-swapchainCount-04998# @swapchainCount@ /must/ --     be the same value as --     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@,---     where this 'PresentIdKHR' is in the pNext-chain of the+--     where this 'PresentIdKHR' is in the @pNext@ chain of the --     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' structure -- -- -   #VUID-VkPresentIdKHR-presentIds-04999# Each @presentIds@ entry
src/Vulkan/Extensions/VK_KHR_present_wait.hs view
@@ -245,7 +245,7 @@ -- be signaled. -- -- When the presentation has completed, the presentId associated with the--- related @pSwapChains@ entry will be increased in value so that it is at+-- related @pSwapchains@ entry will be increased in value so that it is at -- least equal to the value provided in the -- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR' structure. --
src/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs view
@@ -82,6 +82,8 @@ -- --     -   'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE' --+--     -   'SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR'+-- -- == Example -- -- Creating a sampler with the new address mode in each dimension
src/Vulkan/Extensions/VK_KHR_synchronization2.hs view
@@ -123,6 +123,10 @@ --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2', --     overriding the original 32-bit stage and access masks. --+-- == New Base Types+--+-- -   'Vulkan.Core10.FundamentalTypes.Flags64'+-- -- == New Commands -- -- -   'cmdPipelineBarrier2KHR'@@ -404,8 +408,8 @@ -- -- 'AccessFlagBits2KHR', 'AccessFlags2KHR', 'BufferMemoryBarrier2KHR', -- 'CommandBufferSubmitInfoKHR', 'DependencyInfoKHR',--- 'ImageMemoryBarrier2KHR', 'MemoryBarrier2KHR',--- 'PhysicalDeviceSynchronization2FeaturesKHR',+-- 'Vulkan.Core10.FundamentalTypes.Flags64', 'ImageMemoryBarrier2KHR',+-- 'MemoryBarrier2KHR', 'PhysicalDeviceSynchronization2FeaturesKHR', -- 'PipelineStageFlagBits2KHR', 'PipelineStageFlags2KHR', -- 'SemaphoreSubmitInfoKHR', 'SubmitFlagBitsKHR', 'SubmitFlagsKHR', -- 'SubmitInfo2KHR', 'cmdPipelineBarrier2KHR', 'cmdResetEvent2KHR',@@ -1310,6 +1314,11 @@ --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT' --     /must/ not be included in the dependency flags --+-- -   #VUID-vkCmdPipelineBarrier2KHR-None-06191# If+--     'cmdPipelineBarrier2KHR' is called within a render pass instance,+--     the render pass /must/ not have been started with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+-- -- -   #VUID-vkCmdPipelineBarrier2KHR-synchronization2-03848# The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2> --     feature /must/ be enabled@@ -1402,8 +1411,7 @@ -- -- 'queueSubmit2KHR' is a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,--- with each batch defined by an element of @pSubmits@ as an instance of--- the 'SubmitInfo2KHR' structure.+-- with each batch defined by an element of @pSubmits@. -- -- Semaphore operations submitted with 'queueSubmit2KHR' have additional -- ordering constraints compared to other submission commands, with@@ -5024,6 +5032,40 @@ --     'SUBMIT_PROTECTED_BIT_KHR', each element of @pCommandBuffers@ /must/ --     not be a protected command buffer --+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06192# If any @commandBuffer@+--     member of an element of @pCommandBufferInfos@ contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension resumed render pass instances>,+--     they /must/ be suspended by a render pass instance earlier in+--     submission order within @pCommandBufferInfos@+--+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06010# If any @commandBuffer@+--     member of an element of @pCommandBufferInfos@ contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     they /must/ be resumed by a render pass instance later in submission+--     order within @pCommandBufferInfos@+--+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06011# If any @commandBuffer@+--     member of an element of @pCommandBufferInfos@ contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     there /must/ be no action or synchronization commands between that+--     render pass instance and the render pass instance that resumes it+--+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06012# If any @commandBuffer@+--     member of an element of @pCommandBufferInfos@ contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     there /must/ be no render pass instances between that render pass+--     instance and the render pass instance that resumes it+--+-- -   #VUID-VkSubmitInfo2KHR-variableSampleLocations-06013# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>+--     limit is not supported, and any @commandBuffer@ member of an element+--     of @pCommandBufferInfos@ contains any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,+--     where a graphics pipeline has been bound, any pipelines bound in the+--     render pass instance that resumes it, or any subsequent render pass+--     instances that resume from that one and so on, /must/ use the same+--     sample locations+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkSubmitInfo2KHR-sType-sType# @sType@ /must/ be@@ -5846,7 +5888,7 @@ -- the stage of the pipeline where the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment> -- or--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-attachment shading rate image>+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image> -- is read to determine the fragment shading rate for portions of a -- rasterized primitive. pattern PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits2KHR 0x0000000000400000
src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot view
@@ -123,6 +123,10 @@ --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2', --     overriding the original 32-bit stage and access masks. --+-- == New Base Types+--+-- -   'Vulkan.Core10.FundamentalTypes.Flags64'+-- -- == New Commands -- -- -   'cmdPipelineBarrier2KHR'@@ -404,8 +408,8 @@ -- -- 'AccessFlagBits2KHR', 'AccessFlags2KHR', 'BufferMemoryBarrier2KHR', -- 'CommandBufferSubmitInfoKHR', 'DependencyInfoKHR',--- 'ImageMemoryBarrier2KHR', 'MemoryBarrier2KHR',--- 'PhysicalDeviceSynchronization2FeaturesKHR',+-- 'Vulkan.Core10.FundamentalTypes.Flags64', 'ImageMemoryBarrier2KHR',+-- 'MemoryBarrier2KHR', 'PhysicalDeviceSynchronization2FeaturesKHR', -- 'PipelineStageFlagBits2KHR', 'PipelineStageFlags2KHR', -- 'SemaphoreSubmitInfoKHR', 'SubmitFlagBitsKHR', 'SubmitFlagsKHR', -- 'SubmitInfo2KHR', 'cmdPipelineBarrier2KHR', 'cmdResetEvent2KHR',
src/Vulkan/Extensions/VK_KHR_variable_pointers.hs view
@@ -111,6 +111,8 @@ -- --     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR' --+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR'+-- -- == New SPIR-V Capabilities -- -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-VariablePointers VariablePointers>
src/Vulkan/Extensions/VK_NV_device_generated_commands.hs view
@@ -1088,10 +1088,10 @@ -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1100,10 +1100,10 @@ -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1228,6 +1228,242 @@ --     /must/ have been called in the current command buffer prior to this --     draw command --+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06172# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdExecuteGeneratedCommandsNV-imageView-06173# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdExecuteGeneratedCommandsNV-imageView-06174# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdExecuteGeneratedCommandsNV-imageView-06175# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdExecuteGeneratedCommandsNV-imageView-06176# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdExecuteGeneratedCommandsNV-imageView-06177# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdExecuteGeneratedCommandsNV-viewMask-06178# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06179# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06180# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06181# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06182# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06183# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06184# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06186# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06187# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06189# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06190# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-06198# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04007# All vertex input --     bindings accessed via vertex input variables declared in the vertex --     shader entry point’s interface /must/ have either valid or@@ -1324,9 +1560,8 @@                                  -- 'Vulkan.Core10.FundamentalTypes.FALSE' this command will implicitly                                  -- trigger the preprocessing step, otherwise not.                                  ("isPreprocessed" ::: Bool)-                              -> -- | @pGeneratedCommandsInfo@ is a pointer to an instance of the-                                 -- 'GeneratedCommandsInfoNV' structure containing parameters affecting the-                                 -- generation of commands.+                              -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoNV'+                                 -- structure containing parameters affecting the generation of commands.                                  GeneratedCommandsInfoNV                               -> io () cmdExecuteGeneratedCommandsNV commandBuffer isPreprocessed generatedCommandsInfo = liftIO . evalContT $ do@@ -1411,9 +1646,8 @@                                   . (MonadIO io)                                  => -- | @commandBuffer@ is the command buffer which does the preprocessing.                                     CommandBuffer-                                 -> -- | @pGeneratedCommandsInfo@ is a pointer to an instance of the-                                    -- 'GeneratedCommandsInfoNV' structure containing parameters affecting the-                                    -- preprocessing step.+                                 -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoNV'+                                    -- structure containing parameters affecting the preprocessing step.                                     GeneratedCommandsInfoNV                                  -> io () cmdPreprocessGeneratedCommandsNV commandBuffer generatedCommandsInfo = liftIO . evalContT $ do@@ -1569,9 +1803,9 @@                                           . (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io)                                          => -- | @device@ is the logical device that owns the buffer.                                             Device-                                         -> -- | @pInfo@ is a pointer to an instance of the-                                            -- 'GeneratedCommandsMemoryRequirementsInfoNV' structure containing-                                            -- parameters required for the memory requirements query.+                                         -> -- | @pInfo@ is a pointer to a 'GeneratedCommandsMemoryRequirementsInfoNV'+                                            -- structure containing parameters required for the memory requirements+                                            -- query.                                             GeneratedCommandsMemoryRequirementsInfoNV                                          -> io (MemoryRequirements2 a) getGeneratedCommandsMemoryRequirementsNV device info = liftIO . evalContT $ do@@ -1643,9 +1877,9 @@                                 . (MonadIO io)                                => -- | @device@ is the logical device that creates the indirect command layout.                                   Device-                               -> -- | @pCreateInfo@ is a pointer to an instance of the-                                  -- 'IndirectCommandsLayoutCreateInfoNV' structure containing parameters-                                  -- affecting creation of the indirect command layout.+                               -> -- | @pCreateInfo@ is a pointer to a 'IndirectCommandsLayoutCreateInfoNV'+                                  -- structure containing parameters affecting creation of the indirect+                                  -- command layout.                                   IndirectCommandsLayoutCreateInfoNV                                -> -- | @pAllocator@ controls host memory allocation as described in the                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
src/Vulkan/Extensions/VK_NV_mesh_shader.hs view
@@ -703,10 +703,10 @@ -- -   #VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -715,10 +715,10 @@ -- -   #VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -842,6 +842,242 @@ --     /must/ have been called in the current command buffer prior to this --     draw command --+-- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06172# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksNV-imageView-06173# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksNV-imageView-06174# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksNV-imageView-06175# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksNV-imageView-06176# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksNV-imageView-06177# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksNV-viewMask-06178# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06180# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06181# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06182# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06183# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06184# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawMeshTasksNV-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMeshTasksNV-pDepthAttachment-06186# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMeshTasksNV-pDepthAttachment-06189# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06190# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksNV-renderPass-06198# If the current render+--     pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   #VUID-vkCmdDrawMeshTasksNV-taskCount-02119# @taskCount@ /must/ be --     less than or equal to --     'PhysicalDeviceMeshShaderPropertiesNV'::@maxDrawMeshTasksCount@@@ -1302,10 +1538,10 @@ -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1314,10 +1550,10 @@ -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1442,6 +1678,242 @@ --     /must/ have been called in the current command buffer prior to this --     draw command --+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06172# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectNV-imageView-06173# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectNV-imageView-06174# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectNV-imageView-06175# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectNV-imageView-06176# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectNV-imageView-06177# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectNV-viewMask-06178# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06180# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06181# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06182# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06183# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06188# 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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06189# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06190# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198# If the current+--     render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708# If @buffer@ is --     non-sparse then it /must/ be bound completely and contiguously to a --     single 'Vulkan.Core10.Handles.DeviceMemory' object@@ -1946,10 +2418,10 @@ -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -1958,10 +2430,10 @@ -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142# --     If the bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'---     dynamic state enabled and an instance of+--     dynamic state enabled and a --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     chained from @VkPipelineVieportCreateInfo@, then the bound graphics---     pipeline /must/ have been created with+--     structure chained from @VkPipelineVieportCreateInfo@, 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@@ -2085,6 +2557,242 @@ --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT' --     /must/ have been called in the current command buffer prior to this --     draw command+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06172# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectCountNV-imageView-06173# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectCountNV-imageView-06174# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectCountNV-imageView-06175# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectCountNV-imageView-06176# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectCountNV-imageView-06177# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179#+--     If the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound graphics pipeline /must/ have been created with+--     a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@+--     equal to+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06180#+--     If the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@+--     used to create the currently bound graphics pipeline+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06181# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06182# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@+--     used to create the currently bound graphics pipeline /must/ be equal+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06183# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     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_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06188#+--     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 current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'+--     with a+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@+--     parameter greater than @0@, then each element of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@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-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06189# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06190# If+--     the current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     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+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@: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.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198# If the+--     current render pass instance was begun with+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',+--     the currently bound pipeline /must/ have been created with a+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708# If @buffer@ is --     non-sparse then it /must/ be bound completely and contiguously to a
src/Vulkan/Extensions/VK_NV_viewport_array2.hs view
@@ -89,6 +89,10 @@ -- -- == New Enum Constants --+-- -   'NV_VIEWPORT_ARRAY2_EXTENSION_NAME'+--+-- -   'NV_VIEWPORT_ARRAY2_SPEC_VERSION'+-- -- -   'NV_VIEWPORT_ARRAY_2_EXTENSION_NAME' -- -- -   'NV_VIEWPORT_ARRAY_2_SPEC_VERSION'
src/Vulkan/Extensions/VK_QCOM_render_pass_shader_resolve.hs view
@@ -98,7 +98,7 @@ -- resolve hardware has this limitation, there is little reason to require -- a shader resolve to resolve to a single sample buffer. ----- 3) Should a shader resolve subpass be the last subpass in a renderpass?+-- 3) Should a shader resolve subpass be the last subpass in a render pass? -- -- __RESOLVED__ Yes. --
src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs view
@@ -37,8 +37,8 @@ -- -- == Description ----- Renderpass attachments /can/ be read-only for the duration of a--- renderpass.+-- Renderpass attachments /can/ be read-only for the duration of a render+-- pass. -- -- Examples include input attachments and depth attachments where depth -- tests are enabled but depth writes are not enabled.@@ -104,9 +104,9 @@                                                         ) where  import Data.String (IsString)-import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE_EXT))+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE_KHR)) -- No documentation found for TopLevel "VK_ATTACHMENT_STORE_OP_NONE_QCOM"-pattern ATTACHMENT_STORE_OP_NONE_QCOM = ATTACHMENT_STORE_OP_NONE_EXT+pattern ATTACHMENT_STORE_OP_NONE_QCOM = ATTACHMENT_STORE_OP_NONE_KHR   type QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION = 2
src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs view
@@ -52,7 +52,7 @@ -- copying between two resources, where one resource contains rotated -- content and the other does not, a rotated copy may be desired. This -- extension may be used in combination with VK_QCOM_render_pass_transform--- which adds rotated renderpasses.+-- which adds rotated render passes. -- -- This extension adds an extension structure to the following commands: -- vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and
src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot view
@@ -52,7 +52,7 @@ -- copying between two resources, where one resource contains rotated -- content and the other does not, a rotated copy may be desired. This -- extension may be used in combination with VK_QCOM_render_pass_transform--- which adds rotated renderpasses.+-- which adds rotated render passes. -- -- This extension adds an extension structure to the following commands: -- vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and
src/Vulkan/Version.hs view
@@ -19,11 +19,11 @@ import Data.Word (Word32)  pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 196+pattern HEADER_VERSION = 197   pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 196+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 197   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.13+version:        3.13.1 synopsis:       Bindings to the Vulkan graphics API. description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme) category:       Graphics@@ -395,6 +395,7 @@       Vulkan.Extensions.VK_KHR_display_swapchain       Vulkan.Extensions.VK_KHR_draw_indirect_count       Vulkan.Extensions.VK_KHR_driver_properties+      Vulkan.Extensions.VK_KHR_dynamic_rendering       Vulkan.Extensions.VK_KHR_external_fence       Vulkan.Extensions.VK_KHR_external_fence_capabilities       Vulkan.Extensions.VK_KHR_external_fence_fd