{-# language CPP #-} -- No documentation found for Chapter "CommandBufferBuilding" module Vulkan.Core10.CommandBufferBuilding ( cmdBindPipeline , cmdSetViewport , cmdSetScissor , cmdSetLineWidth , cmdSetDepthBias , cmdSetBlendConstants , cmdSetDepthBounds , cmdSetStencilCompareMask , cmdSetStencilWriteMask , cmdSetStencilReference , cmdBindDescriptorSets , cmdBindIndexBuffer , cmdBindVertexBuffers , cmdDraw , cmdDrawIndexed , cmdDrawIndirect , cmdDrawIndexedIndirect , cmdDispatch , cmdDispatchIndirect , cmdCopyBuffer , cmdCopyImage , cmdBlitImage , cmdCopyBufferToImage , cmdCopyImageToBuffer , cmdUpdateBuffer , cmdFillBuffer , cmdClearColorImage , cmdClearDepthStencilImage , cmdClearAttachments , cmdResolveImage , cmdSetEvent , cmdResetEvent , cmdWaitEvents , cmdWaitEventsSafe , cmdPipelineBarrier , cmdBeginQuery , cmdUseQuery , cmdEndQuery , cmdResetQueryPool , cmdWriteTimestamp , cmdCopyQueryPoolResults , cmdPushConstants , cmdBeginRenderPass , cmdUseRenderPass , cmdNextSubpass , cmdEndRenderPass , cmdExecuteCommands , ClearRect(..) , ImageSubresourceLayers(..) , BufferCopy(..) , ImageCopy(..) , ImageBlit(..) , BufferImageCopy(..) , ImageResolve(..) , RenderPassBeginInfo(..) , ClearDepthStencilValue(..) , ClearAttachment(..) , ClearColorValue(..) , ClearValue(..) , IndexType(..) , SubpassContents(..) , StencilFaceFlagBits(..) , StencilFaceFlags ) where import Vulkan.CStruct.Utils (FixedArray) import Vulkan.Internal.Utils (traceAroundEvent) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Data.Typeable (eqT) import Foreign.Marshal.Alloc (allocaBytes) import Foreign.Marshal.Alloc (callocBytes) import Foreign.Marshal.Alloc (free) import GHC.IO (throwIO) import GHC.Ptr (castPtr) import GHC.Ptr (nullFunPtr) import Foreign.Ptr (plusPtr) import Data.Coerce (coerce) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.Trans.Cont (runContT) import qualified Data.Vector (imapM_) import qualified Data.Vector (length) import Foreign.C.Types (CFloat(..)) import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (FromCStruct(..)) import Vulkan.CStruct (ToCStruct) import Vulkan.CStruct (ToCStruct(..)) import Vulkan.Zero (Zero(..)) import Control.Monad.IO.Class (MonadIO) import Data.Type.Equality ((:~:)(Refl)) import Data.Typeable (Typeable) import Foreign.C.Types (CFloat) import Foreign.C.Types (CFloat(..)) import Foreign.C.Types (CFloat(CFloat)) 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 Data.Int (Int32) import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) 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.CStruct.Extends (forgetExtensions) import Vulkan.CStruct.Utils (lowerArrayPtr) import Vulkan.CStruct.Extends (pokeSomeCStruct) import Vulkan.NamedType ((:::)) import Vulkan.Core10.Handles (Buffer) import Vulkan.Core10.Handles (Buffer(..)) import Vulkan.Core10.OtherTypes (BufferMemoryBarrier) import Vulkan.CStruct.Extends (Chain) import Vulkan.Core10.Handles (CommandBuffer) import Vulkan.Core10.Handles (CommandBuffer(..)) import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer)) import Vulkan.Core10.Handles (CommandBuffer_T) import Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlagBits(..)) import Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags) import Vulkan.Core10.Handles (DescriptorSet) import Vulkan.Core10.Handles (DescriptorSet(..)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginQuery)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginRenderPass)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBindDescriptorSets)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBindIndexBuffer)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBindPipeline)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBindVertexBuffers)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBlitImage)) import Vulkan.Dynamic (DeviceCmds(pVkCmdClearAttachments)) import Vulkan.Dynamic (DeviceCmds(pVkCmdClearColorImage)) import Vulkan.Dynamic (DeviceCmds(pVkCmdClearDepthStencilImage)) import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBuffer)) import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBufferToImage)) import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImage)) import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImageToBuffer)) import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyQueryPoolResults)) import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatch)) import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchIndirect)) import Vulkan.Dynamic (DeviceCmds(pVkCmdDraw)) import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndexed)) import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndexedIndirect)) import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirect)) import Vulkan.Dynamic (DeviceCmds(pVkCmdEndQuery)) import Vulkan.Dynamic (DeviceCmds(pVkCmdEndRenderPass)) import Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteCommands)) import Vulkan.Dynamic (DeviceCmds(pVkCmdFillBuffer)) import Vulkan.Dynamic (DeviceCmds(pVkCmdNextSubpass)) import Vulkan.Dynamic (DeviceCmds(pVkCmdPipelineBarrier)) import Vulkan.Dynamic (DeviceCmds(pVkCmdPushConstants)) import Vulkan.Dynamic (DeviceCmds(pVkCmdResetEvent)) import Vulkan.Dynamic (DeviceCmds(pVkCmdResetQueryPool)) import Vulkan.Dynamic (DeviceCmds(pVkCmdResolveImage)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetBlendConstants)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBias)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBounds)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetEvent)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetLineWidth)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetScissor)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilCompareMask)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilReference)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilWriteMask)) import Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewport)) import Vulkan.Dynamic (DeviceCmds(pVkCmdUpdateBuffer)) import Vulkan.Dynamic (DeviceCmds(pVkCmdWaitEvents)) import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteTimestamp)) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo) import Vulkan.Core10.FundamentalTypes (DeviceSize) import Vulkan.Core10.Handles (Event) import Vulkan.Core10.Handles (Event(..)) import Vulkan.CStruct.Extends (Extends) import Vulkan.CStruct.Extends (Extendss) import Vulkan.CStruct.Extends (Extensible(..)) import Vulkan.Core10.FundamentalTypes (Extent3D) import Vulkan.Core10.Enums.Filter (Filter) import Vulkan.Core10.Enums.Filter (Filter(..)) import Vulkan.Core10.Handles (Framebuffer) import Vulkan.Core10.Handles (Image) import Vulkan.Core10.Handles (Image(..)) import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags) import Vulkan.Core10.Enums.ImageLayout (ImageLayout) import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..)) import Vulkan.Core10.OtherTypes (ImageMemoryBarrier) import Vulkan.Core10.ImageView (ImageSubresourceRange) import Vulkan.Core10.Enums.IndexType (IndexType) import Vulkan.Core10.Enums.IndexType (IndexType(..)) import Vulkan.Core10.OtherTypes (MemoryBarrier) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas (MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM) import Vulkan.Core10.FundamentalTypes (Offset3D) import Vulkan.Core10.Handles (Pipeline) import Vulkan.Core10.Handles (Pipeline(..)) import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint) import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..)) import Vulkan.Core10.Handles (PipelineLayout) import Vulkan.Core10.Handles (PipelineLayout(..)) import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits) import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(..)) import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags) import Vulkan.CStruct.Extends (PokeChain) import Vulkan.CStruct.Extends (PokeChain(..)) import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..)) import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags) import Vulkan.Core10.Handles (QueryPool) import Vulkan.Core10.Handles (QueryPool(..)) import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..)) import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags) import Vulkan.Core10.FundamentalTypes (Rect2D) import Vulkan.Core10.Handles (RenderPass) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeBeginInfoARM) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM) import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..)) import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags) import Vulkan.CStruct.Extends (SomeStruct) import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlagBits(..)) import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags) import Vulkan.Core10.Enums.StructureType (StructureType) import Vulkan.Core10.Enums.SubpassContents (SubpassContents) import Vulkan.Core10.Enums.SubpassContents (SubpassContents(..)) import Vulkan.Core10.GraphicsPipeline (Viewport) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)) import Vulkan.Core10.Enums.IndexType (IndexType(..)) import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlagBits(..)) import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags) import Vulkan.Core10.Enums.SubpassContents (SubpassContents(..)) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdBindPipeline :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO () -- | vkCmdBindPipeline - Bind a pipeline object to a command buffer -- -- = Description -- -- Once bound, a pipeline binding affects subsequent commands that interact -- with the given pipeline type in the command buffer until a different -- pipeline of the same type is bound to the bind point, or until the -- pipeline bind point is disturbed by binding a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader object> -- as described in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects-pipeline-interaction Interaction with Pipelines>. -- Commands that do not interact with the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-binding given pipeline> -- type /must/ not be affected by the pipeline state. -- -- == Valid Usage -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-00777# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE', -- the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support compute operations -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-00778# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS', -- the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support graphics operations -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-00779# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE', -- @pipeline@ /must/ be a compute pipeline -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-00780# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS', -- @pipeline@ /must/ be a graphics pipeline -- -- - #VUID-vkCmdBindPipeline-pipeline-00781# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate> -- feature is not supported, @pipeline@ is a graphics pipeline, the -- current subpass -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-noattachments uses no attachments>, -- and this is not the first call to this function with a graphics -- pipeline after transitioning to the current subpass, then the sample -- count specified by this pipeline /must/ match that set in the -- previous pipeline -- -- - #VUID-vkCmdBindPipeline-variableSampleLocations-01525# If -- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', and @pipeline@ is a -- graphics pipeline created with a @renderPass@ that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and with a -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT' -- structure having its @sampleLocationsEnable@ member set to -- 'Vulkan.Core10.FundamentalTypes.TRUE' but without -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- enabled then the current render pass instance /must/ have been begun -- by specifying a -- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT' -- structure whose @pPostSubpassSampleLocations@ member contains an -- element with a @subpassIndex@ matching the current subpass index and -- the @sampleLocationsInfo@ member of that element /must/ match the -- @sampleLocationsInfo@ specified in -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT' -- when the pipeline was created -- -- - #VUID-vkCmdBindPipeline-None-02323# This command /must/ not be -- recorded when transform feedback is active -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-02391# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR', -- the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support compute operations -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-02392# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR', -- @pipeline@ /must/ be a ray tracing pipeline -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-06721# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR', -- @commandBuffer@ /must/ not be a protected command buffer -- -- - #VUID-vkCmdBindPipeline-pipelineProtectedAccess-07408# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess> -- feature is enabled, and @commandBuffer@ is a protected command -- buffer, @pipeline@ /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT' -- -- - #VUID-vkCmdBindPipeline-pipelineProtectedAccess-07409# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess> -- feature is enabled, and @commandBuffer@ is not a protected command -- buffer, @pipeline@ /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT' -- -- - #VUID-vkCmdBindPipeline-pipeline-03382# @pipeline@ /must/ not have -- been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR' -- set -- -- - #VUID-vkCmdBindPipeline-commandBuffer-04808# If @commandBuffer@ is a -- secondary command buffer with -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@ -- enabled and @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS', -- then the @pipeline@ /must/ have been created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT', and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' enabled -- -- - #VUID-vkCmdBindPipeline-commandBuffer-04809# If @commandBuffer@ is a -- secondary command buffer with -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@ -- enabled and @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- and @pipeline@ was created with -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure and its @discardRectangleCount@ member is not @0@, or the -- pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT' -- enabled, then the pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- enabled -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-04881# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline> -- 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 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-pipelineBindPoint-09910# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_DATA_GRAPH_ARM', -- the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ have been created for a queue family that -- supports -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM' -- -- - #VUID-vkCmdBindPipeline-pipelineBindPoint-09911# If -- @pipelineBindPoint@ is -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_DATA_GRAPH_ARM', -- @pipeline@ /must/ be a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-pipelines data graph pipeline> -- -- - #VUID-vkCmdBindPipeline-pipeline-09912# If @pipeline@ is a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-pipelines data graph pipeline> -- and the -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM' -- structure used to create it had a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure in its @pNext@ chain that specified any foreign data -- processing engines, then the command pool from which @commandBuffer@ -- was allocated /must/ have been created with a -- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that had -- a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure specifying a superset of the foreign data graph processing -- engines specified at pipeline creation time in its @pNext@ chain -- -- - #VUID-vkCmdBindPipeline-pipeline-09913# If @pipeline@ is a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-pipelines data graph pipeline> -- and the -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM' -- structure used to create it did not have a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure in its @pNext@ chain, then the command pool from which -- @commandBuffer@ was allocated /must/ not have been created with a -- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' that had a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure in its @pNext@ chain -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBindPipeline-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT | State | -- | Secondary | | | VK_QUEUE_DATA_GRAPH_BIT_ARM | | -- | | | | VK_QUEUE_GRAPHICS_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBindPipeline is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> PipelineBindPoint -> Pipeline -> io () cmdBindPipeline CommandBuffer commandBuffer PipelineBindPoint pipelineBindPoint Pipeline pipeline = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBindPipelinePtr :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) vkCmdBindPipelinePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) pVkCmdBindPipeline (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) vkCmdBindPipelinePtr FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBindPipeline is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBindPipeline' :: Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO () vkCmdBindPipeline' = FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO () mkVkCmdBindPipeline FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) vkCmdBindPipelinePtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdBindPipeline" (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO () vkCmdBindPipeline' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (PipelineBindPoint pipelineBindPoint) (Pipeline pipeline)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the -- 'Vulkan.Core10.GraphicsPipeline.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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport> -- feature is not enabled, @firstViewport@ /must/ be @0@ -- -- - #VUID-vkCmdSetViewport-viewportCount-01225# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport> -- 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.GraphicsPipeline.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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetViewport-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetViewport is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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.GraphicsPipeline.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.GraphicsPipeline.Viewport' structures specifying viewport -- parameters. ("viewports" ::: Vector Viewport) -> io () cmdSetViewport :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("viewports" ::: Vector Viewport) -> io () cmdSetViewport CommandBuffer commandBuffer "firstViewport" ::: Word32 firstViewport "viewports" ::: Vector Viewport viewports = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetViewportPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) vkCmdSetViewportPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) pVkCmdSetViewport (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) vkCmdSetViewportPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetViewport is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetViewport' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO () vkCmdSetViewport' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO () mkVkCmdSetViewport FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Viewport -> IO ()) vkCmdSetViewportPtr pPViewports <- ((Ptr Viewport -> IO ()) -> IO ()) -> ContT () IO (Ptr Viewport) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr Viewport -> IO ()) -> IO ()) -> ContT () IO (Ptr Viewport)) -> ((Ptr Viewport -> IO ()) -> IO ()) -> ContT () IO (Ptr Viewport) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @Viewport ((("viewports" ::: Vector Viewport) -> Int forall a. Vector a -> Int Data.Vector.length ("viewports" ::: Vector Viewport viewports)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 24) lift $ Data.Vector.imapM_ (\Int i Viewport e -> Ptr Viewport -> Viewport -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Viewport pPViewports Ptr Viewport -> Int -> Ptr Viewport forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Viewport) (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 drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the -- 'Vulkan.Core10.GraphicsPipeline.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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport> -- feature is not enabled, @firstScissor@ /must/ be @0@ -- -- - #VUID-vkCmdSetScissor-scissorCount-00594# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport> -- 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetScissor-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetScissor is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("scissors" ::: Vector Rect2D) -> io () cmdSetScissor CommandBuffer commandBuffer "firstViewport" ::: Word32 firstScissor "scissors" ::: Vector Rect2D scissors = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetScissorPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) vkCmdSetScissorPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) pVkCmdSetScissor (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) vkCmdSetScissorPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetScissor is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetScissor' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO () vkCmdSetScissor' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO () mkVkCmdSetScissor FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Rect2D -> IO ()) vkCmdSetScissorPtr pPScissors <- ((Ptr Rect2D -> IO ()) -> IO ()) -> ContT () IO (Ptr Rect2D) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr Rect2D -> IO ()) -> IO ()) -> ContT () IO (Ptr Rect2D)) -> ((Ptr Rect2D -> IO ()) -> IO ()) -> ContT () IO (Ptr Rect2D) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @Rect2D ((("scissors" ::: Vector Rect2D) -> Int forall a. Vector a -> Int Data.Vector.length ("scissors" ::: Vector Rect2D scissors)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 16) lift $ Data.Vector.imapM_ (\Int i Rect2D e -> Ptr Rect2D -> Rect2D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Rect2D pPScissors Ptr Rect2D -> Int -> Ptr Rect2D forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 16 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Rect2D) (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 -- drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@lineWidth@ -- value used to create the currently active pipeline. -- -- == Valid Usage -- -- - #VUID-vkCmdSetLineWidth-lineWidth-00788# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-wideLines wideLines> -- 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetLineWidth-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetLineWidth is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("lineWidth" ::: Float) -> io () cmdSetLineWidth CommandBuffer commandBuffer "lineWidth" ::: Float lineWidth = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetLineWidthPtr :: FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) vkCmdSetLineWidthPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) pVkCmdSetLineWidth (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) vkCmdSetLineWidthPtr FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetLineWidth is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetLineWidth' :: Ptr CommandBuffer_T -> CFloat -> IO () vkCmdSetLineWidth' = FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> IO () mkVkCmdSetLineWidth FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) vkCmdSetLineWidthPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdSetLineWidth" (Ptr CommandBuffer_T -> CFloat -> IO () vkCmdSetLineWidth' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float lineWidth))) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the corresponding -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@depthBiasConstantFactor@, -- @depthBiasClamp@, and @depthBiasSlopeFactor@ values used to create the -- currently active pipeline. -- -- Calling this function is equivalent to calling -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT' -- without a -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasRepresentationInfoEXT' -- in the pNext chain of -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasInfoEXT'. -- -- == Valid Usage -- -- - #VUID-vkCmdSetDepthBias-depthBiasClamp-00790# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthBiasClamp depthBiasClamp> -- 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetDepthBias-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetDepthBias is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("lineWidth" ::: Float) -> ("lineWidth" ::: Float) -> ("lineWidth" ::: Float) -> io () cmdSetDepthBias CommandBuffer commandBuffer "lineWidth" ::: Float depthBiasConstantFactor "lineWidth" ::: Float depthBiasClamp "lineWidth" ::: Float depthBiasSlopeFactor = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetDepthBiasPtr :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) vkCmdSetDepthBiasPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) pVkCmdSetDepthBias (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) vkCmdSetDepthBiasPtr FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetDepthBias is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetDepthBias' :: Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO () vkCmdSetDepthBias' = FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO () mkVkCmdSetDepthBias FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) vkCmdSetDepthBiasPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdSetDepthBias" (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO () vkCmdSetDepthBias' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float depthBiasConstantFactor)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float depthBiasClamp)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float depthBiasSlopeFactor))) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 -- when drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the -- 'Vulkan.Core10.GraphicsPipeline.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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetBlendConstants-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetBlendConstants is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blendfactors blend factor>. ("blendConstants" ::: (Float, Float, Float, Float)) -> io () cmdSetBlendConstants :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("blendConstants" ::: ("lineWidth" ::: Float, "lineWidth" ::: Float, "lineWidth" ::: Float, "lineWidth" ::: Float)) -> io () cmdSetBlendConstants CommandBuffer commandBuffer "blendConstants" ::: ("lineWidth" ::: Float, "lineWidth" ::: Float, "lineWidth" ::: Float, "lineWidth" ::: Float) blendConstants = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetBlendConstantsPtr :: FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) vkCmdSetBlendConstantsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) pVkCmdSetBlendConstants (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) vkCmdSetBlendConstantsPtr FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetBlendConstants is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetBlendConstants' :: Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO () vkCmdSetBlendConstants' = FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO () mkVkCmdSetBlendConstants FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) vkCmdSetBlendConstantsPtr pBlendConstants <- ((Ptr (FixedArray 4 CFloat) -> IO ()) -> IO ()) -> ContT () IO (Ptr (FixedArray 4 CFloat)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (FixedArray 4 CFloat) -> IO ()) -> IO ()) -> ContT () IO (Ptr (FixedArray 4 CFloat))) -> ((Ptr (FixedArray 4 CFloat) -> IO ()) -> IO ()) -> ContT () IO (Ptr (FixedArray 4 CFloat)) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @(FixedArray 4 CFloat) Int 16 let pBlendConstants' = Ptr (FixedArray 4 CFloat) -> Ptr CFloat forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr Ptr (FixedArray 4 CFloat) pBlendConstants lift $ case (blendConstants) of ("lineWidth" ::: Float e0, "lineWidth" ::: Float e1, "lineWidth" ::: Float e2, "lineWidth" ::: Float e3) -> do Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pBlendConstants' :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float e0)) Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pBlendConstants' Ptr CFloat -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float e1)) Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pBlendConstants' Ptr CFloat -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float e2)) Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pBlendConstants' Ptr CFloat -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float 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 drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the -- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@minDepthBounds@ -- and -- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@maxDepthBounds@ -- values used to create the currently active pipeline. -- -- == Valid Usage -- -- - #VUID-vkCmdSetDepthBounds-minDepthBounds-00600# If the -- @VK_EXT_depth_range_unrestricted@ extension is not enabled -- @minDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive -- -- - #VUID-vkCmdSetDepthBounds-maxDepthBounds-00601# If the -- @VK_EXT_depth_range_unrestricted@ extension is not enabled -- @maxDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive -- -- - #VUID-vkCmdSetDepthBounds-minDepthBounds-10912# @minDepthBounds@ -- /must/ be less than or equal to @maxDepthBounds@ -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetDepthBounds-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetDepthBounds is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("lineWidth" ::: Float) -> ("lineWidth" ::: Float) -> io () cmdSetDepthBounds CommandBuffer commandBuffer "lineWidth" ::: Float minDepthBounds "lineWidth" ::: Float maxDepthBounds = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetDepthBoundsPtr :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) vkCmdSetDepthBoundsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) pVkCmdSetDepthBounds (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) vkCmdSetDepthBoundsPtr FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetDepthBounds is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetDepthBounds' :: Ptr CommandBuffer_T -> CFloat -> CFloat -> IO () vkCmdSetDepthBounds' = FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> IO () mkVkCmdSetDepthBounds FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) vkCmdSetDepthBoundsPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdSetDepthBounds" (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO () vkCmdSetDepthBounds' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float minDepthBounds)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float maxDepthBounds))) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the -- 'Vulkan.Core10.GraphicsPipeline.StencilOpState'::@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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetStencilCompareMask-videocoding# This command /must/ -- only be called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetStencilCompareMask is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> io () cmdSetStencilCompareMask CommandBuffer commandBuffer "faceMask" ::: StencilFaceFlags faceMask "firstViewport" ::: Word32 compareMask = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetStencilCompareMaskPtr :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilCompareMaskPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdSetStencilCompareMask (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilCompareMaskPtr FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetStencilCompareMask is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetStencilCompareMask' :: Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () vkCmdSetStencilCompareMask' = FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdSetStencilCompareMask FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilCompareMaskPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdSetStencilCompareMask" (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () vkCmdSetStencilCompareMask' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("faceMask" ::: StencilFaceFlags faceMask) ("firstViewport" ::: Word32 compareMask)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' set -- in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the @writeMask@ value used to -- create the currently active pipeline, for both -- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@front@ -- and -- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetStencilWriteMask-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetStencilWriteMask is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> io () cmdSetStencilWriteMask CommandBuffer commandBuffer "faceMask" ::: StencilFaceFlags faceMask "firstViewport" ::: Word32 writeMask = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetStencilWriteMaskPtr :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilWriteMaskPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdSetStencilWriteMask (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilWriteMaskPtr FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetStencilWriteMask is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetStencilWriteMask' :: Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () vkCmdSetStencilWriteMask' = FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdSetStencilWriteMask FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilWriteMaskPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdSetStencilWriteMask" (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () vkCmdSetStencilWriteMask' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("faceMask" ::: StencilFaceFlags faceMask) ("firstViewport" ::: Word32 writeMask)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 drawing using -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>, -- or when the graphics pipeline is created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' set -- in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@. -- Otherwise, this state is specified by the -- 'Vulkan.Core10.GraphicsPipeline.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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdSetStencilReference-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetStencilReference is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> io () cmdSetStencilReference CommandBuffer commandBuffer "faceMask" ::: StencilFaceFlags faceMask "firstViewport" ::: Word32 reference = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetStencilReferencePtr :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilReferencePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdSetStencilReference (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilReferencePtr FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetStencilReference is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetStencilReference' :: Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () vkCmdSetStencilReference' = FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdSetStencilReference FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdSetStencilReferencePtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdSetStencilReference" (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("firstViewport" ::: Word32) -> IO () vkCmdSetStencilReference' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("faceMask" ::: StencilFaceFlags faceMask) ("firstViewport" ::: Word32 reference)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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' binds descriptor sets -- @pDescriptorSets@[0..@descriptorSetCount@-1] to set numbers -- [@firstSet@..@firstSet@+@descriptorSetCount@-1] for subsequent -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands> -- set by @pipelineBindPoint@. Any bindings that were previously applied -- via these sets , or calls to -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT', -- 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://registry.khronos.org/vulkan/specs/latest/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. -- -- When consuming a descriptor, a descriptor is considered valid if the -- descriptor is not undefined as described by -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptor-set-initial-state descriptor set allocation>. -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor> -- feature is enabled, a null descriptor is also considered valid. A -- descriptor that was disturbed by -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>, -- or was never bound by 'cmdBindDescriptorSets' is not considered valid. -- For any given descriptor, -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits' -- and -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits' -- determine if validity is defined in terms of the descriptor being -- statically accessed, or dynamically accessed. If the descriptor is -- determined to be accessed by the appropriate definition, the consuming -- descriptor type in the pipeline /must/ match the -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' in -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo' for the -- descriptor to be considered valid. If a descriptor is a mutable -- descriptor, the consuming descriptor type in the pipeline /must/ match -- the active descriptor type for the descriptor to be considered valid. -- -- Further validation may be carried out beyond validation for descriptor -- types, e.g. -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-input-validation Texel Input Validation>. -- -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands> -- with that pipeline type, as defined in the -- <https://registry.khronos.org/vulkan/specs/latest/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-commandBuffer-11295# If -- @commandBuffer@ is a secondary command buffer, it /must/ have begun -- with -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@ -- equal to @NULL@ -- -- - #VUID-vkCmdBindDescriptorSets-commandBuffer-11296# If -- @commandBuffer@ is a secondary command buffer, it /must/ have begun -- with -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@ -- equal to @NULL@ -- -- - #VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358# Each element of -- @pDescriptorSets@ that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /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-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 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-effective-offset effective offset> -- and the range of the binding /must/ be less than or equal to the -- size of the buffer -- -- - #VUID-vkCmdBindDescriptorSets-pDescriptorSets-06715# For each -- dynamic uniform or storage buffer binding in @pDescriptorSets@, if -- the range was set with 'Vulkan.Core10.APIConstants.WHOLE_SIZE' then -- @pDynamicOffsets@ which corresponds to the descriptor binding /must/ -- be 0 -- -- - #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_EXT' -- flag set -- -- - #VUID-vkCmdBindDescriptorSets-pDescriptorSets-06563# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary> -- feature is not enabled, each element of @pDescriptorSets@ /must/ be -- a valid 'Vulkan.Core10.Handles.DescriptorSet' -- -- - #VUID-vkCmdBindDescriptorSets-pDescriptorSets-08010# Each element of -- @pDescriptorSets@ /must/ have been allocated with a -- 'Vulkan.Core10.Handles.DescriptorSetLayout' which was not created -- with -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdBindDescriptorSets-pDescriptorSets-09914# If any element -- of @pDescriptorSets@ was allocated from a descriptor pool created -- with a 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo' -- structure that had a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure specifying foreign data processing engines in its @pNext@ -- chain, then the command pool from which @commandBuffer@ was -- allocated /must/ have been created with a -- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that had -- a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure in its @pNext@ chain specifying a superset of all the -- foreign data processing engines specified when creating the -- descriptor pools from which the elements of @pDescriptorSets@ were -- allocated -- -- - #VUID-vkCmdBindDescriptorSets-pDescriptorSets-09915# If none of the -- elements of @pDescriptorSets@ were allocated from a descriptor pool -- created with a -- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo' structure -- that had a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure specifying foreign data processing engines in its @pNext@ -- chain, then the command pool from which @commandBuffer@ was -- allocated /must/ not have been created with a -- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that had -- a -- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM' -- structure in its @pNext@ chain -- -- - #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361# -- @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s -- parent 'Vulkan.Core10.Handles.CommandPool'’s queue family -- -- == 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 or -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- '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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBindDescriptorSets-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- - #VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength# -- @descriptorSetCount@ /must/ be greater than @0@ -- -- - #VUID-vkCmdBindDescriptorSets-commonparent# Each of @commandBuffer@, -- @layout@, and the elements of @pDescriptorSets@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT | State | -- | Secondary | | | VK_QUEUE_DATA_GRAPH_BIT_ARM | | -- | | | | VK_QUEUE_GRAPHICS_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBindDescriptorSets is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("descriptorSets" ::: Vector DescriptorSet) -> ("dynamicOffsets" ::: Vector ("firstViewport" ::: Word32)) -> io () cmdBindDescriptorSets CommandBuffer commandBuffer PipelineBindPoint pipelineBindPoint PipelineLayout layout "firstViewport" ::: Word32 firstSet "descriptorSets" ::: Vector DescriptorSet descriptorSets "dynamicOffsets" ::: Vector ("firstViewport" ::: Word32) dynamicOffsets = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBindDescriptorSetsPtr :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) vkCmdBindDescriptorSetsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) pVkCmdBindDescriptorSets (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) vkCmdBindDescriptorSetsPtr FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBindDescriptorSets is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBindDescriptorSets' :: Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO () vkCmdBindDescriptorSets' = FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO () mkVkCmdBindDescriptorSets FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr DescriptorSet -> ("firstViewport" ::: Word32) -> Ptr ("firstViewport" ::: Word32) -> IO ()) vkCmdBindDescriptorSetsPtr pPDescriptorSets <- ((Ptr DescriptorSet -> IO ()) -> IO ()) -> ContT () IO (Ptr DescriptorSet) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr DescriptorSet -> IO ()) -> IO ()) -> ContT () IO (Ptr DescriptorSet)) -> ((Ptr DescriptorSet -> IO ()) -> IO ()) -> ContT () IO (Ptr DescriptorSet) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @DescriptorSet ((("descriptorSets" ::: Vector DescriptorSet) -> Int forall a. Vector a -> Int Data.Vector.length ("descriptorSets" ::: Vector DescriptorSet descriptorSets)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 8) lift $ Data.Vector.imapM_ (\Int i DescriptorSet e -> Ptr DescriptorSet -> DescriptorSet -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr DescriptorSet pPDescriptorSets Ptr DescriptorSet -> Int -> Ptr DescriptorSet forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 8 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr DescriptorSet) (DescriptorSet e)) (descriptorSets) pPDynamicOffsets <- ContT $ allocaBytes @Word32 ((Data.Vector.length (dynamicOffsets)) * 4) lift $ Data.Vector.imapM_ (\Int i "firstViewport" ::: Word32 e -> Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("firstViewport" ::: Word32) pPDynamicOffsets Ptr ("firstViewport" ::: Word32) -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 4 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Word32) ("firstViewport" ::: 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 -- -- = Description -- -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance6 maintenance6> -- feature is enabled, @buffer@ /can/ be -- 'Vulkan.Core10.APIConstants.NULL_HANDLE'. If @buffer@ is -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor> -- feature is enabled, every index fetched results in a value of zero. -- -- == Valid Usage -- -- - #VUID-vkCmdBindIndexBuffer-offset-08782# @offset@ /must/ be less -- than the size of @buffer@ -- -- - #VUID-vkCmdBindIndexBuffer-offset-08783# The sum of @offset@ and the -- base address of the range of 'Vulkan.Core10.Handles.DeviceMemory' -- object that is backing @buffer@, /must/ be a multiple of the size of -- the type indicated by @indexType@ -- -- - #VUID-vkCmdBindIndexBuffer-buffer-08784# @buffer@ /must/ have been -- created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdBindIndexBuffer-buffer-08785# If @buffer@ is non-sparse -- then it /must/ be bound completely and contiguously to a single -- 'Vulkan.Core10.Handles.DeviceMemory' object -- -- - #VUID-vkCmdBindIndexBuffer-indexType-08786# @indexType@ /must/ not -- be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' -- -- - #VUID-vkCmdBindIndexBuffer-indexType-08787# If @indexType@ is -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8> -- feature /must/ be enabled -- -- - #VUID-vkCmdBindIndexBuffer-None-09493# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6> -- feature is not enabled, @buffer@ /must/ not be -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-vkCmdBindIndexBuffer-buffer-09494# If @buffer@ is -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', offset /must/ be zero -- -- == Valid Usage (Implicit) -- -- - #VUID-vkCmdBindIndexBuffer-commandBuffer-parameter# @commandBuffer@ -- /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdBindIndexBuffer-buffer-parameter# If @buffer@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBindIndexBuffer-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #VUID-vkCmdBindIndexBuffer-commonparent# Both of @buffer@, and -- @commandBuffer@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBindIndexBuffer is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> io () cmdBindIndexBuffer CommandBuffer commandBuffer Buffer buffer "offset" ::: DeviceSize offset IndexType indexType = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBindIndexBufferPtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) vkCmdBindIndexBufferPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) pVkCmdBindIndexBuffer (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) vkCmdBindIndexBufferPtr FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBindIndexBuffer is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBindIndexBuffer' :: Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO () vkCmdBindIndexBuffer' = FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO () mkVkCmdBindIndexBuffer FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) vkCmdBindIndexBufferPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdBindIndexBuffer" (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO () vkCmdBindIndexBuffer' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Buffer buffer) ("offset" ::: DeviceSize offset) (IndexType indexType)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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://registry.khronos.org/vulkan/specs/latest/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' -- usage flag set -- -- - #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://registry.khronos.org/vulkan/specs/latest/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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBindVertexBuffers-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBindVertexBuffers is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector ("offset" ::: DeviceSize)) -> io () cmdBindVertexBuffers CommandBuffer commandBuffer "firstViewport" ::: Word32 firstBinding "buffers" ::: Vector Buffer buffers "offsets" ::: Vector ("offset" ::: DeviceSize) offsets = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBindVertexBuffersPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) vkCmdBindVertexBuffersPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) pVkCmdBindVertexBuffers (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) vkCmdBindVertexBuffersPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBindVertexBuffers is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBindVertexBuffers' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO () vkCmdBindVertexBuffers' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO () mkVkCmdBindVertexBuffers FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Ptr Buffer -> Ptr ("offset" ::: DeviceSize) -> IO ()) vkCmdBindVertexBuffersPtr let pBuffersLength :: Int pBuffersLength = ("buffers" ::: Vector Buffer) -> Int forall a. Vector a -> Int Data.Vector.length (("buffers" ::: Vector Buffer) -> Int) -> ("buffers" ::: Vector Buffer) -> Int forall a b. (a -> b) -> a -> b $ ("buffers" ::: Vector Buffer buffers) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ((("offsets" ::: Vector ("offset" ::: DeviceSize)) -> Int forall a. Vector a -> Int Data.Vector.length (("offsets" ::: Vector ("offset" ::: DeviceSize)) -> Int) -> ("offsets" ::: Vector ("offset" ::: DeviceSize)) -> Int forall a b. (a -> b) -> a -> b $ ("offsets" ::: Vector ("offset" ::: DeviceSize) offsets)) Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int pBuffersLength) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "pOffsets and pBuffers must have the same length" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing pPBuffers <- ((Ptr Buffer -> IO ()) -> IO ()) -> ContT () IO (Ptr Buffer) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr Buffer -> IO ()) -> IO ()) -> ContT () IO (Ptr Buffer)) -> ((Ptr Buffer -> IO ()) -> IO ()) -> ContT () IO (Ptr Buffer) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @Buffer ((("buffers" ::: Vector Buffer) -> Int forall a. Vector a -> Int Data.Vector.length ("buffers" ::: Vector Buffer buffers)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 8) lift $ Data.Vector.imapM_ (\Int i Buffer e -> Ptr Buffer -> Buffer -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Buffer pPBuffers Ptr Buffer -> Int -> Ptr Buffer forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 8 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Buffer) (Buffer e)) (buffers) pPOffsets <- ContT $ allocaBytes @DeviceSize ((Data.Vector.length (offsets)) * 8) lift $ Data.Vector.imapM_ (\Int i "offset" ::: DeviceSize e -> Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("offset" ::: DeviceSize) pPOffsets Ptr ("offset" ::: DeviceSize) -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 8 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr DeviceSize) ("offset" ::: 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', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-magFilter-09598# If a -- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or -- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and -- @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDraw-mipmapMode-04770# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-09599# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR' -- and @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDraw-unnormalizedCoordinates-09635# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @levelCount@ and @layerCount@ /must/ be 1 -- -- - #VUID-vkCmdDraw-None-08609# If a 'Vulkan.Core10.Handles.Sampler' -- created with @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @viewType@ /must/ be -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' -- -- - #VUID-vkCmdDraw-None-08610# If a 'Vulkan.Core10.Handles.Sampler' -- created with @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions with -- @ImplicitLod@, @Dref@ or @Proj@ in their name -- -- - #VUID-vkCmdDraw-None-08611# If a 'Vulkan.Core10.Handles.Sampler' -- created with @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values -- -- - #VUID-vkCmdDraw-None-06479# If a 'Vulkan.Core10.Handles.ImageView' -- is sampled with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>, -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' -- -- - #VUID-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-07888# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- descriptor is accessed using atomic operations as a result of this -- command, then the storage texel buffer’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' -- -- - #VUID-vkCmdDraw-None-02692# If a 'Vulkan.Core10.Handles.ImageView' -- is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a -- result of this command, then the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-02693# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic> -- extension is not enabled and any 'Vulkan.Core10.Handles.ImageView' -- is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a -- result of this command, it /must/ not have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D', -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' -- -- - #VUID-vkCmdDraw-filterCubic-02694# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering, as specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDraw-filterCubicMinmax-02695# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode -- of either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- as a result of this command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering together with minmax filtering, as -- specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDraw-cubicRangeClamp-09212# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ not have a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- -- - #VUID-vkCmdDraw-reductionMode-09213# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- as a result of this command /must/ sample with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' -- -- - #VUID-vkCmdDraw-selectableCubicWeights-09214# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ have -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@ -- equal to -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' -- -- - #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-07027# For any -- 'Vulkan.Core10.Handles.ImageView' being written as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDraw-OpTypeImage-07028# For any -- 'Vulkan.Core10.Handles.ImageView' being read as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDraw-OpTypeImage-07029# For any -- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@, the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDraw-OpTypeImage-07030# Any -- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@ then the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDraw-None-08600# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a set /n/, 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' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???> -- -- - #VUID-vkCmdDraw-None-08601# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDraw-None-10068# For each array of resources that is used -- by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- the indices used to access members of the array /must/ be less than -- the descriptor count for the identified binding in the descriptor -- sets used by this command -- -- - #VUID-vkCmdDraw-maintenance4-08602# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' and -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to -- create the current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDraw-None-08114# Descriptors in each bound descriptor -- set, specified via 'cmdBindDescriptorSets', /must/ be valid if they -- are accessed as described by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity> -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point used by this command and the bound -- 'Vulkan.Core10.Handles.Pipeline' was not created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDraw-imageLayout-00344# If an image descriptor is -- accessed by a shader, the -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the -- subresource accessible from the 'Vulkan.Core10.Handles.ImageView' as -- defined by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules> -- -- - #VUID-vkCmdDraw-None-08115# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via 'cmdBindDescriptorSets', the bound -- 'Vulkan.Core10.Handles.Pipeline' /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-08116# Descriptors in bound descriptor buffers, -- specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline' -- was created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-08604# Descriptors in bound descriptor buffers, -- specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command -- -- - #VUID-vkCmdDraw-None-08117# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-08119# If a descriptor is dynamically used with -- a 'Vulkan.Core10.Handles.Pipeline' created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDraw-None-08605# If a descriptor is dynamically used with -- a 'Vulkan.Extensions.Handles.ShaderEXT' created with a -- 'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDraw-None-08606# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject> -- feature is not enabled, a valid pipeline /must/ be bound to the -- pipeline bind point used by this command -- -- - #VUID-vkCmdDraw-None-08608# If a pipeline is bound to the pipeline -- bind point used by this command, there /must/ not have been any -- calls to dynamic state setting commands for any state specified -- statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to -- the pipeline bind point used by this command, since that pipeline -- was bound -- -- - #VUID-vkCmdDraw-uniformBuffers-06935# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDraw-None-08612# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDraw-storageBuffers-06936# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDraw-None-08613# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a storage -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDraw-commandBuffer-02707# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, any resource accessed by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders> -- /must/ not be a protected resource -- -- - #VUID-vkCmdDraw-viewType-07752# If a -- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this -- command, then the image view’s @viewType@ /must/ match the @Dim@ -- operand of the @OpTypeImage@ as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???> -- -- - #VUID-vkCmdDraw-format-07753# If a 'Vulkan.Core10.Handles.ImageView' -- or 'Vulkan.Core10.Handles.BufferView' is accessed as a result of -- this command, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type> -- of the view’s @format@ and the @Sampled@ @Type@ operand of the -- @OpTypeImage@ /must/ match -- -- - #VUID-vkCmdDraw-OpImageWrite-08795# If a -- 'Vulkan.Core10.Handles.ImageView' created with a format other than -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-08796# If a -- 'Vulkan.Core10.Handles.ImageView' created with the format -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using -- @OpImageWrite@ as a result of this command, then the @Type@ of the -- @Texel@ operand of that instruction /must/ have four components -- -- - #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-OpImageSampleWeightedQCOM-06971# If -- @OpImageSampleWeightedQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageSampleWeightedQCOM-06972# If -- @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView' -- as a sample weight image as a result of this command, then the image -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageBoxFilterQCOM-06973# If -- @OpImageBoxFilterQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageBlockMatchSSDQCOM-06974# If -- @OpImageBlockMatchSSDQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06975# If -- @OpImageBlockMatchSADQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06976# If -- @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDraw-OpImageSampleWeightedQCOM-06977# If -- @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageSampleWeightedQCOM-06978# If any command -- other than @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ not have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageBlockMatchWindow-09215# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDraw-OpImageBlockMatchWindow-09216# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s format /must/ be a single-component format -- -- - #VUID-vkCmdDraw-OpImageBlockMatchWindow-09217# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDraw-None-07288# Any shader invocation executed by this -- command /must/ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate> -- -- - #VUID-vkCmdDraw-None-09600# If a descriptor with type equal to any -- of -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- is accessed as a result of this command, all image subresources -- identified by that descriptor /must/ be in the image layout -- identified when the descriptor was written -- -- - #VUID-vkCmdDraw-commandBuffer-10746# The -- 'Vulkan.Core10.Handles.DeviceMemory' object allocated from a -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property that is bound to a resource accessed as a result of this -- command /must/ be the active bound -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object> -- in @commandBuffer@ -- -- - #VUID-vkCmdDraw-None-10678# If this command is recorded inside a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass> -- instance, the stages corresponding to the pipeline bind point used -- by this command /must/ only include -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT', -- and\/or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- -- - #VUID-vkCmdDraw-None-10679# If this command is recorded where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, there /must/ be no access to any image while the image -- was be transitioned to the -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- layout -- -- - #VUID-vkCmdDraw-pDescription-09900# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the -- underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have -- been created with the -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage -- flag set -- -- - #VUID-vkCmdDraw-dimensionCount-09905# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the @Rank@ -- of the @OpTypeTensorARM@ of the tensor resource variable /must/ be -- equal to the @dimensionCount@ provided via -- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@ -- when creating the underlying 'Vulkan.Extensions.Handles.TensorARM' -- object -- -- - #VUID-vkCmdDraw-OpTypeTensorARM-09906# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the element -- type of the @OpTypeTensorARM@ of the tensor resource variable /must/ -- be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible> -- with the 'Vulkan.Core10.Enums.Format.Format' of the -- 'Vulkan.Extensions.Handles.TensorViewARM' used for the access -- -- - #VUID-vkCmdDraw-None-11297# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a @OpTypeStruct@ decorated with @Block@ or -- @BufferBlock@ using that mapping, the calculated offset for the -- resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment> -- -- - #VUID-vkCmdDraw-None-11298# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using -- that mapping, the calculated offset for the resource heap /must/ be -- a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment> -- -- - #VUID-vkCmdDraw-None-11299# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@ -- using that mapping, the calculated offset for the sampler heap -- /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment> -- -- - #VUID-vkCmdDraw-None-11397# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeTensorARM@ using that mapping, the -- calculated offset for the resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment> -- -- - #VUID-vkCmdDraw-None-11300# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 4 -- -- - #VUID-vkCmdDraw-None-11301# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDraw-None-11302# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDraw-None-11304# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 8 -- -- - #VUID-vkCmdDraw-None-11305# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDraw-None-11306# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address pointed to by the address in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDraw-None-11308# For each -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap> -- that is statically used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- either directly or via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- a valid descriptor heap /must/ be bound -- -- - #VUID-vkCmdDraw-None-11309# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, execution of this command /must/ not result in any descriptor -- read accessing data outside of the user range of the respective heap -- bound by @vkCmdBind*HeapEXT@ commands -- -- - #VUID-vkCmdDraw-None-11372# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer or uniform -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDraw-None-11373# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer or storage -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDraw-None-11374# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, uniform texel buffer, storage buffer, or storage texel -- buffer, that shader /must/ not access values outside of the range of -- the buffer as specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDraw-pBindInfo-11375# If any -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- uses an embedded sampler via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- the value of @pBindInfo->reservedRangeSize@ set for -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT' -- /must/ be greater than or equal to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded> -- -- - #VUID-vkCmdDraw-None-11376# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT' -- -- - #VUID-vkCmdDraw-None-11398# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the access -- /must/ not be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds> -- -- - #VUID-vkCmdDraw-None-11437# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the buffer from -- which the address in push data was queried /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDraw-None-11438# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDraw-None-11441# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment> -- -- - #VUID-vkCmdDraw-None-11439# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDraw-None-11442# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment> -- -- - #VUID-vkCmdDraw-None-11485# If a pipeline is bound to the pipeline -- bind point used by this command, or shader is bound to a shader -- stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses an acceleration structure using that mapping, -- the address that the acceleration structure is mapped to /must/ be -- an acceleration structure address retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR' -- or handle retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' object via -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV' -- -- - #VUID-vkCmdDraw-index-11450# If a shader uses a sampler descriptor -- to sample an image as a result of this command, and that sampler -- descriptor uses a custom border color with an index defined by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT', -- the value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@ -- /must/ have been registered before this command was recorded, and -- still be registered during the sampling operation, with an -- identically defined color -- -- - #VUID-vkCmdDraw-protectedNoFault-11455# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- the address that the resource is mapped to /must/ have been queried -- from a buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDraw-protectedNoFault-11456# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- the address of the indirect memory /must/ have been queried from a -- buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #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.GraphicsPipeline.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.GraphicsPipeline.GraphicsPipelineCreateInfo' -- structure specified when creating the -- 'Vulkan.Core10.Handles.Pipeline' bound to -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- - #VUID-vkCmdDraw-OpTypeImage-07468# If any shader executed by this -- pipeline accesses an @OpTypeImage@ variable with a @Dim@ operand of -- @SubpassData@, it /must/ be decorated with an @InputAttachmentIndex@ -- that corresponds to a valid input attachment in the current subpass -- -- - #VUID-vkCmdDraw-None-07469# Input attachment views accessed in a -- subpass /must/ be created with the same -- 'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass -- definition, and be created with a 'Vulkan.Core10.Handles.ImageView' -- that is compatible with the attachment referenced by the subpass\' -- @pInputAttachments@[@InputAttachmentIndex@] in the bound -- 'Vulkan.Core10.Handles.Framebuffer' as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility> -- -- - #VUID-vkCmdDraw-pDepthInputAttachmentIndex-09595# Input attachment -- views accessed in a dynamic render pass with a -- @InputAttachmentIndex@ referenced by -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo', -- or no @InputAttachmentIndex@ if -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- or -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are @NULL@, /must/ be created with a -- 'Vulkan.Core10.Handles.ImageView' that is compatible with the -- corresponding color, depth, or stencil attachment in -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- -- - #VUID-vkCmdDraw-pDepthInputAttachmentIndex-09596# Input attachment -- views accessed in a dynamic render pass via a shader object /must/ -- have an @InputAttachmentIndex@ if both -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- and -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are non-@NULL@ -- -- - #VUID-vkCmdDraw-InputAttachmentIndex-09597# If an input attachment -- view accessed in a dynamic render pass via a shader object has an -- @InputAttachmentIndex@, the @InputAttachmentIndex@ /must/ match an -- index in -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo' -- -- - #VUID-vkCmdDraw-None-06537# Memory backing image subresources used -- as attachments in the current render pass /must/ not be written in -- any way other than as an attachment by this command -- -- - #VUID-vkCmdDraw-None-10795# If a color attachment is written by any -- prior command in this subpass or by the load, store, or resolve -- operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDraw-None-10796# If a depth attachment is written by any -- prior command in this subpass or by the load, store, or resolve -- operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDraw-None-10797# If a stencil attachment is written by -- any prior command in this subpass or by the load, store, or resolve -- operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, it /must/ not be accessed in any way other than -- as an attachment by this command -- -- - #VUID-vkCmdDraw-None-12338# If a color attachment is read in this -- command in any way other than as an attachment, or has been read by -- any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, the color attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDraw-None-12339# If a depth attachment is read in this -- command in any way other than as an attachment, or has been read by -- any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, the depth attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDraw-None-12340# If a stencil attachment is read in this -- command in any way other than as an attachment, or has been read by -- any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, the stencil attachment /must/ not be written to -- by this command -- -- - #VUID-vkCmdDraw-None-09003# If an attachment is written by any prior -- command in this subpass or by the load, store, or resolve operations -- for this subpass, it /must/ not be accessed in any way other than as -- an attachment, storage image, or sampled image by this command -- -- - #VUID-vkCmdDraw-None-06886# If the current render pass instance uses -- a depth\/stencil attachment with a read-only layout for the depth -- aspect, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes> -- /must/ be disabled -- -- - #VUID-vkCmdDraw-None-06887# If the current render pass instance uses -- a depth\/stencil attachment with a read-only layout for the stencil -- aspect, both front and back @writeMask@ are not zero, and stencil -- test is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops> -- /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP' -- -- - #VUID-vkCmdDraw-None-07831# If the bound graphics pipeline state was -- created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic -- state enabled then 'cmdSetViewport' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07832# If the bound graphics pipeline state was -- created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic -- state enabled then 'cmdSetScissor' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-08617# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then 'cmdSetLineWidth' /must/ have been -- called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07834# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'cmdSetDepthBias' or -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07835# If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a -- blend equations where any -- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA', -- then 'cmdSetBlendConstants' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07836# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetDepthBounds' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07837# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilCompareMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07838# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilWriteMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07839# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of and @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilReference' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #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', then the active depth -- attachment /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDraw-None-07634# If the @VK_EXT_sample_locations@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-06666# If the @VK_EXT_sample_locations@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07840# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07841# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07843# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07844# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07845# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07846# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07847# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07848# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-viewportCount-03417# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-scissorCount-03418# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing -- -- - #VUID-vkCmdDraw-viewportCount-03419# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with both the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic states enabled, and the state is not inherited, then the -- @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ match the @scissorCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- -- - #VUID-vkCmdDraw-viewportCount-04137# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-viewportCount-04138# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-08636# If the @VK_NV_clip_space_w_scaling@ -- extension is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-viewportCount-04139# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-shadingRateImage-09233# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-shadingRateImage-09234# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-08637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-None-07878# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07879# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' -- dynamic state enabled, and the most recent call to -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- in the current command buffer set any element of -- @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-04876# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-04877# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-logicOp-04878# If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- 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' -- dynamic state enabled, and any of the shader stages of the bound -- graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in, -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-08642# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports> -- limit is not supported, and any shader object bound to a graphics -- stage writes to the @PrimitiveShadingRateKHR@ built-in, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDraw-blendEnable-04727# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then for each color -- attachment, 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 corresponding -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDraw-None-08644# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is -- enabled: -- -- - the @VK_AMD_mixed_attachment_samples@ extension -- -- - the @VK_NV_framebuffer_mixed_samples@ extension -- -- - the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature -- -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ /must/ be the same as the current color -- and\/or depth\/stencil attachments -- -- - #VUID-vkCmdDraw-None-08876# If a shader object is bound to any -- graphics stage, the current render pass instance /must/ have been -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdDraw-imageView-06172# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDraw-imageView-06173# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDraw-imageView-06174# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDraw-imageView-06175# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDraw-imageView-06176# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDraw-imageView-06177# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDraw-viewMask-06178# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@ -- -- - #VUID-vkCmdDraw-colorAttachmentCount-06179# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08910# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08912# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08911# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, and the current render pass instance was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-colorAttachmentCount-09362# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, there is no shader object bound to any graphics stage, -- and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDraw-None-09363# If there is no shader object bound to -- any graphics stage, the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDraw-None-09364# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set the blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDraw-None-09365# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDraw-None-09366# If there is a shader object bound to any -- graphics stage, and the current render pass includes a color -- attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDraw-rasterizationSamples-09367# If there is a shader -- object bound to any graphics stage, and the current render pass -- includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDraw-None-09368# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDraw-None-09369# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDraw-pFragmentSize-09370# If there is a shader object -- bound to any graphics stage, and the current render pass includes a -- color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDraw-pFragmentSize-09371# If there is a shader object -- bound to any graphics stage, and the current render pass includes a -- color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDraw-None-07749# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-attachmentCount-07750# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@ -- parameter of most recent call to -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- in the current command buffer /must/ be greater than or equal to the -- number of active color attachments -- -- - #VUID-vkCmdDraw-None-07751# If the @VK_EXT_discard_rectangles@ -- extension is enabled, a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included -- a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDraw-rasterizerDiscardEnable-09236# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not -- include a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@ -- -- - #VUID-vkCmdDraw-None-07880# If the @VK_EXT_discard_rectangles@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07881# If the @VK_EXT_discard_rectangles@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08913# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08914# If current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08915# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08916# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08917# If current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08918# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-imageView-06183# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #VUID-vkCmdDraw-dynamicRenderingLocalRead-11797# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead> -- feature is enabled, the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR' -- flag is specified, and an attachment is being used as a feedback -- loop as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >, -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@ -- for that attachment /must/ include -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' -- -- - #VUID-vkCmdDraw-imageView-06184# If the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT' -- -- - #VUID-vkCmdDraw-layers-10831# If the current render pass instance -- was created with -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' -- or -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- and the bound graphics pipeline was created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- then the current render pass instance /must/ have a @layers@ value -- less than or equal to -- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@ -- -- - #VUID-vkCmdDraw-colorAttachmentCount-06185# If the bound pipeline -- was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the corresponding element of the -- @pColorAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDraw-pDepthAttachment-06186# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDraw-pStencilAttachment-06187# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDraw-multisampledRenderToSingleSampled-07285# If the -- bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the value of @rasterizationSamples@ for -- the bound graphics pipeline -- -- - #VUID-vkCmdDraw-multisampledRenderToSingleSampled-07286# If the -- bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDraw-multisampledRenderToSingleSampled-07287# If the -- bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDraw-pNext-07935# If this command is called inside a -- render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and the @pNext@ chain of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@ -- -- - #VUID-vkCmdDraw-renderPass-06198# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline /must/ have been created with a -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@ -- equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-vkCmdDraw-pColorAttachments-08963# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound with a fragment shader that statically -- writes to a color attachment, the color write mask is not zero, -- color writes are enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-pColorAttachments-11539# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound with a fragment shader that statically writes to a -- color attachment, the color write mask is not zero, color writes are -- enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-pDepthAttachment-08964# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-pDepthAttachment-11540# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-pStencilAttachment-08965# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-pStencilAttachment-11860# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-flags-10582# If the current render pass instance was -- begun with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- call in @commandBuffer@, its -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- parameter /must/ not have -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' -- set unless -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR' -- is also set -- -- - #VUID-vkCmdDraw-primitivesGeneratedQueryWithRasterizerDiscard-06708# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard> -- /must/ not be enabled -- -- - #VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-06709# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, the bound graphics pipeline /must/ not have been -- created with a non-zero value in -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@ -- -- - #VUID-vkCmdDraw-None-07620# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07621# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07622# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07623# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-alphaToCoverageEnable-08919# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and @alphaToCoverageEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDraw-alphaToCoverageEnable-08920# If a shader object is -- bound to any graphics stage, and the most recent call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- in the current command buffer set @alphaToCoverageEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDraw-None-07624# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07625# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07626# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07627# If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07629# If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07630# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams> -- feature is enabled, and a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07631# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07632# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ is -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-conservativePointAndLineRasterization-07499# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization> -- is not supported, a shader object is bound to any graphics stage or -- a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line or point topology class, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ /must/ be -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' -- -- - #VUID-vkCmdDraw-None-07633# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT' -- dynamic state, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07636# If the @VK_EXT_provoking_vertex@ -- extension is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-08666# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-08669# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07849# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled and a shader object is bound to any graphics -- stage, or a bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterizationRoadmap.cmdSetLineStipple' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-10608# If a shader object is bound to any -- graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, and the current @lineRasterizationMode@ -- is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM' -- or -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and -- @sampleShadingEnable@ states /must/ all be -- 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDraw-None-07639# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-09650# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07640# If the @VK_NV_clip_space_w_scaling@ -- extension is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07641# If the @VK_NV_viewport_swizzle@ -- extension is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07642# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07643# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07644# If the @VK_NV_framebuffer_mixed_samples@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07645# If the @VK_NV_framebuffer_mixed_samples@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationMode@ is any value other than -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07646# If the @VK_NV_framebuffer_mixed_samples@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationTableEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07647# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-pipelineFragmentShadingRate-09238# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07648# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07649# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-rasterizationSamples-07471# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the current subpass does not use any color -- and\/or depth\/stencil attachments, then the @rasterizationSamples@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ follow the rules for a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass> -- -- - #VUID-vkCmdDraw-samples-07472# If the bound graphics pipeline state -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ -- parameter used to create the bound graphics pipeline -- -- - #VUID-vkCmdDraw-samples-07473# If the bound graphics pipeline state -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- states enabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the @rasterizationSamples@ parameter -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDraw-rasterizationSamples-07474# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and neither the -- @VK_AMD_mixed_attachment_samples@ nor the -- @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the current subpass color and\/or -- depth\/stencil attachments -- -- - #VUID-vkCmdDraw-None-09211# If the bound graphics pipeline state was -- created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, or a shader object is bound to any graphics stage, -- and the current render pass instance includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the @rasterizationSamples@ member of that -- structure -- -- - #VUID-vkCmdDraw-firstAttachment-07476# If a shader object is bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDraw-firstAttachment-07478# If a shader object is bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDraw-advancedBlendMaxColorAttachments-07480# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- number of active color attachments /must/ not exceed -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments> -- -- - #VUID-vkCmdDraw-None-10862# If a graphics pipeline is bound was -- created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- , but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDraw-rasterizerDiscardEnable-10863# If a graphics -- pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT', -- but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDraw-None-10864# If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- or -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-07481# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, and the bound graphics pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- state enabled, the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have set the @rasterizationStream@ to zero -- -- - #VUID-vkCmdDraw-sampleLocationsPerPixel-07482# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ member of the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo' -- structure the bound graphics pipeline has been created with -- -- - #VUID-vkCmdDraw-sampleLocationsPerPixel-07483# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ parameter of the last call -- to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDraw-sampleLocationsEnable-07484# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- then the current active depth attachment /must/ have been created -- with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDraw-sampleLocationsEnable-07485# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDraw-sampleLocationsEnable-07486# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDraw-sampleLocationsEnable-07487# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- the fragment shader code /must/ not statically use the extended -- instruction @InterpolateAtSample@ -- -- - #VUID-vkCmdDraw-sampleLocationsEnable-07936# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDraw-sampleLocationsEnable-07937# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDraw-sampleLocationsEnable-07938# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDraw-coverageModulationTableEnable-07488# If a shader -- object is bound to any graphics stage or the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- state enabled, and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- set @coverageModulationTableEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @coverageModulationTableCount@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ equal the current @rasterizationSamples@ divided by the -- number of color samples in the current active color attachment -- -- - #VUID-vkCmdDraw-rasterizationSamples-07489# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if -- current subpass has a depth\/stencil attachment and depth test, -- stencil test, or depth bounds test are enabled in the bound -- pipeline, then the current @rasterizationSamples@ /must/ be the same -- as the sample count of the depth\/stencil attachment -- -- - #VUID-vkCmdDraw-coverageToColorEnable-07490# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- state enabled and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDraw-rasterizerDiscardEnable-09420# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, and a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, and the most recent call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- in the current command buffer set @rasterizerDiscardEnable@ to -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDraw-coverageReductionMode-07491# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic states enabled, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values> -- of @coverageReductionMode@, @rasterizationSamples@, the sample -- counts for the color and depth\/stencil attachments (if the subpass -- has them) /must/ be a valid combination returned by -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' -- -- - #VUID-vkCmdDraw-viewportCount-07492# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-viewportCount-07493# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic states enabled then the @viewportCount@ parameter in the -- last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-viewportCount-09421# If the @VK_NV_viewport_swizzle@ -- extension is enabled, and a shader object is bound to any graphics -- stage, then the @viewportCount@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDraw-rasterizationSamples-07494# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is not enabled, or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageReductionMode@ is not -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV', -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ is greater than sample count of the color -- attachment, then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- /must/ be disabled -- -- - #VUID-vkCmdDraw-stippledLineEnable-07495# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDraw-stippledLineEnable-07496# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDraw-stippledLineEnable-07497# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDraw-stippledLineEnable-07498# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@ -- /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDraw-stage-07073# If the bound pipeline was created with -- the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of an element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT', -- then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries> -- /must/ not be active -- -- - #VUID-vkCmdDraw-None-08877# If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-07850# If dynamic state was inherited from -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV', -- it /must/ be set in the current command buffer prior to this drawing -- command -- -- - #VUID-vkCmdDraw-nextStage-10745# For each shader object bound to a -- graphics stage, except for shader object bound to the last graphics -- stage in the logical pipeline, it /must/ have been created with a -- @nextStage@ including the corresponding bit to the shader object -- bound to the following graphics stage in the logical pipeline -- -- - #VUID-vkCmdDraw-None-08684# If there is no bound graphics pipeline, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- -- - #VUID-vkCmdDraw-None-08685# If there is no bound graphics pipeline, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- -- - #VUID-vkCmdDraw-None-08686# If there is no bound graphics pipeline, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- -- - #VUID-vkCmdDraw-None-08687# If there is no bound graphics pipeline, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- -- - #VUID-vkCmdDraw-None-08688# If there is no bound graphics pipeline, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- -- - #VUID-vkCmdDraw-None-08689# If there is no bound graphics pipeline, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-08690# If there is no bound graphics pipeline, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-08693# If there is no bound graphics pipeline, -- and at least one of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- features is enabled, one of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT' -- bound, and the other /must/ have no -- 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDraw-None-08696# If there is no bound graphics pipeline, -- and a valid 'Vulkan.Extensions.Handles.ShaderEXT' is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' -- bound to either the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- stage or the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stage -- -- - #VUID-vkCmdDraw-None-08698# If any graphics shader is bound which -- was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, then all shaders created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag in the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ also be bound -- -- - #VUID-vkCmdDraw-None-08699# If any graphics shader is bound which -- was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, any stages in between stages whose shaders which did not -- create a shader with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag as part of the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDraw-None-08878# All bound graphics shader objects /must/ -- have been created with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- push constant ranges -- -- - #VUID-vkCmdDraw-None-08879# All bound graphics shader objects /must/ -- have either been created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag set, or with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- arrays of descriptor set layouts -- -- - #VUID-vkCmdDraw-colorAttachmentCount-09372# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- and a fragment shader is bound, it /must/ not declare the -- @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes -- -- - #VUID-vkCmdDraw-pDynamicStates-08715# If the bound graphics pipeline -- state includes a fragment shader stage, was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@ -- parameter in the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDraw-pDynamicStates-08716# If the bound graphics pipeline -- state includes a fragment shader stage, was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@ -- parameter in the last call to 'cmdSetStencilWriteMask' /must/ be @0@ -- -- - #VUID-vkCmdDraw-None-09116# If a shader object is bound to any -- graphics stage or the bound graphics pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT', -- and the format of any color attachment is -- 'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the -- corresponding element of the @pColorWriteMasks@ parameter of -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ either include all of -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT', -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT', -- and -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT', -- or none of them -- -- - #VUID-vkCmdDraw-maxFragmentDualSrcAttachments-09239# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending> -- is enabled for any attachment where either the source or destination -- blend factors for that attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>, -- the maximum value of @Location@ for any output attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used> -- in the @Fragment@ @Execution@ @Model@ executed by this command -- /must/ be less than -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments> -- -- - #VUID-vkCmdDraw-None-09548# If the current render pass was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, the value of -- each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@ -- in the bound pipeline /must/ match the value for the corresponding -- locations set currently in the current render pass instance -- -- - #VUID-vkCmdDraw-None-09549# If the current render pass was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@ -- in the bound pipeline /must/ match the value for the corresponding -- index set currently in the current render pass instance -- -- - #VUID-vkCmdDraw-None-10927# If the current render pass was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDraw-None-10928# If the current render pass was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDraw-None-09642# If the current render pass was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag, the bound graphics pipeline /must/ have been created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-09643# If the bound graphics pipeline was -- created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT', -- the current render pass /must/ have begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag -- -- - #VUID-vkCmdDraw-None-10677# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw> -- feature /must/ be enabled -- -- - #VUID-vkCmdDraw-None-10772# If a shader object is bound to any -- graphics stage, /multiview/ functionality /must/ not be enabled in -- the current render pass -- -- - #VUID-vkCmdDraw-multiviewPerViewViewports-12262# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportCount@ -- -- - #VUID-vkCmdDraw-multiviewPerViewViewports-12263# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @scissorCount@ -- -- - #VUID-vkCmdDraw-flags-11521# If current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- which includes -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT', -- and if -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- is enabled (explicitly or implicitly), then the minimum fraction for -- sample shading /must/ equal 0.0 -- -- - #VUID-vkCmdDraw-None-11522# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ have been -- created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDraw-None-11523# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and does not contain a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ not have -- been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDraw-customResolve-11524# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, the graphics pipeline -- bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDraw-customResolve-11525# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not been recorded in the render pass instance, the graphics -- pipeline bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDraw-None-11861# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, the bound graphics pipeline /must/ -- have been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDraw-None-11862# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDraw-None-11863# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-11864# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-None-11865# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-None-11866# If current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-11867# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-None-11868# If the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-None-11869# If current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-11870# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDraw-colorAttachmentCount-11871# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@ and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, then for each element -- of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@ -- /must/ have been created with a sample count equal to the value of -- @rasterizationSamples@ for the bound graphics pipeline -- -- - #VUID-vkCmdDraw-pDepthAttachment-11872# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDraw-pStencilAttachment-11873# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDraw-customResolve-11529# If a shader object is bound to -- the fragment stage, the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- a fragment density map attachment is active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been called, then the fragment shader object bound /must/ have -- been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDraw-customResolve-11530# If a shader object is bound to -- the fragment stage, the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, a fragment density map attachment is -- active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been called, then the fragment shader object bound -- /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a -- protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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 and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and that pipeline was created without -- enabling -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- for @vertexInputs@, then 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-vkCmdDraw-format-10389# For each vertex attribute accessed by -- this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled, the value of @attribAddress@, calculated as -- described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format> -- -- - #VUID-vkCmdDraw-format-10390# For each vertex attribute accessed by -- this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is not a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or @format@ has 64-bit components, the value -- of @attribAddress@, calculated as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format> -- -- - #VUID-vkCmdDraw-None-07842# If there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-dynamicPrimitiveTopologyUnrestricted-07500# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted> -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then the -- @primitiveTopology@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /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.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@ -- state -- -- - #VUID-vkCmdDraw-primitiveTopology-10286# If a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage is bound, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ /must/ be -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command -- -- - #VUID-vkCmdDraw-primitiveTopology-10747# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command, then a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage /must/ be bound -- -- - #VUID-vkCmdDraw-primitiveTopology-10748# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST' -- prior to this drawing command, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5> -- feature is not enabled, both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/ -- have a @PointSize@ decorated variable that is statically written to -- -- - #VUID-vkCmdDraw-pStrides-04913# If the bound graphics pipeline was -- created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE' -- dynamic state enabled, but without the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command, and the -- @pStrides@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ not be @NULL@ -- -- - #VUID-vkCmdDraw-None-04914# If there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or 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 and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command -- -- - #VUID-vkCmdDraw-Input-07939# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9> -- feature is not enabled, and there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled then all variables with the @Input@ storage -- class decorated with @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ contain a location in -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@ -- -- - #VUID-vkCmdDraw-Input-08734# If there is a shader object bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or the SPIR-V Type associated with a given -- @Input@ variable of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type -- associated with all @Input@ variables of the corresponding -- @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/ -- be the same as -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- -- - #VUID-vkCmdDraw-format-08936# If there is a shader object bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then the scalar width associated with all -- @Input@ variables of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit -- -- - #VUID-vkCmdDraw-format-08937# If there is a shader object bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and the scalar width associated with a -- @Location@ decorated @Input@ variable in the @Vertex@ @Execution@ -- @Model@ @OpEntryPoint@ is 64-bit, then the corresponding -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- /must/ have a 64-bit component -- -- - #VUID-vkCmdDraw-None-09203# If there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then all @Input@ variables at the -- corresponding @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ not use components that are not present in the -- format -- -- - #VUID-vkCmdDraw-None-04875# If there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-04879# If there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-None-09637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY', -- or -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDraw-None-10909# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDraw-stage-06481# The bound graphics pipeline /must/ not -- have been created with the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of any element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDraw-None-08885# There /must/ be no shader object bound -- to either of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages -- -- - #VUID-vkCmdDraw-None-07619# If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDraw-OpExecutionMode-12239# If a shader is bound to both -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the type of subdivision, they /must/ be the same -- -- - #VUID-vkCmdDraw-OpExecutionMode-12240# If a shader is bound to both -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the orientation of triangles, they /must/ be the same -- -- - #VUID-vkCmdDraw-OpExecutionMode-12241# If a shader is bound to both -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the segment spacing, they /must/ be the same -- -- - #VUID-vkCmdDraw-OpExecutionMode-12242# If a shader is bound to both -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the output patch size, they /must/ be the same -- -- - #VUID-vkCmdDraw-pNext-09461# If the bound graphics pipeline state -- was created with -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PipelineVertexInputDivisorStateCreateInfo' -- in the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@, -- any member of -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PipelineVertexInputDivisorStateCreateInfo'::@pVertexBindingDivisors@ -- has a value other than @1@ in @divisor@, and -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@ -- /must/ be @0@ -- -- - #VUID-vkCmdDraw-None-09462# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects> -- are used for drawing or the bound graphics pipeline state was -- created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled, any member of the -- @pVertexBindingDescriptions@ parameter to the -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT' -- call that sets this dynamic state has a value other than @1@ in -- @divisor@, and -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@ -- /must/ be @0@ -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdDraw-renderpass# This command /must/ only be called -- inside of a render pass instance -- -- - #VUID-vkCmdDraw-suspended# This command /must/ not be called between -- suspended render pass instances -- -- - #VUID-vkCmdDraw-videocoding# This command /must/ only be called -- outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdDraw is affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> io () cmdDraw CommandBuffer commandBuffer "firstViewport" ::: Word32 vertexCount "firstViewport" ::: Word32 instanceCount "firstViewport" ::: Word32 firstVertex "firstViewport" ::: Word32 firstInstance = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdDrawPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdDraw (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdDraw is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdDraw' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDraw' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdDraw FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdDraw" (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDraw' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("firstViewport" ::: Word32 vertexCount) ("firstViewport" ::: Word32 instanceCount) ("firstViewport" ::: Word32 firstVertex) ("firstViewport" ::: Word32 firstInstance)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.cmdBindIndexBuffer2'::@indexType@ -- or 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' or -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.cmdBindIndexBuffer2', -- 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' 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', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-magFilter-09598# If a -- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or -- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and -- @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDrawIndexed-mipmapMode-04770# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-09599# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR' -- and @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDrawIndexed-unnormalizedCoordinates-09635# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @levelCount@ and @layerCount@ /must/ be 1 -- -- - #VUID-vkCmdDrawIndexed-None-08609# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @viewType@ /must/ be -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' -- -- - #VUID-vkCmdDrawIndexed-None-08610# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions with -- @ImplicitLod@, @Dref@ or @Proj@ in their name -- -- - #VUID-vkCmdDrawIndexed-None-08611# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values -- -- - #VUID-vkCmdDrawIndexed-None-06479# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>, -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' -- -- - #VUID-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-07888# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- descriptor is accessed using atomic operations as a result of this -- command, then the storage texel buffer’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-02692# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command, then the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-02693# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic> -- extension is not enabled and any 'Vulkan.Core10.Handles.ImageView' -- is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a -- result of this command, it /must/ not have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D', -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' -- -- - #VUID-vkCmdDrawIndexed-filterCubic-02694# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering, as specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDrawIndexed-filterCubicMinmax-02695# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode -- of either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- as a result of this command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering together with minmax filtering, as -- specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDrawIndexed-cubicRangeClamp-09212# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ not have a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- -- - #VUID-vkCmdDrawIndexed-reductionMode-09213# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- as a result of this command /must/ sample with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' -- -- - #VUID-vkCmdDrawIndexed-selectableCubicWeights-09214# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ have -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@ -- equal to -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' -- -- - #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-07027# For any -- 'Vulkan.Core10.Handles.ImageView' being written as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexed-OpTypeImage-07028# For any -- 'Vulkan.Core10.Handles.ImageView' being read as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexed-OpTypeImage-07029# For any -- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@, the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexed-OpTypeImage-07030# Any -- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@ then the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-08600# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a set /n/, 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' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???> -- -- - #VUID-vkCmdDrawIndexed-None-08601# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDrawIndexed-None-10068# For each array of resources that -- is used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- the indices used to access members of the array /must/ be less than -- the descriptor count for the identified binding in the descriptor -- sets used by this command -- -- - #VUID-vkCmdDrawIndexed-maintenance4-08602# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' and -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to -- create the current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDrawIndexed-None-08114# Descriptors in each bound -- descriptor set, specified via 'cmdBindDescriptorSets', /must/ be -- valid if they are accessed as described by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity> -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point used by this command and the bound -- 'Vulkan.Core10.Handles.Pipeline' was not created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-imageLayout-00344# If an image descriptor is -- accessed by a shader, the -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the -- subresource accessible from the 'Vulkan.Core10.Handles.ImageView' as -- defined by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules> -- -- - #VUID-vkCmdDrawIndexed-None-08115# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via 'cmdBindDescriptorSets', the bound -- 'Vulkan.Core10.Handles.Pipeline' /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-08116# Descriptors in bound descriptor -- buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline' -- was created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-08604# Descriptors in bound descriptor -- buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command -- -- - #VUID-vkCmdDrawIndexed-None-08117# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-08119# If a descriptor is dynamically -- used with a 'Vulkan.Core10.Handles.Pipeline' created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDrawIndexed-None-08605# If a descriptor is dynamically -- used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a -- 'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDrawIndexed-None-08606# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject> -- feature is not enabled, a valid pipeline /must/ be bound to the -- pipeline bind point used by this command -- -- - #VUID-vkCmdDrawIndexed-None-08608# If a pipeline is bound to the -- pipeline bind point used by this command, there /must/ not have been -- any calls to dynamic state setting commands for any state specified -- statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to -- the pipeline bind point used by this command, since that pipeline -- was bound -- -- - #VUID-vkCmdDrawIndexed-uniformBuffers-06935# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDrawIndexed-None-08612# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDrawIndexed-storageBuffers-06936# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDrawIndexed-None-08613# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a storage -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDrawIndexed-commandBuffer-02707# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, any resource accessed by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders> -- /must/ not be a protected resource -- -- - #VUID-vkCmdDrawIndexed-viewType-07752# If a -- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this -- command, then the image view’s @viewType@ /must/ match the @Dim@ -- operand of the @OpTypeImage@ as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???> -- -- - #VUID-vkCmdDrawIndexed-format-07753# If a -- 'Vulkan.Core10.Handles.ImageView' or -- 'Vulkan.Core10.Handles.BufferView' is accessed as a result of this -- command, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type> -- of the view’s @format@ and the @Sampled@ @Type@ operand of the -- @OpTypeImage@ /must/ match -- -- - #VUID-vkCmdDrawIndexed-OpImageWrite-08795# If a -- 'Vulkan.Core10.Handles.ImageView' created with a format other than -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-08796# If a -- 'Vulkan.Core10.Handles.ImageView' created with the format -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using -- @OpImageWrite@ as a result of this command, then the @Type@ of the -- @Texel@ operand of that instruction /must/ have four components -- -- - #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-OpImageSampleWeightedQCOM-06971# If -- @OpImageSampleWeightedQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageSampleWeightedQCOM-06972# If -- @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView' -- as a sample weight image as a result of this command, then the image -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageBoxFilterQCOM-06973# If -- @OpImageBoxFilterQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageBlockMatchSSDQCOM-06974# If -- @OpImageBlockMatchSSDQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06975# If -- @OpImageBlockMatchSADQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06976# If -- @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDrawIndexed-OpImageSampleWeightedQCOM-06977# If -- @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageSampleWeightedQCOM-06978# If any -- command other than @OpImageSampleWeightedQCOM@, -- @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@, -- @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@, -- @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or -- @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as -- a result of this command, then the sampler /must/ not have been -- created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09215# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09216# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s format /must/ be a single-component format -- -- - #VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09217# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDrawIndexed-None-07288# Any shader invocation executed by -- this command /must/ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate> -- -- - #VUID-vkCmdDrawIndexed-None-09600# If a descriptor with type equal -- to any of -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- is accessed as a result of this command, all image subresources -- identified by that descriptor /must/ be in the image layout -- identified when the descriptor was written -- -- - #VUID-vkCmdDrawIndexed-commandBuffer-10746# The -- 'Vulkan.Core10.Handles.DeviceMemory' object allocated from a -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property that is bound to a resource accessed as a result of this -- command /must/ be the active bound -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object> -- in @commandBuffer@ -- -- - #VUID-vkCmdDrawIndexed-None-10678# If this command is recorded -- inside a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass> -- instance, the stages corresponding to the pipeline bind point used -- by this command /must/ only include -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT', -- and\/or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-10679# If this command is recorded where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, there /must/ be no access to any image while the image -- was be transitioned to the -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- layout -- -- - #VUID-vkCmdDrawIndexed-pDescription-09900# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the -- underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have -- been created with the -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage -- flag set -- -- - #VUID-vkCmdDrawIndexed-dimensionCount-09905# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the @Rank@ -- of the @OpTypeTensorARM@ of the tensor resource variable /must/ be -- equal to the @dimensionCount@ provided via -- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@ -- when creating the underlying 'Vulkan.Extensions.Handles.TensorARM' -- object -- -- - #VUID-vkCmdDrawIndexed-OpTypeTensorARM-09906# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the element -- type of the @OpTypeTensorARM@ of the tensor resource variable /must/ -- be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible> -- with the 'Vulkan.Core10.Enums.Format.Format' of the -- 'Vulkan.Extensions.Handles.TensorViewARM' used for the access -- -- - #VUID-vkCmdDrawIndexed-None-11297# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a @OpTypeStruct@ decorated with @Block@ or -- @BufferBlock@ using that mapping, the calculated offset for the -- resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexed-None-11298# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using -- that mapping, the calculated offset for the resource heap /must/ be -- a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexed-None-11299# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@ -- using that mapping, the calculated offset for the sampler heap -- /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexed-None-11397# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeTensorARM@ using that mapping, the -- calculated offset for the resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexed-None-11300# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 4 -- -- - #VUID-vkCmdDrawIndexed-None-11301# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDrawIndexed-None-11302# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDrawIndexed-None-11304# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 8 -- -- - #VUID-vkCmdDrawIndexed-None-11305# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDrawIndexed-None-11306# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address pointed to by the address in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDrawIndexed-None-11308# For each -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap> -- that is statically used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- either directly or via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- a valid descriptor heap /must/ be bound -- -- - #VUID-vkCmdDrawIndexed-None-11309# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, execution of this command /must/ not result in any descriptor -- read accessing data outside of the user range of the respective heap -- bound by @vkCmdBind*HeapEXT@ commands -- -- - #VUID-vkCmdDrawIndexed-None-11372# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer or uniform -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndexed-None-11373# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer or storage -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndexed-None-11374# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, uniform texel buffer, storage buffer, or storage texel -- buffer, that shader /must/ not access values outside of the range of -- the buffer as specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndexed-pBindInfo-11375# If any -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- uses an embedded sampler via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- the value of @pBindInfo->reservedRangeSize@ set for -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT' -- /must/ be greater than or equal to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded> -- -- - #VUID-vkCmdDrawIndexed-None-11376# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT' -- -- - #VUID-vkCmdDrawIndexed-None-11398# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the access -- /must/ not be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds> -- -- - #VUID-vkCmdDrawIndexed-None-11437# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the buffer from -- which the address in push data was queried /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndexed-None-11438# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndexed-None-11441# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment> -- -- - #VUID-vkCmdDrawIndexed-None-11439# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndexed-None-11442# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment> -- -- - #VUID-vkCmdDrawIndexed-None-11485# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses an acceleration structure using that mapping, -- the address that the acceleration structure is mapped to /must/ be -- an acceleration structure address retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR' -- or handle retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' object via -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV' -- -- - #VUID-vkCmdDrawIndexed-index-11450# If a shader uses a sampler -- descriptor to sample an image as a result of this command, and that -- sampler descriptor uses a custom border color with an index defined -- by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT', -- the value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@ -- /must/ have been registered before this command was recorded, and -- still be registered during the sampling operation, with an -- identically defined color -- -- - #VUID-vkCmdDrawIndexed-protectedNoFault-11455# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- the address that the resource is mapped to /must/ have been queried -- from a buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDrawIndexed-protectedNoFault-11456# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- the address of the indirect memory /must/ have been queried from a -- buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #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.GraphicsPipeline.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.GraphicsPipeline.GraphicsPipelineCreateInfo' -- structure specified when creating the -- 'Vulkan.Core10.Handles.Pipeline' bound to -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- - #VUID-vkCmdDrawIndexed-OpTypeImage-07468# If any shader executed by -- this pipeline accesses an @OpTypeImage@ variable with a @Dim@ -- operand of @SubpassData@, it /must/ be decorated with an -- @InputAttachmentIndex@ that corresponds to a valid input attachment -- in the current subpass -- -- - #VUID-vkCmdDrawIndexed-None-07469# Input attachment views accessed -- in a subpass /must/ be created with the same -- 'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass -- definition, and be created with a 'Vulkan.Core10.Handles.ImageView' -- that is compatible with the attachment referenced by the subpass\' -- @pInputAttachments@[@InputAttachmentIndex@] in the bound -- 'Vulkan.Core10.Handles.Framebuffer' as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility> -- -- - #VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09595# Input -- attachment views accessed in a dynamic render pass with a -- @InputAttachmentIndex@ referenced by -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo', -- or no @InputAttachmentIndex@ if -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- or -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are @NULL@, /must/ be created with a -- 'Vulkan.Core10.Handles.ImageView' that is compatible with the -- corresponding color, depth, or stencil attachment in -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- -- - #VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09596# Input -- attachment views accessed in a dynamic render pass via a shader -- object /must/ have an @InputAttachmentIndex@ if both -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- and -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are non-@NULL@ -- -- - #VUID-vkCmdDrawIndexed-InputAttachmentIndex-09597# If an input -- attachment view accessed in a dynamic render pass via a shader -- object has an @InputAttachmentIndex@, the @InputAttachmentIndex@ -- /must/ match an index in -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo' -- -- - #VUID-vkCmdDrawIndexed-None-06537# Memory backing image subresources -- used as attachments in the current render pass /must/ not be written -- in any way other than as an attachment by this command -- -- - #VUID-vkCmdDrawIndexed-None-10795# If a color attachment is written -- by any prior command in this subpass or by the load, store, or -- resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDrawIndexed-None-10796# If a depth attachment is written -- by any prior command in this subpass or by the load, store, or -- resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDrawIndexed-None-10797# If a stencil attachment is -- written by any prior command in this subpass or by the load, store, -- or resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, it /must/ not be accessed in any way other than -- as an attachment by this command -- -- - #VUID-vkCmdDrawIndexed-None-12338# If a color attachment is read in -- this command in any way other than as an attachment, or has been -- read by any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, the color attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDrawIndexed-None-12339# If a depth attachment is read in -- this command in any way other than as an attachment, or has been -- read by any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, the depth attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDrawIndexed-None-12340# If a stencil attachment is read -- in this command in any way other than as an attachment, or has been -- read by any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, the stencil attachment /must/ not be written to -- by this command -- -- - #VUID-vkCmdDrawIndexed-None-09003# If an attachment is written by -- any prior command in this subpass or by the load, store, or resolve -- operations for this subpass, it /must/ not be accessed in any way -- other than as an attachment, storage image, or sampled image by this -- command -- -- - #VUID-vkCmdDrawIndexed-None-06886# If the current render pass -- instance uses a depth\/stencil attachment with a read-only layout -- for the depth aspect, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes> -- /must/ be disabled -- -- - #VUID-vkCmdDrawIndexed-None-06887# If the current render pass -- instance uses a depth\/stencil attachment with a read-only layout -- for the stencil aspect, both front and back @writeMask@ are not -- zero, and stencil test is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops> -- /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP' -- -- - #VUID-vkCmdDrawIndexed-None-07831# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic -- state enabled then 'cmdSetViewport' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07832# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic -- state enabled then 'cmdSetScissor' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-08617# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then 'cmdSetLineWidth' /must/ have been -- called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07834# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'cmdSetDepthBias' or -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07835# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a -- blend equations where any -- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA', -- then 'cmdSetBlendConstants' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07836# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetDepthBounds' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07837# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilCompareMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07838# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilWriteMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07839# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of and @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilReference' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #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', then the active depth -- attachment /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDrawIndexed-None-07634# If the @VK_EXT_sample_locations@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-06666# If the @VK_EXT_sample_locations@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07840# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07841# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07843# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07844# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07845# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07846# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07847# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07848# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-viewportCount-03417# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-scissorCount-03418# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing -- -- - #VUID-vkCmdDrawIndexed-viewportCount-03419# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with both the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic states enabled, and the state is not inherited, then the -- @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ match the @scissorCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- -- - #VUID-vkCmdDrawIndexed-viewportCount-04137# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-viewportCount-04138# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-08636# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-viewportCount-04139# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-shadingRateImage-09233# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-shadingRateImage-09234# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-08637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-None-07878# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07879# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' -- dynamic state enabled, and the most recent call to -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- in the current command buffer set any element of -- @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-04876# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-04877# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-logicOp-04878# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- 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' -- dynamic state enabled, and any of the shader stages of the bound -- graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in, -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-08642# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports> -- limit is not supported, and any shader object bound to a graphics -- stage writes to the @PrimitiveShadingRateKHR@ built-in, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDrawIndexed-blendEnable-04727# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then for each color -- attachment, 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 corresponding -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexed-None-08644# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is -- enabled: -- -- - the @VK_AMD_mixed_attachment_samples@ extension -- -- - the @VK_NV_framebuffer_mixed_samples@ extension -- -- - the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature -- -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ /must/ be the same as the current color -- and\/or depth\/stencil attachments -- -- - #VUID-vkCmdDrawIndexed-None-08876# If a shader object is bound to -- any graphics stage, the current render pass instance /must/ have -- been begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdDrawIndexed-imageView-06172# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndexed-imageView-06173# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndexed-imageView-06174# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndexed-imageView-06175# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndexed-imageView-06176# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndexed-imageView-06177# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndexed-viewMask-06178# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@ -- -- - #VUID-vkCmdDrawIndexed-colorAttachmentCount-06179# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08910# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08912# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08911# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, and the current render pass instance was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-colorAttachmentCount-09362# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, there is no shader object bound to any graphics stage, -- and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-None-09363# If there is no shader object -- bound to any graphics stage, the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-None-09364# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set the blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-09365# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-09366# If there is a shader object bound -- to any graphics stage, and the current render pass includes a color -- attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-rasterizationSamples-09367# If there is a -- shader object bound to any graphics stage, and the current render -- pass includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-09368# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexed-None-09369# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexed-pFragmentSize-09370# If there is a shader -- object bound to any graphics stage, and the current render pass -- includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexed-pFragmentSize-09371# If there is a shader -- object bound to any graphics stage, and the current render pass -- includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexed-None-07749# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-attachmentCount-07750# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@ -- parameter of most recent call to -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- in the current command buffer /must/ be greater than or equal to the -- number of active color attachments -- -- - #VUID-vkCmdDrawIndexed-None-07751# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a graphics -- pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included -- a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09236# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not -- include a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@ -- -- - #VUID-vkCmdDrawIndexed-None-07880# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07881# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08913# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08914# If -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08915# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08916# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08917# If -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08918# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-imageView-06183# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingLocalRead-11797# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead> -- feature is enabled, the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR' -- flag is specified, and an attachment is being used as a feedback -- loop as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >, -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@ -- for that attachment /must/ include -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' -- -- - #VUID-vkCmdDrawIndexed-imageView-06184# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-layers-10831# If the current render pass -- instance was created with -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' -- or -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- and the bound graphics pipeline was created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- then the current render pass instance /must/ have a @layers@ value -- less than or equal to -- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@ -- -- - #VUID-vkCmdDrawIndexed-colorAttachmentCount-06185# If the bound -- pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the corresponding element of the -- @pColorAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-pDepthAttachment-06186# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexed-pStencilAttachment-06187# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07285# If -- the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the value of @rasterizationSamples@ for -- the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07286# If -- the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07287# If -- the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexed-pNext-07935# If this command is called inside -- a render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and the @pNext@ chain of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndexed-renderPass-06198# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline /must/ have been created with a -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@ -- equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-vkCmdDrawIndexed-pColorAttachments-08963# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound with a fragment shader that statically -- writes to a color attachment, the color write mask is not zero, -- color writes are enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-pColorAttachments-11539# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound with a fragment shader that statically writes to a -- color attachment, the color write mask is not zero, color writes are -- enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-pDepthAttachment-08964# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-pDepthAttachment-11540# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-pStencilAttachment-08965# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-pStencilAttachment-11860# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-flags-10582# If the current render pass -- instance was begun with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- call in @commandBuffer@, its -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- parameter /must/ not have -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' -- set unless -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR' -- is also set -- -- - #VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithRasterizerDiscard-06708# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard> -- /must/ not be enabled -- -- - #VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-06709# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, the bound graphics pipeline /must/ not have been -- created with a non-zero value in -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@ -- -- - #VUID-vkCmdDrawIndexed-None-07620# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07621# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07622# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07623# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-alphaToCoverageEnable-08919# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and @alphaToCoverageEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDrawIndexed-alphaToCoverageEnable-08920# If a shader -- object is bound to any graphics stage, and the most recent call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- in the current command buffer set @alphaToCoverageEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDrawIndexed-None-07624# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07625# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07626# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07627# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07629# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07630# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams> -- feature is enabled, and a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07631# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07632# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ is -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-conservativePointAndLineRasterization-07499# -- If the @VK_EXT_conservative_rasterization@ extension is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization> -- is not supported, a shader object is bound to any graphics stage or -- a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line or point topology class, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ /must/ be -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-07633# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT' -- dynamic state, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07636# If the @VK_EXT_provoking_vertex@ -- extension is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-08666# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-08669# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07849# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled and a shader object is bound to any graphics -- stage, or a bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterizationRoadmap.cmdSetLineStipple' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-10608# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, and the current @lineRasterizationMode@ -- is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM' -- or -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and -- @sampleShadingEnable@ states /must/ all be -- 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexed-None-07639# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-09650# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07640# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07641# If the @VK_NV_viewport_swizzle@ -- extension is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07642# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07643# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07644# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07645# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationMode@ is any value other than -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07646# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationTableEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07647# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-pipelineFragmentShadingRate-09238# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07648# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07649# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-rasterizationSamples-07471# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the current subpass does not use any color -- and\/or depth\/stencil attachments, then the @rasterizationSamples@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ follow the rules for a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass> -- -- - #VUID-vkCmdDrawIndexed-samples-07472# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ -- parameter used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-samples-07473# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- states enabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the @rasterizationSamples@ parameter -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexed-rasterizationSamples-07474# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and neither the -- @VK_AMD_mixed_attachment_samples@ nor the -- @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the current subpass color and\/or -- depth\/stencil attachments -- -- - #VUID-vkCmdDrawIndexed-None-09211# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, or a shader object is bound to any graphics stage, -- and the current render pass instance includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the @rasterizationSamples@ member of that -- structure -- -- - #VUID-vkCmdDrawIndexed-firstAttachment-07476# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDrawIndexed-firstAttachment-07478# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDrawIndexed-advancedBlendMaxColorAttachments-07480# If a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- number of active color attachments /must/ not exceed -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments> -- -- - #VUID-vkCmdDrawIndexed-None-10862# If a graphics pipeline is bound -- was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- , but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-10863# If a graphics -- pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT', -- but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexed-None-10864# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- or -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-07481# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, and the bound graphics pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- state enabled, the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have set the @rasterizationStream@ to zero -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07482# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ member of the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo' -- structure the bound graphics pipeline has been created with -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07483# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ parameter of the last call -- to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsEnable-07484# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- then the current active depth attachment /must/ have been created -- with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsEnable-07485# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsEnable-07486# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsEnable-07487# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- the fragment shader code /must/ not statically use the extended -- instruction @InterpolateAtSample@ -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsEnable-07936# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsEnable-07937# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexed-sampleLocationsEnable-07938# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexed-coverageModulationTableEnable-07488# If a -- shader object is bound to any graphics stage or the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- state enabled, and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- set @coverageModulationTableEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @coverageModulationTableCount@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ equal the current @rasterizationSamples@ divided by the -- number of color samples in the current active color attachment -- -- - #VUID-vkCmdDrawIndexed-rasterizationSamples-07489# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if -- current subpass has a depth\/stencil attachment and depth test, -- stencil test, or depth bounds test are enabled in the bound -- pipeline, then the current @rasterizationSamples@ /must/ be the same -- as the sample count of the depth\/stencil attachment -- -- - #VUID-vkCmdDrawIndexed-coverageToColorEnable-07490# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- state enabled and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09420# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, and a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, and the most recent call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- in the current command buffer set @rasterizerDiscardEnable@ to -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDrawIndexed-coverageReductionMode-07491# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic states enabled, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values> -- of @coverageReductionMode@, @rasterizationSamples@, the sample -- counts for the color and depth\/stencil attachments (if the subpass -- has them) /must/ be a valid combination returned by -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' -- -- - #VUID-vkCmdDrawIndexed-viewportCount-07492# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-viewportCount-07493# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic states enabled then the @viewportCount@ parameter in the -- last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-viewportCount-09421# If the -- @VK_NV_viewport_swizzle@ extension is enabled, and a shader object -- is bound to any graphics stage, then the @viewportCount@ parameter -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexed-rasterizationSamples-07494# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is not enabled, or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageReductionMode@ is not -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV', -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ is greater than sample count of the color -- attachment, then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- /must/ be disabled -- -- - #VUID-vkCmdDrawIndexed-stippledLineEnable-07495# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexed-stippledLineEnable-07496# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexed-stippledLineEnable-07497# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexed-stippledLineEnable-07498# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@ -- /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexed-stage-07073# If the bound pipeline was -- created with the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of an element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT', -- then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries> -- /must/ not be active -- -- - #VUID-vkCmdDrawIndexed-None-08877# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-07850# If dynamic state was inherited -- from -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV', -- it /must/ be set in the current command buffer prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexed-nextStage-10745# For each shader object bound -- to a graphics stage, except for shader object bound to the last -- graphics stage in the logical pipeline, it /must/ have been created -- with a @nextStage@ including the corresponding bit to the shader -- object bound to the following graphics stage in the logical pipeline -- -- - #VUID-vkCmdDrawIndexed-None-08684# If there is no bound graphics -- pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' -- /must/ have been called in the current command buffer with @pStages@ -- with an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-08685# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-08686# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-08687# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-08688# If there is no bound graphics -- pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' -- /must/ have been called in the current command buffer with @pStages@ -- with an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- -- - #VUID-vkCmdDrawIndexed-None-08689# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-08690# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-08693# If there is no bound graphics -- pipeline, and at least one of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- features is enabled, one of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT' -- bound, and the other /must/ have no -- 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDrawIndexed-None-08696# If there is no bound graphics -- pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT' is bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' -- bound to either the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- stage or the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stage -- -- - #VUID-vkCmdDrawIndexed-None-08698# If any graphics shader is bound -- which was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, then all shaders created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag in the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ also be bound -- -- - #VUID-vkCmdDrawIndexed-None-08699# If any graphics shader is bound -- which was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, any stages in between stages whose shaders which did not -- create a shader with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag as part of the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDrawIndexed-None-08878# All bound graphics shader objects -- /must/ have been created with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- push constant ranges -- -- - #VUID-vkCmdDrawIndexed-None-08879# All bound graphics shader objects -- /must/ have either been created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag set, or with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- arrays of descriptor set layouts -- -- - #VUID-vkCmdDrawIndexed-colorAttachmentCount-09372# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- and a fragment shader is bound, it /must/ not declare the -- @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes -- -- - #VUID-vkCmdDrawIndexed-pDynamicStates-08715# If the bound graphics -- pipeline state includes a fragment shader stage, was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@ -- parameter in the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexed-pDynamicStates-08716# If the bound graphics -- pipeline state includes a fragment shader stage, was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@ -- parameter in the last call to 'cmdSetStencilWriteMask' /must/ be @0@ -- -- - #VUID-vkCmdDrawIndexed-None-09116# If a shader object is bound to -- any graphics stage or the bound graphics pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT', -- and the format of any color attachment is -- 'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the -- corresponding element of the @pColorWriteMasks@ parameter of -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ either include all of -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT', -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT', -- and -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT', -- or none of them -- -- - #VUID-vkCmdDrawIndexed-maxFragmentDualSrcAttachments-09239# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending> -- is enabled for any attachment where either the source or destination -- blend factors for that attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>, -- the maximum value of @Location@ for any output attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used> -- in the @Fragment@ @Execution@ @Model@ executed by this command -- /must/ be less than -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments> -- -- - #VUID-vkCmdDrawIndexed-None-09548# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, the value of -- each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@ -- in the bound pipeline /must/ match the value for the corresponding -- locations set currently in the current render pass instance -- -- - #VUID-vkCmdDrawIndexed-None-09549# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@ -- in the bound pipeline /must/ match the value for the corresponding -- index set currently in the current render pass instance -- -- - #VUID-vkCmdDrawIndexed-None-10927# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDrawIndexed-None-10928# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDrawIndexed-None-09642# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag, the bound graphics pipeline /must/ have been created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-09643# If the bound graphics pipeline -- was created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT', -- the current render pass /must/ have begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag -- -- - #VUID-vkCmdDrawIndexed-None-10677# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexed-None-10772# If a shader object is bound to -- any graphics stage, /multiview/ functionality /must/ not be enabled -- in the current render pass -- -- - #VUID-vkCmdDrawIndexed-multiviewPerViewViewports-12262# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportCount@ -- -- - #VUID-vkCmdDrawIndexed-multiviewPerViewViewports-12263# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @scissorCount@ -- -- - #VUID-vkCmdDrawIndexed-flags-11521# If current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- which includes -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT', -- and if -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- is enabled (explicitly or implicitly), then the minimum fraction for -- sample shading /must/ equal 0.0 -- -- - #VUID-vkCmdDrawIndexed-None-11522# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ have been -- created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDrawIndexed-None-11523# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and does not contain a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ not have -- been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDrawIndexed-customResolve-11524# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, the graphics pipeline -- bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexed-customResolve-11525# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not been recorded in the render pass instance, the graphics -- pipeline bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexed-None-11861# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, the bound graphics pipeline /must/ -- have been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDrawIndexed-None-11862# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-None-11863# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-11864# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-None-11865# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-None-11866# If current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-11867# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-None-11868# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-None-11869# If current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-11870# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexed-colorAttachmentCount-11871# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@ and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, then for each element -- of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@ -- /must/ have been created with a sample count equal to the value of -- @rasterizationSamples@ for the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexed-pDepthAttachment-11872# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexed-pStencilAttachment-11873# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexed-customResolve-11529# If a shader object is -- bound to the fragment stage, the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- a fragment density map attachment is active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been called, then the fragment shader object bound /must/ have -- been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexed-customResolve-11530# If a shader object is -- bound to the fragment stage, the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, a fragment density map attachment is -- active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been called, then the fragment shader object bound -- /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a -- protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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 and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and that pipeline was created without -- enabling -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- for @vertexInputs@, then 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-format-10389# For each vertex attribute -- accessed by this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled, the value of @attribAddress@, calculated as -- described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format> -- -- - #VUID-vkCmdDrawIndexed-format-10390# For each vertex attribute -- accessed by this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is not a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or @format@ has 64-bit components, the value -- of @attribAddress@, calculated as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format> -- -- - #VUID-vkCmdDrawIndexed-None-07842# If there is a shader object bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-dynamicPrimitiveTopologyUnrestricted-07500# -- If the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted> -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then the -- @primitiveTopology@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /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.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@ -- state -- -- - #VUID-vkCmdDrawIndexed-primitiveTopology-10286# If a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage is bound, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ /must/ be -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-primitiveTopology-10747# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command, then a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage /must/ be bound -- -- - #VUID-vkCmdDrawIndexed-primitiveTopology-10748# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST' -- prior to this drawing command, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5> -- feature is not enabled, both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/ -- have a @PointSize@ decorated variable that is statically written to -- -- - #VUID-vkCmdDrawIndexed-pStrides-04913# If the bound graphics -- pipeline was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE' -- dynamic state enabled, but without the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command, and the -- @pStrides@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ not be @NULL@ -- -- - #VUID-vkCmdDrawIndexed-None-04914# If there is a shader object bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or 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 and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command -- -- - #VUID-vkCmdDrawIndexed-Input-07939# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9> -- feature is not enabled, and there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled then all variables with the @Input@ storage -- class decorated with @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ contain a location in -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@ -- -- - #VUID-vkCmdDrawIndexed-Input-08734# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or the SPIR-V Type associated with a given -- @Input@ variable of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type -- associated with all @Input@ variables of the corresponding -- @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/ -- be the same as -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- -- - #VUID-vkCmdDrawIndexed-format-08936# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then the scalar width associated with all -- @Input@ variables of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit -- -- - #VUID-vkCmdDrawIndexed-format-08937# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and the scalar width associated with a -- @Location@ decorated @Input@ variable in the @Vertex@ @Execution@ -- @Model@ @OpEntryPoint@ is 64-bit, then the corresponding -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- /must/ have a 64-bit component -- -- - #VUID-vkCmdDrawIndexed-None-09203# If there is a shader object bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then all @Input@ variables at the -- corresponding @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ not use components that are not present in the -- format -- -- - #VUID-vkCmdDrawIndexed-None-04875# If there is a shader object bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-04879# If there is a shader object bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-None-09637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY', -- or -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexed-None-10909# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexed-stage-06481# The bound graphics pipeline -- /must/ not have been created with the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of any element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexed-None-08885# There /must/ be no shader object -- bound to either of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages -- -- - #VUID-vkCmdDrawIndexed-None-07619# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexed-OpExecutionMode-12239# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the type of subdivision, they /must/ be the same -- -- - #VUID-vkCmdDrawIndexed-OpExecutionMode-12240# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the orientation of triangles, they /must/ be the same -- -- - #VUID-vkCmdDrawIndexed-OpExecutionMode-12241# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the segment spacing, they /must/ be the same -- -- - #VUID-vkCmdDrawIndexed-OpExecutionMode-12242# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the output patch size, they /must/ be the same -- -- - #VUID-vkCmdDrawIndexed-None-07312# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6> -- feature is not enabled, a valid index buffer /must/ be bound -- -- - #VUID-vkCmdDrawIndexed-pNext-09461# If the bound graphics pipeline -- state was created with -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PipelineVertexInputDivisorStateCreateInfo' -- in the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@, -- any member of -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PipelineVertexInputDivisorStateCreateInfo'::@pVertexBindingDivisors@ -- has a value other than @1@ in @divisor@, and -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@ -- /must/ be @0@ -- -- - #VUID-vkCmdDrawIndexed-None-09462# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects> -- are used for drawing or the bound graphics pipeline state was -- created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled, any member of the -- @pVertexBindingDescriptions@ parameter to the -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT' -- call that sets this dynamic state has a value other than @1@ in -- @divisor@, and -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@ -- /must/ be @0@ -- -- - #VUID-vkCmdDrawIndexed-robustBufferAccess2-08798# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, (@indexSize@ × (@firstIndex@ + @indexCount@) -- + @offset@) /must/ be less than or equal to the size of the bound -- index buffer, with @indexSize@ being based on the type specified by -- @indexType@, where the index buffer, @indexType@, and @offset@ are -- specified via 'cmdBindIndexBuffer' or -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.cmdBindIndexBuffer2'. -- If -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.cmdBindIndexBuffer2' -- is used to bind the index buffer, the size of the bound index buffer -- is -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.cmdBindIndexBuffer2'::@size@ -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdDrawIndexed-renderpass# This command /must/ only be -- called inside of a render pass instance -- -- - #VUID-vkCmdDrawIndexed-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdDrawIndexed-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdDrawIndexed is affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> io () cmdDrawIndexed CommandBuffer commandBuffer "firstViewport" ::: Word32 indexCount "firstViewport" ::: Word32 instanceCount "firstViewport" ::: Word32 firstIndex "vertexOffset" ::: Int32 vertexOffset "firstViewport" ::: Word32 firstInstance = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdDrawIndexedPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndexedPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdDrawIndexed (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndexedPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdDrawIndexed is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdDrawIndexed' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDrawIndexed' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdDrawIndexed FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndexedPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdDrawIndexed" (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDrawIndexed' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("firstViewport" ::: Word32 indexCount) ("firstViewport" ::: Word32 instanceCount) ("firstViewport" ::: Word32 firstIndex) ("vertexOffset" ::: Int32 vertexOffset) ("firstViewport" ::: Word32 firstInstance)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-magFilter-09598# If a -- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or -- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and -- @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDrawIndirect-mipmapMode-04770# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-09599# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR' -- and @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDrawIndirect-unnormalizedCoordinates-09635# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @levelCount@ and @layerCount@ /must/ be 1 -- -- - #VUID-vkCmdDrawIndirect-None-08609# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @viewType@ /must/ be -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' -- -- - #VUID-vkCmdDrawIndirect-None-08610# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions with -- @ImplicitLod@, @Dref@ or @Proj@ in their name -- -- - #VUID-vkCmdDrawIndirect-None-08611# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values -- -- - #VUID-vkCmdDrawIndirect-None-06479# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>, -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' -- -- - #VUID-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-07888# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- descriptor is accessed using atomic operations as a result of this -- command, then the storage texel buffer’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-02692# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command, then the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-02693# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic> -- extension is not enabled and any 'Vulkan.Core10.Handles.ImageView' -- is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a -- result of this command, it /must/ not have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D', -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' -- -- - #VUID-vkCmdDrawIndirect-filterCubic-02694# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering, as specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDrawIndirect-filterCubicMinmax-02695# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode -- of either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- as a result of this command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering together with minmax filtering, as -- specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDrawIndirect-cubicRangeClamp-09212# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ not have a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- -- - #VUID-vkCmdDrawIndirect-reductionMode-09213# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- as a result of this command /must/ sample with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' -- -- - #VUID-vkCmdDrawIndirect-selectableCubicWeights-09214# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ have -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@ -- equal to -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' -- -- - #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-07027# For any -- 'Vulkan.Core10.Handles.ImageView' being written as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndirect-OpTypeImage-07028# For any -- 'Vulkan.Core10.Handles.ImageView' being read as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndirect-OpTypeImage-07029# For any -- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@, the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndirect-OpTypeImage-07030# Any -- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@ then the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-08600# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a set /n/, 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' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???> -- -- - #VUID-vkCmdDrawIndirect-None-08601# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDrawIndirect-None-10068# For each array of resources that -- is used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- the indices used to access members of the array /must/ be less than -- the descriptor count for the identified binding in the descriptor -- sets used by this command -- -- - #VUID-vkCmdDrawIndirect-maintenance4-08602# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' and -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to -- create the current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDrawIndirect-None-08114# Descriptors in each bound -- descriptor set, specified via 'cmdBindDescriptorSets', /must/ be -- valid if they are accessed as described by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity> -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point used by this command and the bound -- 'Vulkan.Core10.Handles.Pipeline' was not created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-imageLayout-00344# If an image descriptor is -- accessed by a shader, the -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the -- subresource accessible from the 'Vulkan.Core10.Handles.ImageView' as -- defined by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules> -- -- - #VUID-vkCmdDrawIndirect-None-08115# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via 'cmdBindDescriptorSets', the bound -- 'Vulkan.Core10.Handles.Pipeline' /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-08116# Descriptors in bound descriptor -- buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline' -- was created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-08604# Descriptors in bound descriptor -- buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command -- -- - #VUID-vkCmdDrawIndirect-None-08117# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-08119# If a descriptor is dynamically -- used with a 'Vulkan.Core10.Handles.Pipeline' created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDrawIndirect-None-08605# If a descriptor is dynamically -- used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a -- 'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDrawIndirect-None-08606# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject> -- feature is not enabled, a valid pipeline /must/ be bound to the -- pipeline bind point used by this command -- -- - #VUID-vkCmdDrawIndirect-None-08608# If a pipeline is bound to the -- pipeline bind point used by this command, there /must/ not have been -- any calls to dynamic state setting commands for any state specified -- statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to -- the pipeline bind point used by this command, since that pipeline -- was bound -- -- - #VUID-vkCmdDrawIndirect-uniformBuffers-06935# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDrawIndirect-None-08612# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDrawIndirect-storageBuffers-06936# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDrawIndirect-None-08613# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a storage -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDrawIndirect-commandBuffer-02707# If @commandBuffer@ is -- an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, any resource accessed by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders> -- /must/ not be a protected resource -- -- - #VUID-vkCmdDrawIndirect-viewType-07752# If a -- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this -- command, then the image view’s @viewType@ /must/ match the @Dim@ -- operand of the @OpTypeImage@ as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???> -- -- - #VUID-vkCmdDrawIndirect-format-07753# If a -- 'Vulkan.Core10.Handles.ImageView' or -- 'Vulkan.Core10.Handles.BufferView' is accessed as a result of this -- command, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type> -- of the view’s @format@ and the @Sampled@ @Type@ operand of the -- @OpTypeImage@ /must/ match -- -- - #VUID-vkCmdDrawIndirect-OpImageWrite-08795# If a -- 'Vulkan.Core10.Handles.ImageView' created with a format other than -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-08796# If a -- 'Vulkan.Core10.Handles.ImageView' created with the format -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using -- @OpImageWrite@ as a result of this command, then the @Type@ of the -- @Texel@ operand of that instruction /must/ have four components -- -- - #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-OpImageSampleWeightedQCOM-06971# If -- @OpImageSampleWeightedQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageSampleWeightedQCOM-06972# If -- @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView' -- as a sample weight image as a result of this command, then the image -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageBoxFilterQCOM-06973# If -- @OpImageBoxFilterQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageBlockMatchSSDQCOM-06974# If -- @OpImageBlockMatchSSDQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06975# If -- @OpImageBlockMatchSADQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06976# If -- @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDrawIndirect-OpImageSampleWeightedQCOM-06977# If -- @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageSampleWeightedQCOM-06978# If any -- command other than @OpImageSampleWeightedQCOM@, -- @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@, -- @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@, -- @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or -- @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as -- a result of this command, then the sampler /must/ not have been -- created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09215# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09216# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s format /must/ be a single-component format -- -- - #VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09217# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDrawIndirect-None-07288# Any shader invocation executed -- by this command /must/ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate> -- -- - #VUID-vkCmdDrawIndirect-None-09600# If a descriptor with type equal -- to any of -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- is accessed as a result of this command, all image subresources -- identified by that descriptor /must/ be in the image layout -- identified when the descriptor was written -- -- - #VUID-vkCmdDrawIndirect-commandBuffer-10746# The -- 'Vulkan.Core10.Handles.DeviceMemory' object allocated from a -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property that is bound to a resource accessed as a result of this -- command /must/ be the active bound -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object> -- in @commandBuffer@ -- -- - #VUID-vkCmdDrawIndirect-None-10678# If this command is recorded -- inside a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass> -- instance, the stages corresponding to the pipeline bind point used -- by this command /must/ only include -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT', -- and\/or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-10679# If this command is recorded -- where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, there /must/ be no access to any image while the image -- was be transitioned to the -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- layout -- -- - #VUID-vkCmdDrawIndirect-pDescription-09900# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the -- underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have -- been created with the -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage -- flag set -- -- - #VUID-vkCmdDrawIndirect-dimensionCount-09905# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the @Rank@ -- of the @OpTypeTensorARM@ of the tensor resource variable /must/ be -- equal to the @dimensionCount@ provided via -- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@ -- when creating the underlying 'Vulkan.Extensions.Handles.TensorARM' -- object -- -- - #VUID-vkCmdDrawIndirect-OpTypeTensorARM-09906# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the element -- type of the @OpTypeTensorARM@ of the tensor resource variable /must/ -- be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible> -- with the 'Vulkan.Core10.Enums.Format.Format' of the -- 'Vulkan.Extensions.Handles.TensorViewARM' used for the access -- -- - #VUID-vkCmdDrawIndirect-None-11297# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a @OpTypeStruct@ decorated with @Block@ or -- @BufferBlock@ using that mapping, the calculated offset for the -- resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndirect-None-11298# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using -- that mapping, the calculated offset for the resource heap /must/ be -- a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndirect-None-11299# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@ -- using that mapping, the calculated offset for the sampler heap -- /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndirect-None-11397# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeTensorARM@ using that mapping, the -- calculated offset for the resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndirect-None-11300# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 4 -- -- - #VUID-vkCmdDrawIndirect-None-11301# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDrawIndirect-None-11302# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDrawIndirect-None-11304# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 8 -- -- - #VUID-vkCmdDrawIndirect-None-11305# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDrawIndirect-None-11306# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address pointed to by the address in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDrawIndirect-None-11308# For each -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap> -- that is statically used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- either directly or via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- a valid descriptor heap /must/ be bound -- -- - #VUID-vkCmdDrawIndirect-None-11309# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, execution of this command /must/ not result in any descriptor -- read accessing data outside of the user range of the respective heap -- bound by @vkCmdBind*HeapEXT@ commands -- -- - #VUID-vkCmdDrawIndirect-None-11372# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer or uniform -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndirect-None-11373# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer or storage -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndirect-None-11374# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, uniform texel buffer, storage buffer, or storage texel -- buffer, that shader /must/ not access values outside of the range of -- the buffer as specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndirect-pBindInfo-11375# If any -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- uses an embedded sampler via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- the value of @pBindInfo->reservedRangeSize@ set for -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT' -- /must/ be greater than or equal to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded> -- -- - #VUID-vkCmdDrawIndirect-None-11376# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT' -- -- - #VUID-vkCmdDrawIndirect-None-11398# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the access -- /must/ not be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds> -- -- - #VUID-vkCmdDrawIndirect-None-11437# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the buffer from -- which the address in push data was queried /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndirect-None-11438# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndirect-None-11441# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment> -- -- - #VUID-vkCmdDrawIndirect-None-11439# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndirect-None-11442# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment> -- -- - #VUID-vkCmdDrawIndirect-None-11485# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses an acceleration structure using that mapping, -- the address that the acceleration structure is mapped to /must/ be -- an acceleration structure address retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR' -- or handle retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' object via -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV' -- -- - #VUID-vkCmdDrawIndirect-index-11450# If a shader uses a sampler -- descriptor to sample an image as a result of this command, and that -- sampler descriptor uses a custom border color with an index defined -- by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT', -- the value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@ -- /must/ have been registered before this command was recorded, and -- still be registered during the sampling operation, with an -- identically defined color -- -- - #VUID-vkCmdDrawIndirect-protectedNoFault-11455# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- the address that the resource is mapped to /must/ have been queried -- from a buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDrawIndirect-protectedNoFault-11456# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- the address of the indirect memory /must/ have been queried from a -- buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #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.GraphicsPipeline.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.GraphicsPipeline.GraphicsPipelineCreateInfo' -- structure specified when creating the -- 'Vulkan.Core10.Handles.Pipeline' bound to -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- - #VUID-vkCmdDrawIndirect-OpTypeImage-07468# If any shader executed by -- this pipeline accesses an @OpTypeImage@ variable with a @Dim@ -- operand of @SubpassData@, it /must/ be decorated with an -- @InputAttachmentIndex@ that corresponds to a valid input attachment -- in the current subpass -- -- - #VUID-vkCmdDrawIndirect-None-07469# Input attachment views accessed -- in a subpass /must/ be created with the same -- 'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass -- definition, and be created with a 'Vulkan.Core10.Handles.ImageView' -- that is compatible with the attachment referenced by the subpass\' -- @pInputAttachments@[@InputAttachmentIndex@] in the bound -- 'Vulkan.Core10.Handles.Framebuffer' as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility> -- -- - #VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09595# Input -- attachment views accessed in a dynamic render pass with a -- @InputAttachmentIndex@ referenced by -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo', -- or no @InputAttachmentIndex@ if -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- or -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are @NULL@, /must/ be created with a -- 'Vulkan.Core10.Handles.ImageView' that is compatible with the -- corresponding color, depth, or stencil attachment in -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- -- - #VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09596# Input -- attachment views accessed in a dynamic render pass via a shader -- object /must/ have an @InputAttachmentIndex@ if both -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- and -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are non-@NULL@ -- -- - #VUID-vkCmdDrawIndirect-InputAttachmentIndex-09597# If an input -- attachment view accessed in a dynamic render pass via a shader -- object has an @InputAttachmentIndex@, the @InputAttachmentIndex@ -- /must/ match an index in -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo' -- -- - #VUID-vkCmdDrawIndirect-None-06537# Memory backing image -- subresources used as attachments in the current render pass /must/ -- not be written in any way other than as an attachment by this -- command -- -- - #VUID-vkCmdDrawIndirect-None-10795# If a color attachment is written -- by any prior command in this subpass or by the load, store, or -- resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDrawIndirect-None-10796# If a depth attachment is written -- by any prior command in this subpass or by the load, store, or -- resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDrawIndirect-None-10797# If a stencil attachment is -- written by any prior command in this subpass or by the load, store, -- or resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, it /must/ not be accessed in any way other than -- as an attachment by this command -- -- - #VUID-vkCmdDrawIndirect-None-12338# If a color attachment is read in -- this command in any way other than as an attachment, or has been -- read by any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, the color attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDrawIndirect-None-12339# If a depth attachment is read in -- this command in any way other than as an attachment, or has been -- read by any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, the depth attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDrawIndirect-None-12340# If a stencil attachment is read -- in this command in any way other than as an attachment, or has been -- read by any prior command in this subpass as a non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, the stencil attachment /must/ not be written to -- by this command -- -- - #VUID-vkCmdDrawIndirect-None-09003# If an attachment is written by -- any prior command in this subpass or by the load, store, or resolve -- operations for this subpass, it /must/ not be accessed in any way -- other than as an attachment, storage image, or sampled image by this -- command -- -- - #VUID-vkCmdDrawIndirect-None-06886# If the current render pass -- instance uses a depth\/stencil attachment with a read-only layout -- for the depth aspect, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes> -- /must/ be disabled -- -- - #VUID-vkCmdDrawIndirect-None-06887# If the current render pass -- instance uses a depth\/stencil attachment with a read-only layout -- for the stencil aspect, both front and back @writeMask@ are not -- zero, and stencil test is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops> -- /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP' -- -- - #VUID-vkCmdDrawIndirect-None-07831# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic -- state enabled then 'cmdSetViewport' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07832# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic -- state enabled then 'cmdSetScissor' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-08617# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then 'cmdSetLineWidth' /must/ have been -- called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07834# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'cmdSetDepthBias' or -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07835# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a -- blend equations where any -- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA', -- then 'cmdSetBlendConstants' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07836# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetDepthBounds' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07837# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilCompareMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07838# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilWriteMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07839# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of and @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilReference' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #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', then the active depth -- attachment /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDrawIndirect-None-07634# If the @VK_EXT_sample_locations@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-06666# If the @VK_EXT_sample_locations@ -- extension is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07840# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07841# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07843# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07844# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07845# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07846# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07847# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07848# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-viewportCount-03417# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-scissorCount-03418# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing -- -- - #VUID-vkCmdDrawIndirect-viewportCount-03419# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with both the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic states enabled, and the state is not inherited, then the -- @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ match the @scissorCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- -- - #VUID-vkCmdDrawIndirect-viewportCount-04137# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-viewportCount-04138# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-08636# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-viewportCount-04139# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-shadingRateImage-09233# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-shadingRateImage-09234# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-08637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-None-07878# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07879# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' -- dynamic state enabled, and the most recent call to -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- in the current command buffer set any element of -- @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-04876# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-04877# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-logicOp-04878# If a shader object is bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- 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' -- dynamic state enabled, and any of the shader stages of the bound -- graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in, -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports> -- limit is not supported, and any shader object bound to a graphics -- stage writes to the @PrimitiveShadingRateKHR@ built-in, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDrawIndirect-blendEnable-04727# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then for each color -- attachment, 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 corresponding -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndirect-None-08644# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is -- enabled: -- -- - the @VK_AMD_mixed_attachment_samples@ extension -- -- - the @VK_NV_framebuffer_mixed_samples@ extension -- -- - the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature -- -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ /must/ be the same as the current color -- and\/or depth\/stencil attachments -- -- - #VUID-vkCmdDrawIndirect-None-08876# If a shader object is bound to -- any graphics stage, the current render pass instance /must/ have -- been begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdDrawIndirect-imageView-06172# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndirect-imageView-06173# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndirect-imageView-06174# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndirect-imageView-06175# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndirect-imageView-06176# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndirect-imageView-06177# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndirect-viewMask-06178# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@ -- -- - #VUID-vkCmdDrawIndirect-colorAttachmentCount-06179# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08910# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08912# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08911# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, and the current render pass instance was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-colorAttachmentCount-09362# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, there is no shader object bound to any graphics stage, -- and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-None-09363# If there is no shader object -- bound to any graphics stage, the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-None-09364# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set the blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-09365# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-09366# If there is a shader object -- bound to any graphics stage, and the current render pass includes a -- color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-rasterizationSamples-09367# If there is a -- shader object bound to any graphics stage, and the current render -- pass includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-09368# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndirect-None-09369# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndirect-pFragmentSize-09370# If there is a shader -- object bound to any graphics stage, and the current render pass -- includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndirect-pFragmentSize-09371# If there is a shader -- object bound to any graphics stage, and the current render pass -- includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndirect-None-07749# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-attachmentCount-07750# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@ -- parameter of most recent call to -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- in the current command buffer /must/ be greater than or equal to the -- number of active color attachments -- -- - #VUID-vkCmdDrawIndirect-None-07751# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a graphics -- pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included -- a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09236# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not -- include a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@ -- -- - #VUID-vkCmdDrawIndirect-None-07880# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07881# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08913# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08914# If -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08915# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08916# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08917# If -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08918# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-imageView-06183# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingLocalRead-11797# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead> -- feature is enabled, the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR' -- flag is specified, and an attachment is being used as a feedback -- loop as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >, -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@ -- for that attachment /must/ include -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' -- -- - #VUID-vkCmdDrawIndirect-imageView-06184# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-layers-10831# If the current render pass -- instance was created with -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' -- or -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- and the bound graphics pipeline was created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- then the current render pass instance /must/ have a @layers@ value -- less than or equal to -- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@ -- -- - #VUID-vkCmdDrawIndirect-colorAttachmentCount-06185# If the bound -- pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the corresponding element of the -- @pColorAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-pDepthAttachment-06186# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndirect-pStencilAttachment-06187# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07285# If -- the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the value of @rasterizationSamples@ for -- the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07286# If -- the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07287# If -- the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndirect-pNext-07935# If this command is called -- inside a render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and the @pNext@ chain of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndirect-renderPass-06198# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline /must/ have been created with a -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@ -- equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-vkCmdDrawIndirect-pColorAttachments-08963# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound with a fragment shader that statically -- writes to a color attachment, the color write mask is not zero, -- color writes are enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-pColorAttachments-11539# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound with a fragment shader that statically writes to a -- color attachment, the color write mask is not zero, color writes are -- enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-pDepthAttachment-08964# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-pDepthAttachment-11540# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-pStencilAttachment-08965# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-pStencilAttachment-11860# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-flags-10582# If the current render pass -- instance was begun with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- call in @commandBuffer@, its -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- parameter /must/ not have -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' -- set unless -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR' -- is also set -- -- - #VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard> -- /must/ not be enabled -- -- - #VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, the bound graphics pipeline /must/ not have been -- created with a non-zero value in -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@ -- -- - #VUID-vkCmdDrawIndirect-None-07620# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07621# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07622# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07623# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-alphaToCoverageEnable-08919# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and @alphaToCoverageEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDrawIndirect-alphaToCoverageEnable-08920# If a shader -- object is bound to any graphics stage, and the most recent call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- in the current command buffer set @alphaToCoverageEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDrawIndirect-None-07624# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07625# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07626# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07627# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07629# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07630# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams> -- feature is enabled, and a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07631# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07632# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ is -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-conservativePointAndLineRasterization-07499# -- If the @VK_EXT_conservative_rasterization@ extension is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization> -- is not supported, a shader object is bound to any graphics stage or -- a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line or point topology class, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ /must/ be -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-07633# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT' -- dynamic state, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07636# If the @VK_EXT_provoking_vertex@ -- extension is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-08666# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-08669# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07849# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled and a shader object is bound to any graphics -- stage, or a bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterizationRoadmap.cmdSetLineStipple' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-10608# If a shader object is bound to -- any graphics stage or a graphics pipeline is bound which was created -- with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, and the current @lineRasterizationMode@ -- is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM' -- or -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and -- @sampleShadingEnable@ states /must/ all be -- 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndirect-None-07639# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-09650# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07640# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07641# If the @VK_NV_viewport_swizzle@ -- extension is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07642# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07643# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07644# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07645# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationMode@ is any value other than -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07646# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationTableEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07647# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-pipelineFragmentShadingRate-09238# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07648# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07649# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-rasterizationSamples-07471# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the current subpass does not use any color -- and\/or depth\/stencil attachments, then the @rasterizationSamples@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ follow the rules for a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass> -- -- - #VUID-vkCmdDrawIndirect-samples-07472# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ -- parameter used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-samples-07473# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- states enabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the @rasterizationSamples@ parameter -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndirect-rasterizationSamples-07474# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and neither the -- @VK_AMD_mixed_attachment_samples@ nor the -- @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the current subpass color and\/or -- depth\/stencil attachments -- -- - #VUID-vkCmdDrawIndirect-None-09211# If the bound graphics pipeline -- state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, or a shader object is bound to any graphics stage, -- and the current render pass instance includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the @rasterizationSamples@ member of that -- structure -- -- - #VUID-vkCmdDrawIndirect-firstAttachment-07476# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDrawIndirect-firstAttachment-07478# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDrawIndirect-advancedBlendMaxColorAttachments-07480# If a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- number of active color attachments /must/ not exceed -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments> -- -- - #VUID-vkCmdDrawIndirect-None-10862# If a graphics pipeline is bound -- was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- , but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-10863# If a graphics -- pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT', -- but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndirect-None-10864# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- or -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, and the bound graphics pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- state enabled, the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have set the @rasterizationStream@ to zero -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07482# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ member of the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo' -- structure the bound graphics pipeline has been created with -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07483# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ parameter of the last call -- to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsEnable-07484# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- then the current active depth attachment /must/ have been created -- with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsEnable-07485# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsEnable-07486# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsEnable-07487# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- the fragment shader code /must/ not statically use the extended -- instruction @InterpolateAtSample@ -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsEnable-07936# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsEnable-07937# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndirect-sampleLocationsEnable-07938# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndirect-coverageModulationTableEnable-07488# If a -- shader object is bound to any graphics stage or the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- state enabled, and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- set @coverageModulationTableEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @coverageModulationTableCount@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ equal the current @rasterizationSamples@ divided by the -- number of color samples in the current active color attachment -- -- - #VUID-vkCmdDrawIndirect-rasterizationSamples-07489# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if -- current subpass has a depth\/stencil attachment and depth test, -- stencil test, or depth bounds test are enabled in the bound -- pipeline, then the current @rasterizationSamples@ /must/ be the same -- as the sample count of the depth\/stencil attachment -- -- - #VUID-vkCmdDrawIndirect-coverageToColorEnable-07490# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- state enabled and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09420# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, and a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, and the most recent call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- in the current command buffer set @rasterizerDiscardEnable@ to -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDrawIndirect-coverageReductionMode-07491# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic states enabled, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values> -- of @coverageReductionMode@, @rasterizationSamples@, the sample -- counts for the color and depth\/stencil attachments (if the subpass -- has them) /must/ be a valid combination returned by -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' -- -- - #VUID-vkCmdDrawIndirect-viewportCount-07492# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-viewportCount-07493# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic states enabled then the @viewportCount@ parameter in the -- last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-viewportCount-09421# If the -- @VK_NV_viewport_swizzle@ extension is enabled, and a shader object -- is bound to any graphics stage, then the @viewportCount@ parameter -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndirect-rasterizationSamples-07494# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is not enabled, or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageReductionMode@ is not -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV', -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ is greater than sample count of the color -- attachment, then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- /must/ be disabled -- -- - #VUID-vkCmdDrawIndirect-stippledLineEnable-07495# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndirect-stippledLineEnable-07496# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndirect-stippledLineEnable-07497# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndirect-stippledLineEnable-07498# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@ -- /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndirect-stage-07073# If the bound pipeline was -- created with the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of an element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT', -- then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries> -- /must/ not be active -- -- - #VUID-vkCmdDrawIndirect-None-08877# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-07850# If dynamic state was inherited -- from -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV', -- it /must/ be set in the current command buffer prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndirect-nextStage-10745# For each shader object -- bound to a graphics stage, except for shader object bound to the -- last graphics stage in the logical pipeline, it /must/ have been -- created with a @nextStage@ including the corresponding bit to the -- shader object bound to the following graphics stage in the logical -- pipeline -- -- - #VUID-vkCmdDrawIndirect-None-08684# If there is no bound graphics -- pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' -- /must/ have been called in the current command buffer with @pStages@ -- with an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-08685# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-08686# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-08687# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-08688# If there is no bound graphics -- pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' -- /must/ have been called in the current command buffer with @pStages@ -- with an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- -- - #VUID-vkCmdDrawIndirect-None-08689# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-08690# If there is no bound graphics -- pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-08693# If there is no bound graphics -- pipeline, and at least one of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- features is enabled, one of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT' -- bound, and the other /must/ have no -- 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDrawIndirect-None-08696# If there is no bound graphics -- pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT' is bound -- to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' -- bound to either the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- stage or the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stage -- -- - #VUID-vkCmdDrawIndirect-None-08698# If any graphics shader is bound -- which was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, then all shaders created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag in the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ also be bound -- -- - #VUID-vkCmdDrawIndirect-None-08699# If any graphics shader is bound -- which was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, any stages in between stages whose shaders which did not -- create a shader with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag as part of the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDrawIndirect-None-08878# All bound graphics shader -- objects /must/ have been created with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- push constant ranges -- -- - #VUID-vkCmdDrawIndirect-None-08879# All bound graphics shader -- objects /must/ have either been created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag set, or with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- arrays of descriptor set layouts -- -- - #VUID-vkCmdDrawIndirect-colorAttachmentCount-09372# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- and a fragment shader is bound, it /must/ not declare the -- @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes -- -- - #VUID-vkCmdDrawIndirect-pDynamicStates-08715# If the bound graphics -- pipeline state includes a fragment shader stage, was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@ -- parameter in the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndirect-pDynamicStates-08716# If the bound graphics -- pipeline state includes a fragment shader stage, was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@ -- parameter in the last call to 'cmdSetStencilWriteMask' /must/ be @0@ -- -- - #VUID-vkCmdDrawIndirect-None-09116# If a shader object is bound to -- any graphics stage or the bound graphics pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT', -- and the format of any color attachment is -- 'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the -- corresponding element of the @pColorWriteMasks@ parameter of -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ either include all of -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT', -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT', -- and -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT', -- or none of them -- -- - #VUID-vkCmdDrawIndirect-maxFragmentDualSrcAttachments-09239# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending> -- is enabled for any attachment where either the source or destination -- blend factors for that attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>, -- the maximum value of @Location@ for any output attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used> -- in the @Fragment@ @Execution@ @Model@ executed by this command -- /must/ be less than -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments> -- -- - #VUID-vkCmdDrawIndirect-None-09548# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, the value of -- each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@ -- in the bound pipeline /must/ match the value for the corresponding -- locations set currently in the current render pass instance -- -- - #VUID-vkCmdDrawIndirect-None-09549# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@ -- in the bound pipeline /must/ match the value for the corresponding -- index set currently in the current render pass instance -- -- - #VUID-vkCmdDrawIndirect-None-10927# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDrawIndirect-None-10928# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDrawIndirect-None-09642# If the current render pass was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag, the bound graphics pipeline /must/ have been created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-09643# If the bound graphics pipeline -- was created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT', -- the current render pass /must/ have begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag -- -- - #VUID-vkCmdDrawIndirect-None-10677# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndirect-None-10772# If a shader object is bound to -- any graphics stage, /multiview/ functionality /must/ not be enabled -- in the current render pass -- -- - #VUID-vkCmdDrawIndirect-multiviewPerViewViewports-12262# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportCount@ -- -- - #VUID-vkCmdDrawIndirect-multiviewPerViewViewports-12263# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @scissorCount@ -- -- - #VUID-vkCmdDrawIndirect-flags-11521# If current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- which includes -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT', -- and if -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- is enabled (explicitly or implicitly), then the minimum fraction for -- sample shading /must/ equal 0.0 -- -- - #VUID-vkCmdDrawIndirect-None-11522# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ have been -- created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDrawIndirect-None-11523# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and does not contain a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ not have -- been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDrawIndirect-customResolve-11524# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, the graphics pipeline -- bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndirect-customResolve-11525# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not been recorded in the render pass instance, the graphics -- pipeline bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndirect-None-11861# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, the bound graphics pipeline /must/ -- have been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDrawIndirect-None-11862# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-None-11863# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-11864# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-None-11865# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-None-11866# If current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-11867# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-None-11868# If the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-None-11869# If current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-11870# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndirect-colorAttachmentCount-11871# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@ and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, then for each element -- of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@ -- /must/ have been created with a sample count equal to the value of -- @rasterizationSamples@ for the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndirect-pDepthAttachment-11872# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndirect-pStencilAttachment-11873# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndirect-customResolve-11529# If a shader object is -- bound to the fragment stage, the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- a fragment density map attachment is active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been called, then the fragment shader object bound /must/ have -- been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndirect-customResolve-11530# If a shader object is -- bound to the fragment stage, the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, a fragment density map attachment is -- active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been called, then the fragment shader object bound -- /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #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# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and that pipeline was created without -- enabling -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- for @vertexInputs@, then 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-format-10389# For each vertex attribute -- accessed by this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled, the value of @attribAddress@, calculated as -- described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format> -- -- - #VUID-vkCmdDrawIndirect-format-10390# For each vertex attribute -- accessed by this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is not a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or @format@ has 64-bit components, the value -- of @attribAddress@, calculated as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format> -- -- - #VUID-vkCmdDrawIndirect-None-07842# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-dynamicPrimitiveTopologyUnrestricted-07500# -- If the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted> -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then the -- @primitiveTopology@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /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.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@ -- state -- -- - #VUID-vkCmdDrawIndirect-primitiveTopology-10286# If a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage is bound, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ /must/ be -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-primitiveTopology-10747# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command, then a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage /must/ be bound -- -- - #VUID-vkCmdDrawIndirect-primitiveTopology-10748# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST' -- prior to this drawing command, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5> -- feature is not enabled, both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/ -- have a @PointSize@ decorated variable that is statically written to -- -- - #VUID-vkCmdDrawIndirect-pStrides-04913# If the bound graphics -- pipeline was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE' -- dynamic state enabled, but without the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command, and the -- @pStrides@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ not be @NULL@ -- -- - #VUID-vkCmdDrawIndirect-None-04914# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or 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 and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command -- -- - #VUID-vkCmdDrawIndirect-Input-07939# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9> -- feature is not enabled, and there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled then all variables with the @Input@ storage -- class decorated with @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ contain a location in -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@ -- -- - #VUID-vkCmdDrawIndirect-Input-08734# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or the SPIR-V Type associated with a given -- @Input@ variable of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type -- associated with all @Input@ variables of the corresponding -- @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/ -- be the same as -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- -- - #VUID-vkCmdDrawIndirect-format-08936# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then the scalar width associated with all -- @Input@ variables of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit -- -- - #VUID-vkCmdDrawIndirect-format-08937# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and the scalar width associated with a -- @Location@ decorated @Input@ variable in the @Vertex@ @Execution@ -- @Model@ @OpEntryPoint@ is 64-bit, then the corresponding -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- /must/ have a 64-bit component -- -- - #VUID-vkCmdDrawIndirect-None-09203# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then all @Input@ variables at the -- corresponding @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ not use components that are not present in the -- format -- -- - #VUID-vkCmdDrawIndirect-None-04875# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-04879# If there is a shader object -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-None-09637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY', -- or -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndirect-None-10909# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndirect-stage-06481# The bound graphics pipeline -- /must/ not have been created with the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of any element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirect-None-08885# There /must/ be no shader object -- bound to either of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages -- -- - #VUID-vkCmdDrawIndirect-None-07619# If a shader object is bound to -- the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndirect-OpExecutionMode-12239# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the type of subdivision, they /must/ be the same -- -- - #VUID-vkCmdDrawIndirect-OpExecutionMode-12240# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the orientation of triangles, they /must/ be the same -- -- - #VUID-vkCmdDrawIndirect-OpExecutionMode-12241# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the segment spacing, they /must/ be the same -- -- - #VUID-vkCmdDrawIndirect-OpExecutionMode-12242# If a shader is bound -- to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the output patch size, they /must/ be the same -- -- - #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' -- usage flag 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 multiDrawIndirect> -- 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-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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdDrawIndirect-renderpass# This command /must/ only be -- called inside of a render pass instance -- -- - #VUID-vkCmdDrawIndirect-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdDrawIndirect-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdDrawIndirect is affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> io () cmdDrawIndirect CommandBuffer commandBuffer Buffer buffer "offset" ::: DeviceSize offset "firstViewport" ::: Word32 drawCount "firstViewport" ::: Word32 stride = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdDrawIndirectPtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndirectPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdDrawIndirect (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndirectPtr FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdDrawIndirect is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdDrawIndirect' :: Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDrawIndirect' = FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdDrawIndirect FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndirectPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdDrawIndirect" (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDrawIndirect' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Buffer buffer) ("offset" ::: DeviceSize offset) ("firstViewport" ::: Word32 drawCount) ("firstViewport" ::: Word32 stride)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-magFilter-09598# If a -- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or -- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and -- @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-09599# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR' -- and @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-unnormalizedCoordinates-09635# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @levelCount@ and @layerCount@ /must/ be 1 -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08609# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @viewType@ /must/ be -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08610# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions with -- @ImplicitLod@, @Dref@ or @Proj@ in their name -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08611# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values -- -- - #VUID-vkCmdDrawIndexedIndirect-None-06479# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>, -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' -- -- - #VUID-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-07888# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- descriptor is accessed using atomic operations as a result of this -- command, then the storage texel buffer’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-02692# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command, then the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-02693# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic> -- extension is not enabled and any 'Vulkan.Core10.Handles.ImageView' -- is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a -- result of this command, it /must/ not have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D', -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' -- -- - #VUID-vkCmdDrawIndexedIndirect-filterCubic-02694# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering, as specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode -- of either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- as a result of this command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering together with minmax filtering, as -- specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDrawIndexedIndirect-cubicRangeClamp-09212# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ not have a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-reductionMode-09213# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- as a result of this command /must/ sample with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-selectableCubicWeights-09214# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ have -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@ -- equal to -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' -- -- - #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-07027# For any -- 'Vulkan.Core10.Handles.ImageView' being written as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07028# For any -- 'Vulkan.Core10.Handles.ImageView' being read as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07029# For any -- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@, the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07030# Any -- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@ then the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08600# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a set /n/, 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' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08601# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10068# For each array of -- resources that is used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- the indices used to access members of the array /must/ be less than -- the descriptor count for the identified binding in the descriptor -- sets used by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-maintenance4-08602# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' and -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to -- create the current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08114# Descriptors in each bound -- descriptor set, specified via 'cmdBindDescriptorSets', /must/ be -- valid if they are accessed as described by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity> -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point used by this command and the bound -- 'Vulkan.Core10.Handles.Pipeline' was not created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-imageLayout-00344# If an image -- descriptor is accessed by a shader, the -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the -- subresource accessible from the 'Vulkan.Core10.Handles.ImageView' as -- defined by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08115# If the descriptors used -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point were specified via 'cmdBindDescriptorSets', the bound -- 'Vulkan.Core10.Handles.Pipeline' /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08116# Descriptors in bound -- descriptor buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline' -- was created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08604# Descriptors in bound -- descriptor buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08117# If the descriptors used -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point were specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08119# If a descriptor is -- dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08605# If a descriptor is -- dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT' -- created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was -- created with -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08606# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject> -- feature is not enabled, a valid pipeline /must/ be bound to the -- pipeline bind point used by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08608# If a pipeline is bound to -- the pipeline bind point used by this command, there /must/ not have -- been any calls to dynamic state setting commands for any state -- specified statically in the 'Vulkan.Core10.Handles.Pipeline' object -- bound to the pipeline bind point used by this command, since that -- pipeline was bound -- -- - #VUID-vkCmdDrawIndexedIndirect-uniformBuffers-06935# If any stage of -- the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline -- bind point used by this command accesses a uniform buffer, and that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08612# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDrawIndexedIndirect-storageBuffers-06936# If any stage of -- the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline -- bind point used by this command accesses a storage buffer, and that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08613# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a storage -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707# If -- @commandBuffer@ is an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, any resource accessed by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders> -- /must/ not be a protected resource -- -- - #VUID-vkCmdDrawIndexedIndirect-viewType-07752# If a -- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this -- command, then the image view’s @viewType@ /must/ match the @Dim@ -- operand of the @OpTypeImage@ as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???> -- -- - #VUID-vkCmdDrawIndexedIndirect-format-07753# If a -- 'Vulkan.Core10.Handles.ImageView' or -- 'Vulkan.Core10.Handles.BufferView' is accessed as a result of this -- command, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type> -- of the view’s @format@ and the @Sampled@ @Type@ operand of the -- @OpTypeImage@ /must/ match -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageWrite-08795# If a -- 'Vulkan.Core10.Handles.ImageView' created with a format other than -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-08796# If a -- 'Vulkan.Core10.Handles.ImageView' created with the format -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using -- @OpImageWrite@ as a result of this command, then the @Type@ of the -- @Texel@ operand of that instruction /must/ have four components -- -- - #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-OpImageSampleWeightedQCOM-06971# If -- @OpImageSampleWeightedQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageSampleWeightedQCOM-06972# If -- @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView' -- as a sample weight image as a result of this command, then the image -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageBoxFilterQCOM-06973# If -- @OpImageBoxFilterQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSSDQCOM-06974# If -- @OpImageBlockMatchSSDQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06975# If -- @OpImageBlockMatchSADQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06976# If -- @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageSampleWeightedQCOM-06977# If -- @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageSampleWeightedQCOM-06978# If -- any command other than @OpImageSampleWeightedQCOM@, -- @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@, -- @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@, -- @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or -- @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as -- a result of this command, then the sampler /must/ not have been -- created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09215# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09216# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s format /must/ be a single-component format -- -- - #VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09217# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07288# Any shader invocation -- executed by this command /must/ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09600# If a descriptor with type -- equal to any of -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- is accessed as a result of this command, all image subresources -- identified by that descriptor /must/ be in the image layout -- identified when the descriptor was written -- -- - #VUID-vkCmdDrawIndexedIndirect-commandBuffer-10746# The -- 'Vulkan.Core10.Handles.DeviceMemory' object allocated from a -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property that is bound to a resource accessed as a result of this -- command /must/ be the active bound -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object> -- in @commandBuffer@ -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10678# If this command is -- recorded inside a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass> -- instance, the stages corresponding to the pipeline bind point used -- by this command /must/ only include -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT', -- and\/or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10679# If this command is -- recorded where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, there /must/ be no access to any image while the image -- was be transitioned to the -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- layout -- -- - #VUID-vkCmdDrawIndexedIndirect-pDescription-09900# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the -- underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have -- been created with the -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage -- flag set -- -- - #VUID-vkCmdDrawIndexedIndirect-dimensionCount-09905# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the @Rank@ -- of the @OpTypeTensorARM@ of the tensor resource variable /must/ be -- equal to the @dimensionCount@ provided via -- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@ -- when creating the underlying 'Vulkan.Extensions.Handles.TensorARM' -- object -- -- - #VUID-vkCmdDrawIndexedIndirect-OpTypeTensorARM-09906# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the element -- type of the @OpTypeTensorARM@ of the tensor resource variable /must/ -- be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible> -- with the 'Vulkan.Core10.Enums.Format.Format' of the -- 'Vulkan.Extensions.Handles.TensorViewARM' used for the access -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11297# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a @OpTypeStruct@ decorated with @Block@ or -- @BufferBlock@ using that mapping, the calculated offset for the -- resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11298# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using -- that mapping, the calculated offset for the resource heap /must/ be -- a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11299# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@ -- using that mapping, the calculated offset for the sampler heap -- /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11397# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeTensorARM@ using that mapping, the -- calculated offset for the resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11300# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 4 -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11301# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11302# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11304# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 8 -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11305# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11306# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address pointed to by the address in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11308# For each -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap> -- that is statically used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- either directly or via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- a valid descriptor heap /must/ be bound -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11309# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, execution of this command /must/ not result in any descriptor -- read accessing data outside of the user range of the respective heap -- bound by @vkCmdBind*HeapEXT@ commands -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11372# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer or uniform -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11373# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer or storage -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11374# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, uniform texel buffer, storage buffer, or storage texel -- buffer, that shader /must/ not access values outside of the range of -- the buffer as specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDrawIndexedIndirect-pBindInfo-11375# If any -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- uses an embedded sampler via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- the value of @pBindInfo->reservedRangeSize@ set for -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT' -- /must/ be greater than or equal to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11376# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11398# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the access -- /must/ not be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11437# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the buffer from -- which the address in push data was queried /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11438# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11441# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11439# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11442# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11485# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses an acceleration structure using that mapping, -- the address that the acceleration structure is mapped to /must/ be -- an acceleration structure address retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR' -- or handle retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' object via -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV' -- -- - #VUID-vkCmdDrawIndexedIndirect-index-11450# If a shader uses a -- sampler descriptor to sample an image as a result of this command, -- and that sampler descriptor uses a custom border color with an index -- defined by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT', -- the value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@ -- /must/ have been registered before this command was recorded, and -- still be registered during the sampling operation, with an -- identically defined color -- -- - #VUID-vkCmdDrawIndexedIndirect-protectedNoFault-11455# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- the address that the resource is mapped to /must/ have been queried -- from a buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDrawIndexedIndirect-protectedNoFault-11456# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- the address of the indirect memory /must/ have been queried from a -- buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #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.GraphicsPipeline.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.GraphicsPipeline.GraphicsPipelineCreateInfo' -- structure specified when creating the -- 'Vulkan.Core10.Handles.Pipeline' bound to -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- - #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07468# If any shader -- executed by this pipeline accesses an @OpTypeImage@ variable with a -- @Dim@ operand of @SubpassData@, it /must/ be decorated with an -- @InputAttachmentIndex@ that corresponds to a valid input attachment -- in the current subpass -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07469# Input attachment views -- accessed in a subpass /must/ be created with the same -- 'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass -- definition, and be created with a 'Vulkan.Core10.Handles.ImageView' -- that is compatible with the attachment referenced by the subpass\' -- @pInputAttachments@[@InputAttachmentIndex@] in the bound -- 'Vulkan.Core10.Handles.Framebuffer' as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility> -- -- - #VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09595# -- Input attachment views accessed in a dynamic render pass with a -- @InputAttachmentIndex@ referenced by -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo', -- or no @InputAttachmentIndex@ if -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- or -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are @NULL@, /must/ be created with a -- 'Vulkan.Core10.Handles.ImageView' that is compatible with the -- corresponding color, depth, or stencil attachment in -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- -- - #VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09596# -- Input attachment views accessed in a dynamic render pass via a -- shader object /must/ have an @InputAttachmentIndex@ if both -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- and -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- are non-@NULL@ -- -- - #VUID-vkCmdDrawIndexedIndirect-InputAttachmentIndex-09597# If an -- input attachment view accessed in a dynamic render pass via a shader -- object has an @InputAttachmentIndex@, the @InputAttachmentIndex@ -- /must/ match an index in -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-06537# Memory backing image -- subresources used as attachments in the current render pass /must/ -- not be written in any way other than as an attachment by this -- command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10795# If a color attachment is -- written by any prior command in this subpass or by the load, store, -- or resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10796# If a depth attachment is -- written by any prior command in this subpass or by the load, store, -- or resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, it /must/ not be accessed in any way other than as -- an attachment by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10797# If a stencil attachment -- is written by any prior command in this subpass or by the load, -- store, or resolve operations for this subpass, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, it /must/ not be accessed in any way other than -- as an attachment by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-12338# If a color attachment is -- read in this command in any way other than as an attachment, or has -- been read by any prior command in this subpass as a non-attachment, -- and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on -- that attachment, the color attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-12339# If a depth attachment is -- read in this command in any way other than as an attachment, or has -- been read by any prior command in this subpass as a non-attachment, -- and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on -- that attachment, the depth attachment /must/ not be written to by -- this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-12340# If a stencil attachment -- is read in this command in any way other than as an attachment, or -- has been read by any prior command in this subpass as a -- non-attachment, and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop> -- is not enabled for -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- on that attachment, the stencil attachment /must/ not be written to -- by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09003# If an attachment is -- written by any prior command in this subpass or by the load, store, -- or resolve operations for this subpass, it /must/ not be accessed in -- any way other than as an attachment, storage image, or sampled image -- by this command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-06886# If the current render -- pass instance uses a depth\/stencil attachment with a read-only -- layout for the depth aspect, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes> -- /must/ be disabled -- -- - #VUID-vkCmdDrawIndexedIndirect-None-06887# If the current render -- pass instance uses a depth\/stencil attachment with a read-only -- layout for the stencil aspect, both front and back @writeMask@ are -- not zero, and stencil test is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops> -- /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07831# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic -- state enabled then 'cmdSetViewport' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07832# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic -- state enabled then 'cmdSetScissor' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08617# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic -- state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then 'cmdSetLineWidth' /must/ have been -- called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07834# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic -- state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'cmdSetDepthBias' or -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07835# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a -- blend equations where any -- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR', -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA', -- then 'cmdSetBlendConstants' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07836# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetDepthBounds' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07837# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilCompareMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07838# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilWriteMask' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07839# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of and @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then 'cmdSetStencilReference' /must/ have been called and not -- subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #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', then the active depth -- attachment /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07634# If the -- @VK_EXT_sample_locations@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-06666# If the -- @VK_EXT_sample_locations@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07840# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07841# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07843# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07844# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07845# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07846# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07847# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07848# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic -- state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-03417# If a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-scissorCount-03418# If a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- dynamic state enabled, and the state is not inherited, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-03419# If a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with both the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic states enabled, and the state is not inherited, then the -- @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ match the @scissorCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-04137# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-04138# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08636# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportWScalingEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-04139# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09233# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09234# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @shadingRateImageEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the @viewportCount@ -- parameter in the last call to -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141# If -- the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142# If -- the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled and a -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV' -- structure chained from -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo', -- then the bound graphics pipeline /must/ have been created with -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07878# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07879# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' -- dynamic state enabled, and the most recent call to -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV' -- in the current command buffer set any element of -- @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-04876# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-04877# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-logicOp-04878# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- 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' -- dynamic state enabled, and any of the shader stages of the bound -- graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in, -- then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports> -- limit is not supported, and any shader object bound to a graphics -- stage writes to the @PrimitiveShadingRateKHR@ built-in, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ have been called in the current command buffer prior to this -- drawing command, and the @viewportCount@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- /must/ be @1@ -- -- - #VUID-vkCmdDrawIndexedIndirect-blendEnable-04727# If a shader object -- is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then for each color -- attachment, 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 corresponding -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08644# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is -- enabled: -- -- - the @VK_AMD_mixed_attachment_samples@ extension -- -- - the @VK_NV_framebuffer_mixed_samples@ extension -- -- - the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature -- -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ /must/ be the same as the current color -- and\/or depth\/stencil attachments -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08876# If a shader object is -- bound to any graphics stage, the current render pass instance /must/ -- have been begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06172# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06173# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06174# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06175# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06176# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pDepthAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pDepthAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the depth attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06177# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @imageView@ member of @pStencilAttachment@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of -- @pStencilAttachment@ is -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL', -- this command /must/ not write any values to the stencil attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-viewMask-06178# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@ -- -- - #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound graphics pipeline /must/ have been created with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08910# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08912# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08911# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, and the current render pass instance was begun -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a 'Vulkan.Core10.Enums.Format.Format' equal to the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09362# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, there is no shader object bound to any graphics stage, -- and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09363# If there is no shader -- object bound to any graphics stage, the current render pass instance -- was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, and a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with an image created with a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value equal to the -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09364# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set the blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09365# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09366# If there is a shader -- object bound to any graphics stage, and the current render pass -- includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have set blend enable to -- 'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-09367# If there -- is a shader object bound to any graphics stage, and the current -- render pass includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have set @rasterizationSamples@ to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior -- to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09368# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09369# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, and the bound -- graphics pipeline was created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value and with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09370# If there is a -- shader object bound to any graphics stage, and the current render -- pass includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09371# If there is a -- shader object bound to any graphics stage, and the current render -- pass includes a color attachment that uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- resolve mode, then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07749# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-attachmentCount-07750# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@ -- parameter of most recent call to -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT' -- in the current command buffer /must/ be greater than or equal to the -- number of active color attachments -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07751# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a graphics -- pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included -- a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@ -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09236# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' -- dynamic state enabled and the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not -- include a -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT' -- structure, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for each -- discard rectangle in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@ -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07880# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07881# If the -- @VK_EXT_discard_rectangles@ extension is enabled, a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @discardRectangleEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08913# -- If the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08914# -- If current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08915# -- If the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08916# -- If the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08917# -- If current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08918# -- If the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06183# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingLocalRead-11797# If -- the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead> -- feature is enabled, the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR' -- flag is specified, and an attachment is being used as a feedback -- loop as specified by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >, -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@ -- for that attachment /must/ include -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' -- -- - #VUID-vkCmdDrawIndexedIndirect-imageView-06184# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics -- pipeline /must/ have been created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-layers-10831# If the current render -- pass instance was created with -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' -- or -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- and the bound graphics pipeline was created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- then the current render pass instance /must/ have a @layers@ value -- less than or equal to -- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@ -- -- - #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185# If the -- bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the corresponding element of the -- @pColorAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline was created with a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- used to create the bound graphics pipeline /must/ be equal to the -- sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07285# -- If the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @imageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with a sample count equal to the value of @rasterizationSamples@ for -- the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07286# -- If the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07287# -- If the bound pipeline was created without a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-pNext-07935# If this command is -- called inside a render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and the @pNext@ chain of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' -- includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndexedIndirect-renderPass-06198# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the bound pipeline /must/ have been created with a -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@ -- equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-vkCmdDrawIndexedIndirect-pColorAttachments-08963# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound with a fragment shader that statically -- writes to a color attachment, the color write mask is not zero, -- color writes are enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-pColorAttachments-11539# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound with a fragment shader that statically writes to a -- color attachment, the color write mask is not zero, color writes are -- enabled, and the corresponding element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-08964# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-11540# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, depth test is enabled, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-08965# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, there is a -- graphics pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-11860# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, there is a graphics -- pipeline bound, stencil test is enabled and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the pipeline /must/ not be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-flags-10582# If the current render -- pass instance was begun with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- call in @commandBuffer@, its -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- parameter /must/ not have -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' -- set unless -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR' -- is also set -- -- - #VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard> -- /must/ not be enabled -- -- - #VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, the bound graphics pipeline /must/ not have been -- created with a non-zero value in -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@ -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07620# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07621# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07622# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07623# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-alphaToCoverageEnable-08919# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and @alphaToCoverageEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDrawIndexedIndirect-alphaToCoverageEnable-08920# If a -- shader object is bound to any graphics stage, and the most recent -- call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- in the current command buffer set @alphaToCoverageEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface> -- /must/ contain a variable for the alpha @Component@ word in -- @Location@ 0 at @Index@ 0 -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07624# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07625# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07626# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp> -- feature is enabled, a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07627# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07629# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and there are color -- attachments bound, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07630# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams> -- feature is enabled, and a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07631# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07632# If the -- @VK_EXT_conservative_rasterization@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ is -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-conservativePointAndLineRasterization-07499# -- If the @VK_EXT_conservative_rasterization@ extension is enabled, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization> -- is not supported, a shader object is bound to any graphics stage or -- a graphics pipeline is bound, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line or point topology class, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @conservativeRasterizationMode@ /must/ be -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07633# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT' -- dynamic state, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07636# If the -- @VK_EXT_provoking_vertex@ extension is enabled, a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08666# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08669# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07849# If any of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- features are enabled and a shader object is bound to any graphics -- stage, or a bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterizationRoadmap.cmdSetLineStipple' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10608# If a shader object is -- bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology> -- is in line topology class, and the current @lineRasterizationMode@ -- is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM' -- or -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and -- @sampleShadingEnable@ states /must/ all be -- 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07639# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09650# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl> -- feature is enabled, and a shader object is bound to any graphics -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07640# If the -- @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07641# If the -- @VK_NV_viewport_swizzle@ extension is enabled, and a shader object -- is bound to any graphics stage or a graphics pipeline is bound which -- was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07642# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07643# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07644# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07645# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationMode@ is any value other than -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07646# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader -- object is bound to any graphics stage or a graphics pipeline is -- bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV' -- dynamic state enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageModulationTableEnable@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07647# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-pipelineFragmentShadingRate-09238# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07648# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07649# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07471# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the current subpass does not use any color -- and\/or depth\/stencil attachments, then the @rasterizationSamples@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ follow the rules for a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass> -- -- - #VUID-vkCmdDrawIndexedIndirect-samples-07472# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ -- parameter used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-samples-07473# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' -- state and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- states enabled, then the @samples@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT' -- /must/ be greater or equal to the @rasterizationSamples@ parameter -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07474# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled, and neither the -- @VK_AMD_mixed_attachment_samples@ nor the -- @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the current subpass color and\/or -- depth\/stencil attachments -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09211# If the bound graphics -- pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, or a shader object is bound to any graphics stage, -- and the current render pass instance includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- /must/ be the same as the @rasterizationSamples@ member of that -- structure -- -- - #VUID-vkCmdDrawIndexedIndirect-firstAttachment-07476# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDrawIndexedIndirect-firstAttachment-07478# If a shader -- object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' -- dynamic states enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- in the current command buffer prior to this drawing command /must/ -- have set a value for all active color attachments -- -- - #VUID-vkCmdDrawIndexedIndirect-advancedBlendMaxColorAttachments-07480# -- If a shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' -- dynamic states enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', and an active color -- attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- number of active color attachments /must/ not exceed -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10862# If a graphics pipeline is -- bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- , but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-10863# If a -- graphics pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT', -- but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10864# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT' -- or -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command for all -- active color attachments with the @blendEnable@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled and the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- query is active, and the bound graphics pipeline was created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' -- state enabled, the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT' -- /must/ have set the @rasterizationStream@ to zero -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07482# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state disabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ member of the -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo' -- structure the bound graphics pipeline has been created with -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07483# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@ -- in the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ equal the @rasterizationSamples@ parameter of the last call -- to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07484# If a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT' -- then the current active depth attachment /must/ have been created -- with the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' -- bit set -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07485# If a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07486# If a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state enabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in -- the last call to -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT' -- /must/ evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling @rasterizationSamples@ -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07487# If a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' -- state enabled, and if @sampleLocationsEnable@ was -- 'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT', -- the fragment shader code /must/ not statically use the extended -- instruction @InterpolateAtSample@ -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07936# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07937# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ -- evenly divide -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@ -- as returned by -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT' -- with a @samples@ parameter equaling the value of -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07938# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' -- state disabled and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', -- then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal -- @rasterizationSamples@ in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-coverageModulationTableEnable-07488# -- If a shader object is bound to any graphics stage or the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' -- state enabled, and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV' -- set @coverageModulationTableEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the -- @coverageModulationTableCount@ parameter in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV' -- /must/ equal the current @rasterizationSamples@ divided by the -- number of color samples in the current active color attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07489# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if -- current subpass has a depth\/stencil attachment and depth test, -- stencil test, or depth bounds test are enabled in the bound -- pipeline, then the current @rasterizationSamples@ /must/ be the same -- as the sample count of the depth\/stencil attachment -- -- - #VUID-vkCmdDrawIndexedIndirect-coverageToColorEnable-07490# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' -- state enabled and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09420# If the -- @VK_NV_fragment_coverage_to_color@ extension is enabled, and a -- shader object is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage, and the most recent call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable' -- in the current command buffer set @rasterizerDiscardEnable@ to -- 'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV' -- set the @coverageToColorEnable@ to -- 'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an -- active color attachment at the location selected by the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV' -- @coverageToColorLocation@, with a -- 'Vulkan.Core10.Enums.Format.Format' of -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT', -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- - #VUID-vkCmdDrawIndexedIndirect-coverageReductionMode-07491# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is enabled, a shader object is bound to any graphics stage -- or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' -- dynamic states enabled, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values> -- of @coverageReductionMode@, @rasterizationSamples@, the sample -- counts for the color and depth\/stencil attachments (if the subpass -- has them) /must/ be a valid combination returned by -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-07492# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- dynamic state enabled, but not the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic state enabled, then the bound graphics pipeline /must/ have -- been created with -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@ -- greater or equal to the @viewportCount@ parameter in the last call -- to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-07493# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' -- and -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' -- dynamic states enabled then the @viewportCount@ parameter in the -- last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-viewportCount-09421# If the -- @VK_NV_viewport_swizzle@ extension is enabled, and a shader object -- is bound to any graphics stage, then the @viewportCount@ parameter -- in the last call to -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV' -- /must/ be greater than or equal to the @viewportCount@ parameter in -- the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount' -- -- - #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07494# If the -- @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode> -- feature is not enabled, or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @coverageReductionMode@ is not -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV', -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizationSamples@ is greater than sample count of the color -- attachment, then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- /must/ be disabled -- -- - #VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07495# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07496# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07497# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07498# If the -- bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' -- or -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' -- dynamic states enabled, and if the current @stippledLineEnable@ -- state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current -- @lineRasterizationMode@ state is -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT', -- then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines> -- feature /must/ be enabled and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@ -- /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexedIndirect-stage-07073# If the bound pipeline -- was created with the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of an element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT', -- then -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries> -- /must/ not be active -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08877# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- stage or a graphics pipeline is bound which was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @rasterizerDiscardEnable@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE', then -- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07850# If dynamic state was -- inherited from -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV', -- it /must/ be set in the current command buffer prior to this drawing -- command -- -- - #VUID-vkCmdDrawIndexedIndirect-nextStage-10745# For each shader -- object bound to a graphics stage, except for shader object bound to -- the last graphics stage in the logical pipeline, it /must/ have been -- created with a @nextStage@ including the corresponding bit to the -- shader object bound to the following graphics stage in the logical -- pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08684# If there is no bound -- graphics pipeline, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08685# If there is no bound -- graphics pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08686# If there is no bound -- graphics pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08687# If there is no bound -- graphics pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08688# If there is no bound -- graphics pipeline, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08689# If there is no bound -- graphics pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08690# If there is no bound -- graphics pipeline, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- feature is enabled, -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/ -- have been called in the current command buffer with @pStages@ with -- an element of -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08693# If there is no bound -- graphics pipeline, and at least one of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader> -- features is enabled, one of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT' -- bound, and the other /must/ have no -- 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08696# If there is no bound -- graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT' -- is bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' -- bound to either the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- stage or the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stage -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08698# If any graphics shader is -- bound which was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, then all shaders created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag in the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ also be bound -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08699# If any graphics shader is -- bound which was created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag, any stages in between stages whose shaders which did not -- create a shader with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT' -- flag as part of the same -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call -- /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08878# All bound graphics shader -- objects /must/ have been created with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- push constant ranges -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08879# All bound graphics shader -- objects /must/ have either been created with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag set, or with identical or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined> -- arrays of descriptor set layouts -- -- - #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09372# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- equal to @1@, a color attachment with a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- and a fragment shader is bound, it /must/ not declare the -- @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes -- -- - #VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08715# If the bound -- graphics pipeline state includes a fragment shader stage, was -- created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@ -- parameter in the last call to -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08716# If the bound -- graphics pipeline state includes a fragment shader stage, was -- created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' -- set in -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@, -- and the fragment shader declares the @EarlyFragmentTests@ execution -- mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@ -- parameter in the last call to 'cmdSetStencilWriteMask' /must/ be @0@ -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09116# If a shader object is -- bound to any graphics stage or the bound graphics pipeline was -- created with -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT', -- and the format of any color attachment is -- 'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the -- corresponding element of the @pColorWriteMasks@ parameter of -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT' -- /must/ either include all of -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT', -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT', -- and -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT', -- or none of them -- -- - #VUID-vkCmdDrawIndexedIndirect-maxFragmentDualSrcAttachments-09239# -- If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending> -- is enabled for any attachment where either the source or destination -- blend factors for that attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>, -- the maximum value of @Location@ for any output attachment -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used> -- in the @Fragment@ @Execution@ @Model@ executed by this command -- /must/ be less than -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09548# If the current render -- pass was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there is no shader object bound to any graphics stage, the value of -- each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@ -- in the bound pipeline /must/ match the value for the corresponding -- locations set currently in the current render pass instance -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09549# If the current render -- pass was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of each element of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@ -- in the bound pipeline /must/ match the value for the corresponding -- index set currently in the current render pass instance -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10927# If the current render -- pass was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10928# If the current render -- pass was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and there is no shader object bound to any graphics stage, the value -- of -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@ -- in the bound pipeline /must/ match the value set currently in the -- current render pass instance -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09642# If the current render -- pass was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag, the bound graphics pipeline /must/ have been created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09643# If the bound graphics -- pipeline was created with -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT', -- the current render pass /must/ have begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' -- flag -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10677# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw> -- feature /must/ be enabled -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10772# If a shader object is -- bound to any graphics stage, /multiview/ functionality /must/ not be -- enabled in the current render pass -- -- - #VUID-vkCmdDrawIndexedIndirect-multiviewPerViewViewports-12262# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @viewportCount@ -- -- - #VUID-vkCmdDrawIndexedIndirect-multiviewPerViewViewports-12263# If -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports> -- feature is enabled, then the index of the most significant bit in -- current render pass instance @viewMask@ /must/ be less than the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @scissorCount@ -- -- - #VUID-vkCmdDrawIndexedIndirect-flags-11521# If current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- which includes -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT', -- and if -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading> -- is enabled (explicitly or implicitly), then the minimum fraction for -- sample shading /must/ equal 0.0 -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11522# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ have been -- created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11523# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and does not contain a custom resolve, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, the graphics pipeline bound /must/ not have -- been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-customResolve-11524# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, the graphics pipeline -- bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexedIndirect-customResolve-11525# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not been recorded in the render pass instance, the graphics -- pipeline bound /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11861# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, the bound graphics pipeline /must/ -- have been created with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@ -- equal to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11862# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11863# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and the current render pass instance was -- begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the -- corresponding element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound pipeline equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-11864# -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- greater than @0@, then each element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@ -- used to create the bound graphics pipeline, or the corresponding -- element of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@, -- if it exists, /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11865# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11866# If current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-11867# -- If the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11868# If the current render -- pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-11869# If current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is not enabled, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline /must/ be equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-11870# -- If the current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- it contains a custom resolve, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments> -- feature is enabled, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@ -- used to create the bound graphics pipeline was not equal to the -- 'Vulkan.Core10.Enums.Format.Format' used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@, -- the value of the format /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-11871# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with a -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter greater than @0@ and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, then for each element -- of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- array with a @resolveImageView@ not equal to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@ -- /must/ have been created with a sample count equal to the value of -- @rasterizationSamples@ for the bound graphics pipeline -- -- - #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-11872# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, and -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-11873# If the -- current render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- @rasterizationSamples@ for the bound graphics pipeline /must/ be -- equal to the sample count used to create -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- -- - #VUID-vkCmdDrawIndexedIndirect-customResolve-11529# If a shader -- object is bound to the fragment stage, the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- a fragment density map attachment is active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been called, then the fragment shader object bound /must/ have -- been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdDrawIndexedIndirect-customResolve-11530# If a shader -- object is bound to the fragment stage, the current render pass -- instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, a fragment density map attachment is -- active, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been called, then the fragment shader object bound -- /must/ have been created with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #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# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and that pipeline was created without -- enabling -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- for @vertexInputs@, then 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-format-10389# For each vertex -- attribute accessed by this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled, the value of @attribAddress@, calculated as -- described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format> -- -- - #VUID-vkCmdDrawIndexedIndirect-format-10390# For each vertex -- attribute accessed by this command, if its -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@ -- or -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- is not a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>, -- and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or @format@ has 64-bit components, the value -- of @attribAddress@, calculated as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>, -- /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format> -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07842# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-dynamicPrimitiveTopologyUnrestricted-07500# -- If the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' -- dynamic state enabled and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted> -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then the -- @primitiveTopology@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- /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.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@ -- state -- -- - #VUID-vkCmdDrawIndexedIndirect-primitiveTopology-10286# If a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage is bound, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ /must/ be -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-primitiveTopology-10747# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST' -- prior to this drawing command, then a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage /must/ be bound -- -- - #VUID-vkCmdDrawIndexedIndirect-primitiveTopology-10748# If -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology' -- set @primitiveTopology@ to -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST' -- prior to this drawing command, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5> -- feature is not enabled, both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' -- stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/ -- have a @PointSize@ decorated variable that is statically written to -- -- - #VUID-vkCmdDrawIndexedIndirect-pStrides-04913# If the bound graphics -- pipeline was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE' -- dynamic state enabled, but without the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command, and the -- @pStrides@ parameter of -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2' -- /must/ not be @NULL@ -- -- - #VUID-vkCmdDrawIndexedIndirect-None-04914# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or 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 and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this draw command -- -- - #VUID-vkCmdDrawIndexedIndirect-Input-07939# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9> -- feature is not enabled, and there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled then all variables with the @Input@ storage -- class decorated with @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ contain a location in -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@ -- -- - #VUID-vkCmdDrawIndexedIndirect-Input-08734# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and either the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes> -- feature is not enabled or the SPIR-V Type associated with a given -- @Input@ variable of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type -- associated with all @Input@ variables of the corresponding -- @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/ -- be the same as -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- -- - #VUID-vkCmdDrawIndexedIndirect-format-08936# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then the scalar width associated with all -- @Input@ variables of the corresponding @Location@ in the @Vertex@ -- @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit -- -- - #VUID-vkCmdDrawIndexedIndirect-format-08937# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and the scalar width associated with a -- @Location@ decorated @Input@ variable in the @Vertex@ @Execution@ -- @Model@ @OpEntryPoint@ is 64-bit, then the corresponding -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- /must/ have a 64-bit component -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09203# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' -- dynamic state enabled and -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@ -- has a 64-bit component, then all @Input@ variables at the -- corresponding @Location@ in the @Vertex@ @Execution@ @Model@ -- @OpEntryPoint@ /must/ not use components that are not present in the -- format -- -- - #VUID-vkCmdDrawIndexedIndirect-None-04875# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' -- dynamic state enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value> -- of @primitiveTopology@ is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-04879# If there is a shader -- object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-None-09637# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST', -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY', -- or -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled, then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-10909# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly> -- is -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST', -- there is a shader object bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- stage or the bound graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' -- dynamic state enabled then -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable' -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdDrawIndexedIndirect-stage-06481# The bound graphics -- pipeline /must/ not have been created with the -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@ -- member of any element of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@ -- set to -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- -- - #VUID-vkCmdDrawIndexedIndirect-None-08885# There /must/ be no shader -- object bound to either of the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' -- or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' -- stages -- -- - #VUID-vkCmdDrawIndexedIndirect-None-07619# If a shader object is -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage or a graphics pipeline is bound which was created with both a -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stage and the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT' -- dynamic state enabled, then -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT' -- /must/ have been called and not subsequently -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated> -- in the current command buffer prior to this drawing command -- -- - #VUID-vkCmdDrawIndexedIndirect-OpExecutionMode-12239# If a shader is -- bound to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the type of subdivision, they /must/ be the same -- -- - #VUID-vkCmdDrawIndexedIndirect-OpExecutionMode-12240# If a shader is -- bound to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the orientation of triangles, they /must/ be the same -- -- - #VUID-vkCmdDrawIndexedIndirect-OpExecutionMode-12241# If a shader is -- bound to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the segment spacing, they /must/ be the same -- -- - #VUID-vkCmdDrawIndexedIndirect-OpExecutionMode-12242# If a shader is -- bound to both the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT' -- and -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT' -- stages, and if both stages contain an @OpExecutionMode@ instruction -- specifying the output patch size, they /must/ be the same -- -- - #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' -- usage flag 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 multiDrawIndirect> -- 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-None-07312# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6> -- feature is not enabled, a valid index buffer /must/ be bound -- -- - #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-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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdDrawIndexedIndirect-renderpass# This command /must/ only -- be called inside of a render pass instance -- -- - #VUID-vkCmdDrawIndexedIndirect-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdDrawIndexedIndirect-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdDrawIndexedIndirect is affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> io () cmdDrawIndexedIndirect CommandBuffer commandBuffer Buffer buffer "offset" ::: DeviceSize offset "firstViewport" ::: Word32 drawCount "firstViewport" ::: Word32 stride = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdDrawIndexedIndirectPtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirectPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdDrawIndexedIndirect (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirectPtr FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdDrawIndexedIndirect is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdDrawIndexedIndirect' :: Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDrawIndexedIndirect' = FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdDrawIndexedIndirect FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirectPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdDrawIndexedIndirect" (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDrawIndexedIndirect' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Buffer buffer) ("offset" ::: DeviceSize offset) ("firstViewport" ::: Word32 drawCount) ("firstViewport" ::: Word32 stride)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-magFilter-09598# If a -- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or -- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and -- @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDispatch-mipmapMode-04770# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-09599# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR' -- and @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDispatch-unnormalizedCoordinates-09635# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @levelCount@ and @layerCount@ /must/ be 1 -- -- - #VUID-vkCmdDispatch-None-08609# If a 'Vulkan.Core10.Handles.Sampler' -- created with @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @viewType@ /must/ be -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' -- -- - #VUID-vkCmdDispatch-None-08610# If a 'Vulkan.Core10.Handles.Sampler' -- created with @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions with -- @ImplicitLod@, @Dref@ or @Proj@ in their name -- -- - #VUID-vkCmdDispatch-None-08611# If a 'Vulkan.Core10.Handles.Sampler' -- created with @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values -- -- - #VUID-vkCmdDispatch-None-06479# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>, -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' -- -- - #VUID-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-07888# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- descriptor is accessed using atomic operations as a result of this -- command, then the storage texel buffer’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' -- -- - #VUID-vkCmdDispatch-None-02692# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command, then the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- - #VUID-vkCmdDispatch-None-02693# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic> -- extension is not enabled and any 'Vulkan.Core10.Handles.ImageView' -- is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a -- result of this command, it /must/ not have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D', -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' -- -- - #VUID-vkCmdDispatch-filterCubic-02694# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering, as specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDispatch-filterCubicMinmax-02695# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode -- of either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- as a result of this command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering together with minmax filtering, as -- specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDispatch-cubicRangeClamp-09212# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ not have a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- -- - #VUID-vkCmdDispatch-reductionMode-09213# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- as a result of this command /must/ sample with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' -- -- - #VUID-vkCmdDispatch-selectableCubicWeights-09214# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ have -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@ -- equal to -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' -- -- - #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-07027# For any -- 'Vulkan.Core10.Handles.ImageView' being written as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatch-OpTypeImage-07028# For any -- 'Vulkan.Core10.Handles.ImageView' being read as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatch-OpTypeImage-07029# For any -- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@, the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatch-OpTypeImage-07030# Any -- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@ then the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatch-None-08600# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a set /n/, 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' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???> -- -- - #VUID-vkCmdDispatch-None-08601# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDispatch-None-10068# For each array of resources that is -- used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- the indices used to access members of the array /must/ be less than -- the descriptor count for the identified binding in the descriptor -- sets used by this command -- -- - #VUID-vkCmdDispatch-maintenance4-08602# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' and -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to -- create the current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDispatch-None-08114# Descriptors in each bound descriptor -- set, specified via 'cmdBindDescriptorSets', /must/ be valid if they -- are accessed as described by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity> -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point used by this command and the bound -- 'Vulkan.Core10.Handles.Pipeline' was not created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatch-imageLayout-00344# If an image descriptor is -- accessed by a shader, the -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the -- subresource accessible from the 'Vulkan.Core10.Handles.ImageView' as -- defined by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules> -- -- - #VUID-vkCmdDispatch-None-08115# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via 'cmdBindDescriptorSets', the bound -- 'Vulkan.Core10.Handles.Pipeline' /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatch-None-08116# Descriptors in bound descriptor -- buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline' -- was created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatch-None-08604# Descriptors in bound descriptor -- buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command -- -- - #VUID-vkCmdDispatch-None-08117# If the descriptors used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- were specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatch-None-08119# If a descriptor is dynamically used -- with a 'Vulkan.Core10.Handles.Pipeline' created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDispatch-None-08605# If a descriptor is dynamically used -- with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a -- 'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDispatch-None-08606# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject> -- feature is not enabled, a valid pipeline /must/ be bound to the -- pipeline bind point used by this command -- -- - #VUID-vkCmdDispatch-None-08608# If a pipeline is bound to the -- pipeline bind point used by this command, there /must/ not have been -- any calls to dynamic state setting commands for any state specified -- statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to -- the pipeline bind point used by this command, since that pipeline -- was bound -- -- - #VUID-vkCmdDispatch-uniformBuffers-06935# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDispatch-None-08612# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDispatch-storageBuffers-06936# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer, and that stage -- was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDispatch-None-08613# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a storage -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDispatch-commandBuffer-02707# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, any resource accessed by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders> -- /must/ not be a protected resource -- -- - #VUID-vkCmdDispatch-viewType-07752# If a -- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this -- command, then the image view’s @viewType@ /must/ match the @Dim@ -- operand of the @OpTypeImage@ as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???> -- -- - #VUID-vkCmdDispatch-format-07753# If a -- 'Vulkan.Core10.Handles.ImageView' or -- 'Vulkan.Core10.Handles.BufferView' is accessed as a result of this -- command, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type> -- of the view’s @format@ and the @Sampled@ @Type@ operand of the -- @OpTypeImage@ /must/ match -- -- - #VUID-vkCmdDispatch-OpImageWrite-08795# If a -- 'Vulkan.Core10.Handles.ImageView' created with a format other than -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-08796# If a -- 'Vulkan.Core10.Handles.ImageView' created with the format -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using -- @OpImageWrite@ as a result of this command, then the @Type@ of the -- @Texel@ operand of that instruction /must/ have four components -- -- - #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-OpImageSampleWeightedQCOM-06971# If -- @OpImageSampleWeightedQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageSampleWeightedQCOM-06972# If -- @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView' -- as a sample weight image as a result of this command, then the image -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageBoxFilterQCOM-06973# If -- @OpImageBoxFilterQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageBlockMatchSSDQCOM-06974# If -- @OpImageBlockMatchSSDQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06975# If -- @OpImageBlockMatchSADQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06976# If -- @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDispatch-OpImageSampleWeightedQCOM-06977# If -- @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageSampleWeightedQCOM-06978# If any command -- other than @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ not have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageBlockMatchWindow-09215# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDispatch-OpImageBlockMatchWindow-09216# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s format /must/ be a single-component format -- -- - #VUID-vkCmdDispatch-OpImageBlockMatchWindow-09217# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDispatch-None-07288# Any shader invocation executed by -- this command /must/ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate> -- -- - #VUID-vkCmdDispatch-None-09600# If a descriptor with type equal to -- any of -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- is accessed as a result of this command, all image subresources -- identified by that descriptor /must/ be in the image layout -- identified when the descriptor was written -- -- - #VUID-vkCmdDispatch-commandBuffer-10746# The -- 'Vulkan.Core10.Handles.DeviceMemory' object allocated from a -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property that is bound to a resource accessed as a result of this -- command /must/ be the active bound -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object> -- in @commandBuffer@ -- -- - #VUID-vkCmdDispatch-None-10678# If this command is recorded inside a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass> -- instance, the stages corresponding to the pipeline bind point used -- by this command /must/ only include -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT', -- and\/or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- -- - #VUID-vkCmdDispatch-None-10679# If this command is recorded where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, there /must/ be no access to any image while the image -- was be transitioned to the -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- layout -- -- - #VUID-vkCmdDispatch-pDescription-09900# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the -- underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have -- been created with the -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage -- flag set -- -- - #VUID-vkCmdDispatch-dimensionCount-09905# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the @Rank@ -- of the @OpTypeTensorARM@ of the tensor resource variable /must/ be -- equal to the @dimensionCount@ provided via -- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@ -- when creating the underlying 'Vulkan.Extensions.Handles.TensorARM' -- object -- -- - #VUID-vkCmdDispatch-OpTypeTensorARM-09906# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the element -- type of the @OpTypeTensorARM@ of the tensor resource variable /must/ -- be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible> -- with the 'Vulkan.Core10.Enums.Format.Format' of the -- 'Vulkan.Extensions.Handles.TensorViewARM' used for the access -- -- - #VUID-vkCmdDispatch-None-11297# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a @OpTypeStruct@ decorated with @Block@ or -- @BufferBlock@ using that mapping, the calculated offset for the -- resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment> -- -- - #VUID-vkCmdDispatch-None-11298# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using -- that mapping, the calculated offset for the resource heap /must/ be -- a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment> -- -- - #VUID-vkCmdDispatch-None-11299# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@ -- using that mapping, the calculated offset for the sampler heap -- /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment> -- -- - #VUID-vkCmdDispatch-None-11397# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeTensorARM@ using that mapping, the -- calculated offset for the resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment> -- -- - #VUID-vkCmdDispatch-None-11300# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 4 -- -- - #VUID-vkCmdDispatch-None-11301# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDispatch-None-11302# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDispatch-None-11304# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 8 -- -- - #VUID-vkCmdDispatch-None-11305# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDispatch-None-11306# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address pointed to by the address in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDispatch-None-11308# For each -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap> -- that is statically used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- either directly or via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- a valid descriptor heap /must/ be bound -- -- - #VUID-vkCmdDispatch-None-11309# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, execution of this command /must/ not result in any descriptor -- read accessing data outside of the user range of the respective heap -- bound by @vkCmdBind*HeapEXT@ commands -- -- - #VUID-vkCmdDispatch-None-11372# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer or uniform -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDispatch-None-11373# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer or storage -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDispatch-None-11374# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, uniform texel buffer, storage buffer, or storage texel -- buffer, that shader /must/ not access values outside of the range of -- the buffer as specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDispatch-pBindInfo-11375# If any -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- uses an embedded sampler via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- the value of @pBindInfo->reservedRangeSize@ set for -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT' -- /must/ be greater than or equal to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded> -- -- - #VUID-vkCmdDispatch-None-11376# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT' -- -- - #VUID-vkCmdDispatch-None-11398# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the access -- /must/ not be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds> -- -- - #VUID-vkCmdDispatch-None-11437# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the buffer from -- which the address in push data was queried /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDispatch-None-11438# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDispatch-None-11441# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment> -- -- - #VUID-vkCmdDispatch-None-11439# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDispatch-None-11442# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment> -- -- - #VUID-vkCmdDispatch-None-11485# If a pipeline is bound to the -- pipeline bind point used by this command, or shader is bound to a -- shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses an acceleration structure using that mapping, -- the address that the acceleration structure is mapped to /must/ be -- an acceleration structure address retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR' -- or handle retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' object via -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV' -- -- - #VUID-vkCmdDispatch-index-11450# If a shader uses a sampler -- descriptor to sample an image as a result of this command, and that -- sampler descriptor uses a custom border color with an index defined -- by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT', -- the value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@ -- /must/ have been registered before this command was recorded, and -- still be registered during the sampling operation, with an -- identically defined color -- -- - #VUID-vkCmdDispatch-protectedNoFault-11455# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- the address that the resource is mapped to /must/ have been queried -- from a buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDispatch-protectedNoFault-11456# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- the address of the indirect memory /must/ have been queried from a -- buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDispatch-None-10672# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is not enabled, this command /must/ be called outside of a render -- pass instance -- -- - #VUID-vkCmdDispatch-aspectMask-10673# If this command is recorded -- where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, and if the 'Vulkan.Core10.Handles.Pipeline' object bound -- to the pipeline bind point used by this command writes to a variable -- of storage class @Storage@ @Class@ @TileAttachmentQCOM@, the -- corresponding 'Vulkan.Core10.Handles.ImageView' using /must/ not -- have been created with an @aspectMask@ that contains -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-vkCmdDispatch-None-10674# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDispatch tileShadingPerTileDispatch> -- feature /must/ be enabled -- -- - #VUID-vkCmdDispatch-None-10675# Memory backing image subresources -- used as -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachments> -- in the current render pass /must/ not be written in any way other -- than as a tile attachment by this command -- -- - #VUID-vkCmdDispatch-None-10676# If any recorded command in the -- current subpass will write to an image subresource as a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachment>, -- this command /must/ not read from the memory backing that image -- subresource in any other way than as a tile attachment -- -- - #VUID-vkCmdDispatch-None-10743# If there is no bound compute -- pipeline, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- stage -- -- - #VUID-vkCmdDispatch-commandBuffer-02712# If @commandBuffer@ is a -- protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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 and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations -- -- - #VUID-vkCmdDispatch-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdDispatch-videocoding# This command /must/ only be called -- outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdDispatch is affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> io () cmdDispatch CommandBuffer commandBuffer "firstViewport" ::: Word32 groupCountX "firstViewport" ::: Word32 groupCountY "firstViewport" ::: Word32 groupCountZ = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdDispatchPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDispatchPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdDispatch (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDispatchPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdDispatch is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdDispatch' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDispatch' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdDispatch FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdDispatchPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdDispatch" (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdDispatch' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("firstViewport" ::: Word32 groupCountX) ("firstViewport" ::: Word32 groupCountY) ("firstViewport" ::: Word32 groupCountZ)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-magFilter-09598# If a -- 'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or -- @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and -- @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDispatchIndirect-mipmapMode-04770# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR', -- @reductionMode@ equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', -- 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-09599# If a -- 'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR' -- and @reductionMode@ equal to either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- 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_MINMAX_BIT' -- -- - #VUID-vkCmdDispatchIndirect-unnormalizedCoordinates-09635# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @levelCount@ and @layerCount@ /must/ be 1 -- -- - #VUID-vkCmdDispatchIndirect-None-08609# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s @viewType@ /must/ be -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' -- -- - #VUID-vkCmdDispatchIndirect-None-08610# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions with -- @ImplicitLod@, @Dref@ or @Proj@ in their name -- -- - #VUID-vkCmdDispatchIndirect-None-08611# If a -- 'Vulkan.Core10.Handles.Sampler' created with -- @unnormalizedCoordinates@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the sampler /must/ not be used with any of the SPIR-V -- @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values -- -- - #VUID-vkCmdDispatchIndirect-None-06479# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>, -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' -- -- - #VUID-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-07888# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- descriptor is accessed using atomic operations as a result of this -- command, then the storage texel buffer’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' -- -- - #VUID-vkCmdDispatchIndirect-None-02692# If a -- 'Vulkan.Core10.Handles.ImageView' is sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command, then the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- - #VUID-vkCmdDispatchIndirect-None-02693# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic> -- extension is not enabled and any 'Vulkan.Core10.Handles.ImageView' -- is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a -- result of this command, it /must/ not have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D', -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' -- -- - #VUID-vkCmdDispatchIndirect-filterCubic-02694# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a result of this -- command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering, as specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' with a reduction mode -- of either -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN' -- or -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX' -- as a result of this command /must/ have a -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that -- supports cubic filtering together with minmax filtering, as -- specified by -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@ -- returned by -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2' -- -- - #VUID-vkCmdDispatchIndirect-cubicRangeClamp-09212# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ not have a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-reductionMode-09213# Any -- 'Vulkan.Core10.Handles.ImageView' being sampled with a -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@ -- equal to -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' -- as a result of this command /must/ sample with -- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' -- -- - #VUID-vkCmdDispatchIndirect-selectableCubicWeights-09214# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights> -- feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView' -- being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as -- a result of this command /must/ have -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@ -- equal to -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' -- -- - #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-07027# For any -- 'Vulkan.Core10.Handles.ImageView' being written as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatchIndirect-OpTypeImage-07028# For any -- 'Vulkan.Core10.Handles.ImageView' being read as a storage image -- where the image format field of the @OpTypeImage@ is @Unknown@, the -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatchIndirect-OpTypeImage-07029# For any -- 'Vulkan.Core10.Handles.BufferView' being written as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@, the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatchIndirect-OpTypeImage-07030# Any -- 'Vulkan.Core10.Handles.BufferView' being read as a storage texel -- buffer where the image format field of the @OpTypeImage@ is -- @Unknown@ then the view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- - #VUID-vkCmdDispatchIndirect-None-08600# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a set /n/, 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' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???> -- -- - #VUID-vkCmdDispatchIndirect-None-08601# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the -- current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDispatchIndirect-None-10068# For each array of resources -- that is used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- the indices used to access members of the array /must/ be less than -- the descriptor count for the identified binding in the descriptor -- sets used by this command -- -- - #VUID-vkCmdDispatchIndirect-maintenance4-08602# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' without the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline without the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set for the same pipeline bind point, with a -- 'Vulkan.Core10.Handles.PipelineLayout' that is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility compatible for push constants> -- with the 'Vulkan.Core10.Handles.PipelineLayout' used to create the -- current 'Vulkan.Core10.Handles.Pipeline' or the -- 'Vulkan.Core10.Handles.DescriptorSetLayout' and -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to -- create the current 'Vulkan.Extensions.Handles.ShaderEXT' -- -- - #VUID-vkCmdDispatchIndirect-None-08114# Descriptors in each bound -- descriptor set, specified via 'cmdBindDescriptorSets', /must/ be -- valid if they are accessed as described by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity> -- by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point used by this command and the bound -- 'Vulkan.Core10.Handles.Pipeline' was not created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatchIndirect-imageLayout-00344# If an image -- descriptor is accessed by a shader, the -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the -- subresource accessible from the 'Vulkan.Core10.Handles.ImageView' as -- defined by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules> -- -- - #VUID-vkCmdDispatchIndirect-None-08115# If the descriptors used by -- the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point were specified via 'cmdBindDescriptorSets', the bound -- 'Vulkan.Core10.Handles.Pipeline' /must/ have been created without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatchIndirect-None-08116# Descriptors in bound -- descriptor buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by the -- 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point -- used by this command and the bound 'Vulkan.Core10.Handles.Pipeline' -- was created with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatchIndirect-None-08604# Descriptors in bound -- descriptor buffers, specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- /must/ be valid if they are dynamically used by any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command -- -- - #VUID-vkCmdDispatchIndirect-None-08117# If the descriptors used by -- the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind -- point were specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT', -- the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDispatchIndirect-None-08119# If a descriptor is -- dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created -- with -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDispatchIndirect-None-08605# If a descriptor is -- dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT' -- created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was -- created with -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT', -- the descriptor memory /must/ be resident -- -- - #VUID-vkCmdDispatchIndirect-None-08606# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject> -- feature is not enabled, a valid pipeline /must/ be bound to the -- pipeline bind point used by this command -- -- - #VUID-vkCmdDispatchIndirect-None-08608# If a pipeline is bound to -- the pipeline bind point used by this command, there /must/ not have -- been any calls to dynamic state setting commands for any state -- specified statically in the 'Vulkan.Core10.Handles.Pipeline' object -- bound to the pipeline bind point used by this command, since that -- pipeline was bound -- -- - #VUID-vkCmdDispatchIndirect-uniformBuffers-06935# If any stage of -- the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline -- bind point used by this command accesses a uniform buffer, and that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDispatchIndirect-None-08612# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDispatchIndirect-storageBuffers-06936# If any stage of -- the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline -- bind point used by this command accesses a storage buffer, and that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the buffer as specified in the descriptor set bound -- to the same pipeline bind point -- -- - #VUID-vkCmdDispatchIndirect-None-08613# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a storage -- buffer, it /must/ not access values outside of the range of the -- buffer as specified in the descriptor set bound to the same pipeline -- bind point -- -- - #VUID-vkCmdDispatchIndirect-commandBuffer-02707# If @commandBuffer@ -- is an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, any resource accessed by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders> -- /must/ not be a protected resource -- -- - #VUID-vkCmdDispatchIndirect-viewType-07752# If a -- 'Vulkan.Core10.Handles.ImageView' is accessed as a result of this -- command, then the image view’s @viewType@ /must/ match the @Dim@ -- operand of the @OpTypeImage@ as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???> -- -- - #VUID-vkCmdDispatchIndirect-format-07753# If a -- 'Vulkan.Core10.Handles.ImageView' or -- 'Vulkan.Core10.Handles.BufferView' is accessed as a result of this -- command, then the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type> -- of the view’s @format@ and the @Sampled@ @Type@ operand of the -- @OpTypeImage@ /must/ match -- -- - #VUID-vkCmdDispatchIndirect-OpImageWrite-08795# If a -- 'Vulkan.Core10.Handles.ImageView' created with a format other than -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-08796# If a -- 'Vulkan.Core10.Handles.ImageView' created with the format -- 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using -- @OpImageWrite@ as a result of this command, then the @Type@ of the -- @Texel@ operand of that instruction /must/ have four components -- -- - #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-OpImageSampleWeightedQCOM-06971# If -- @OpImageSampleWeightedQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageSampleWeightedQCOM-06972# If -- @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView' -- as a sample weight image as a result of this command, then the image -- view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageBoxFilterQCOM-06973# If -- @OpImageBoxFilterQCOM@ is used to sample a -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageBlockMatchSSDQCOM-06974# If -- @OpImageBlockMatchSSDQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06975# If -- @OpImageBlockMatchSADQCOM@ is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06976# If -- @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDispatchIndirect-OpImageSampleWeightedQCOM-06977# If -- @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@, -- @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@, -- @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@, -- @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a -- 'Vulkan.Core10.Handles.Sampler' as a result of this command, then -- the sampler /must/ have been created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageSampleWeightedQCOM-06978# If any -- command other than @OpImageSampleWeightedQCOM@, -- @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@, -- @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@, -- @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or -- @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as -- a result of this command, then the sampler /must/ not have been -- created with -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageBlockMatchWindow-09215# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> -- /must/ contain -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' -- -- - #VUID-vkCmdDispatchIndirect-OpImageBlockMatchWindow-09216# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- instruction is used to read from an -- 'Vulkan.Core10.Handles.ImageView' as a result of this command, then -- the image view’s format /must/ be a single-component format -- -- - #VUID-vkCmdDispatchIndirect-OpImageBlockMatchWindow-09217# If a -- @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@ -- read from a reference image as result of this command, then the -- specified reference coordinates /must/ not fail -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation> -- -- - #VUID-vkCmdDispatchIndirect-None-07288# Any shader invocation -- executed by this command /must/ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate> -- -- - #VUID-vkCmdDispatchIndirect-None-09600# If a descriptor with type -- equal to any of -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- is accessed as a result of this command, all image subresources -- identified by that descriptor /must/ be in the image layout -- identified when the descriptor was written -- -- - #VUID-vkCmdDispatchIndirect-commandBuffer-10746# The -- 'Vulkan.Core10.Handles.DeviceMemory' object allocated from a -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property that is bound to a resource accessed as a result of this -- command /must/ be the active bound -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object> -- in @commandBuffer@ -- -- - #VUID-vkCmdDispatchIndirect-None-10678# If this command is recorded -- inside a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass> -- instance, the stages corresponding to the pipeline bind point used -- by this command /must/ only include -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT', -- and\/or -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- -- - #VUID-vkCmdDispatchIndirect-None-10679# If this command is recorded -- where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, there /must/ be no access to any image while the image -- was be transitioned to the -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- layout -- -- - #VUID-vkCmdDispatchIndirect-pDescription-09900# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the -- underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have -- been created with the -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage -- flag set -- -- - #VUID-vkCmdDispatchIndirect-dimensionCount-09905# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the @Rank@ -- of the @OpTypeTensorARM@ of the tensor resource variable /must/ be -- equal to the @dimensionCount@ provided via -- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@ -- when creating the underlying 'Vulkan.Extensions.Handles.TensorARM' -- object -- -- - #VUID-vkCmdDispatchIndirect-OpTypeTensorARM-09906# If a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' -- descriptor is accessed as a result of this command, then the element -- type of the @OpTypeTensorARM@ of the tensor resource variable /must/ -- be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible> -- with the 'Vulkan.Core10.Enums.Format.Format' of the -- 'Vulkan.Extensions.Handles.TensorViewARM' used for the access -- -- - #VUID-vkCmdDispatchIndirect-None-11297# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a @OpTypeStruct@ decorated with @Block@ or -- @BufferBlock@ using that mapping, the calculated offset for the -- resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment> -- -- - #VUID-vkCmdDispatchIndirect-None-11298# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using -- that mapping, the calculated offset for the resource heap /must/ be -- a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment> -- -- - #VUID-vkCmdDispatchIndirect-None-11299# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@ -- using that mapping, the calculated offset for the sampler heap -- /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment> -- -- - #VUID-vkCmdDispatchIndirect-None-11397# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses an @OpTypeTensorARM@ using that mapping, the -- calculated offset for the resource heap /must/ be a multiple of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment> -- -- - #VUID-vkCmdDispatchIndirect-None-11300# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 4 -- -- - #VUID-vkCmdDispatchIndirect-None-11301# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDispatchIndirect-None-11302# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDispatchIndirect-None-11304# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a -- multiple of 8 -- -- - #VUID-vkCmdDispatchIndirect-None-11305# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address at the expected location in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical -- memory at every offset specified by each mapping -- -- - #VUID-vkCmdDispatchIndirect-None-11306# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the value of -- the address pointed to by the address in push data /must/ be a valid -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' -- -- - #VUID-vkCmdDispatchIndirect-None-11308# For each -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap> -- that is statically used by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>, -- either directly or via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- a valid descriptor heap /must/ be bound -- -- - #VUID-vkCmdDispatchIndirect-None-11309# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, execution of this command /must/ not result in any descriptor -- read accessing data outside of the user range of the respective heap -- bound by @vkCmdBind*HeapEXT@ commands -- -- - #VUID-vkCmdDispatchIndirect-None-11372# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a uniform buffer or uniform -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @uniformBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified via -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDispatchIndirect-None-11373# If any stage of the -- 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind -- point used by this command accesses a storage buffer or storage -- texel buffer through a descriptor in the bound resource heap, that -- stage was created without enabling either -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' -- or -- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2' -- for @storageBuffers@, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, that stage /must/ not access values outside -- of the range of the descriptor specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDispatchIndirect-None-11374# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2> -- feature is not enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess> -- feature is not enabled, and any -- 'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding -- to the pipeline bind point used by this command accesses a uniform -- buffer, uniform texel buffer, storage buffer, or storage texel -- buffer, that shader /must/ not access values outside of the range of -- the buffer as specified by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DeviceAddressRangeEXT' -- when the descriptor was written -- -- - #VUID-vkCmdDispatchIndirect-pBindInfo-11375# If any -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- uses an embedded sampler via a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>, -- the value of @pBindInfo->reservedRangeSize@ set for -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT' -- /must/ be greater than or equal to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded> -- -- - #VUID-vkCmdDispatchIndirect-None-11376# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the -- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' -- flag or as part of a pipeline with the -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' -- flag, and that shader statically uses a push constant value, that -- value /must/ have been set by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT' -- -- - #VUID-vkCmdDispatchIndirect-None-11398# If a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader> -- was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the access -- /must/ not be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds> -- -- - #VUID-vkCmdDispatchIndirect-None-11437# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a resource using that mapping, the buffer from -- which the address in push data was queried /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDispatchIndirect-None-11438# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDispatchIndirect-None-11441# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a uniform buffer using that mapping, the -- address that the uniform buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment> -- -- - #VUID-vkCmdDispatchIndirect-None-11439# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ have been -- queried from a buffer created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDispatchIndirect-None-11442# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses a storage buffer using that mapping, the -- address that the storage buffer is mapped to /must/ be aligned to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment> -- -- - #VUID-vkCmdDispatchIndirect-None-11485# If a pipeline is bound to -- the pipeline bind point used by this command, or shader is bound to -- a shader stage used by this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- and a shader accesses an acceleration structure using that mapping, -- the address that the acceleration structure is mapped to /must/ be -- an acceleration structure address retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR' -- or handle retrieved from a -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' object via -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV' -- -- - #VUID-vkCmdDispatchIndirect-index-11450# If a shader uses a sampler -- descriptor to sample an image as a result of this command, and that -- sampler descriptor uses a custom border color with an index defined -- by -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT', -- the value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@ -- /must/ have been registered before this command was recorded, and -- still be registered during the sampling operation, with an -- identically defined color -- -- - #VUID-vkCmdDispatchIndirect-protectedNoFault-11455# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT', -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', -- the address that the resource is mapped to /must/ have been queried -- from a buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDispatchIndirect-protectedNoFault-11456# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, a pipeline is bound to the pipeline bind point -- used by this command, or a shader is bound to a shader stage used by -- this command, and it was created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping> -- using -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT' -- or -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', -- the address of the indirect memory /must/ have been queried from a -- buffer created without the -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' -- create flag set -- -- - #VUID-vkCmdDispatchIndirect-None-10672# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is not enabled, this command /must/ be called outside of a render -- pass instance -- -- - #VUID-vkCmdDispatchIndirect-aspectMask-10673# If this command is -- recorded where -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, and if the 'Vulkan.Core10.Handles.Pipeline' object bound -- to the pipeline bind point used by this command writes to a variable -- of storage class @Storage@ @Class@ @TileAttachmentQCOM@, the -- corresponding 'Vulkan.Core10.Handles.ImageView' using /must/ not -- have been created with an @aspectMask@ that contains -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-vkCmdDispatchIndirect-None-10674# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDispatch tileShadingPerTileDispatch> -- feature /must/ be enabled -- -- - #VUID-vkCmdDispatchIndirect-None-10675# Memory backing image -- subresources used as -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachments> -- in the current render pass /must/ not be written in any way other -- than as a tile attachment by this command -- -- - #VUID-vkCmdDispatchIndirect-None-10676# If any recorded command in -- the current subpass will write to an image subresource as a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachment>, -- this command /must/ not read from the memory backing that image -- subresource in any other way than as a tile attachment -- -- - #VUID-vkCmdDispatchIndirect-None-10743# If there is no bound compute -- pipeline, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be -- bound to the -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' -- stage -- -- - #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' -- usage flag 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations -- -- - #VUID-vkCmdDispatchIndirect-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdDispatchIndirect-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdDispatchIndirect is affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> io () cmdDispatchIndirect CommandBuffer commandBuffer Buffer buffer "offset" ::: DeviceSize offset = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdDispatchIndirectPtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdDispatchIndirectPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) pVkCmdDispatchIndirect (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdDispatchIndirectPtr FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdDispatchIndirect is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdDispatchIndirect' :: Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO () vkCmdDispatchIndirect' = FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO () mkVkCmdDispatchIndirect FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdDispatchIndirectPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdDispatchIndirect" (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO () vkCmdDispatchIndirect' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Buffer buffer) ("offset" ::: DeviceSize offset)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 source region specified by @pRegions@ is copied from the source -- buffer to the destination region of the destination buffer. If any of -- the specified regions in @srcBuffer@ overlaps in memory with any of the -- specified regions in @dstBuffer@, values read from those overlapping -- regions are undefined. -- -- == Valid Usage -- -- - #VUID-vkCmdCopyBuffer-commandBuffer-01822# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @srcBuffer@ /must/ not be a protected buffer -- -- - #VUID-vkCmdCopyBuffer-commandBuffer-01823# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstBuffer@ /must/ not be a protected buffer -- -- - #VUID-vkCmdCopyBuffer-commandBuffer-01824# If @commandBuffer@ is a -- protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @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 the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #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 the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations -- -- - #VUID-vkCmdCopyBuffer-renderpass# This command /must/ only be called -- outside of a render pass instance -- -- - #VUID-vkCmdCopyBuffer-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdCopyBuffer-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdCopyBuffer is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> Buffer -> ("regions" ::: Vector BufferCopy) -> io () cmdCopyBuffer CommandBuffer commandBuffer Buffer srcBuffer Buffer dstBuffer "regions" ::: Vector BufferCopy regions = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdCopyBufferPtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) vkCmdCopyBufferPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) pVkCmdCopyBuffer (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) vkCmdCopyBufferPtr FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdCopyBuffer is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdCopyBuffer' :: Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO () vkCmdCopyBuffer' = FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO () mkVkCmdCopyBuffer FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferCopy -> IO ()) vkCmdCopyBufferPtr pPRegions <- ((Ptr BufferCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferCopy) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr BufferCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferCopy)) -> ((Ptr BufferCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferCopy) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @BufferCopy ((("regions" ::: Vector BufferCopy) -> Int forall a. Vector a -> Int Data.Vector.length ("regions" ::: Vector BufferCopy regions)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 24) lift $ Data.Vector.imapM_ (\Int i BufferCopy e -> Ptr BufferCopy -> BufferCopy -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr BufferCopy pPRegions Ptr BufferCopy -> Int -> Ptr BufferCopy forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr BufferCopy) (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 source region specified by @pRegions@ is copied from the source -- image to the destination region of the destination image. If any of the -- specified regions in @srcImage@ overlaps in memory with any of the -- specified regions in @dstImage@, values read from those overlapping -- regions are undefined. If any region accesses a depth aspect in -- @dstImage@ and the @VK_EXT_depth_range_unrestricted@ extension is not -- enabled, values copied from @srcImage@ outside of the range [0,1] will -- be written as undefined values to the destination image. -- -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar Multi-planar images> -- /can/ only be copied on a per-plane basis, and the subresources used in -- each region when copying to or from such images /must/ specify only one -- plane, though different regions /can/ specify different planes. When -- copying planes of multi-planar images, the format considered is the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatible-planes compatible format for that plane>, -- rather than the format of the multi-planar image. -- -- If the format of the destination image has a different -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes block extent> -- than the source image (e.g. one is a compressed format), the offset and -- extent for each of the regions specified is -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-size-compatibility scaled according to the block extents of each format> -- to match in size. Copy regions for each image /must/ be aligned to a -- multiple of the texel block extent in each dimension, except at the -- edges of the image, where region extents /must/ match the edge of the -- image. -- -- Image data /can/ be copied between images with different image types. If -- one image is 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' and the other -- image is 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' with multiple -- layers, then each slice is copied to or from a different layer; @depth@ -- slices in the 3D image correspond to @layerCount@ layers in the 2D -- image, with an effective @depth@ of @1@ used for the 2D image. If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5> -- feature is enabled, all other combinations are allowed and function as -- if 1D images are 2D images with a height of 1. Otherwise, other -- combinations of image types are disallowed. -- -- == Valid Usage -- -- - #VUID-vkCmdCopyImage-commandBuffer-01825# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @srcImage@ /must/ not be a protected image -- -- - #VUID-vkCmdCopyImage-commandBuffer-01826# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstImage@ /must/ not be a protected image -- -- - #VUID-vkCmdCopyImage-commandBuffer-01827# If @commandBuffer@ is a -- protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstImage@ /must/ not be an unprotected image -- -- - #VUID-vkCmdCopyImage-commandBuffer-10217# 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', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10> -- feature is not enabled, for each element of @pRegions@, where the -- @aspectMask@ member of @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', -- the @aspectMask@ of @dstSubresource@ /must/ not be -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11782# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11783# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11784# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11785# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImage-commandBuffer-10218# 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', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10> -- feature is not enabled, for each element of @pRegions@, where the -- @aspectMask@ member of @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' -- then the @aspectMask@ of @srcSubresource@ /must/ not be -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11786# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11787# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11788# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImage-commandBuffer-11789# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @dstSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- the @aspectMask@ of @srcSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #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-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_SHARED_PRESENT_KHR', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL', -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' -- -- - #VUID-vkCmdCopyImage-srcImage-09460# If @srcImage@ and @dstImage@ -- are the same, and any elements of @pRegions@ contains the -- @srcSubresource@ and @dstSubresource@ with matching @mipLevel@ and -- overlapping array layers, then the @srcImageLayout@ and -- @dstImageLayout@ /must/ be -- '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-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_SHARED_PRESENT_KHR', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL', -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' -- -- - #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-multiplanar multi-planar format>, -- the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and -- @dstImage@ /must/ be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility size-compatible> -- -- - #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-multiplanar 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-09247# If the -- 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and -- @dstImage@ is a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compressed_image_formats compressed image format>, -- the formats /must/ have the same texel block extent -- -- - #VUID-vkCmdCopyImage-srcImage-00136# The sample count of @srcImage@ -- and @dstImage@ /must/ match -- -- - #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-srcImage-01551# If neither @srcImage@ nor -- @dstImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format> -- and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8> -- feature is not enabled then for each element of @pRegions@, -- @srcSubresource.aspectMask@ and @dstSubresource.aspectMask@ /must/ -- match -- -- - #VUID-vkCmdCopyImage-pRegions-12201# For each element of @pRegions@ -- where @srcSubresource.aspectMask@ and @dstSubresource.aspectMask@ -- each contain at least one of -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- @srcSubresource.aspectMask@ and @dstSubresource.aspectMask@ /must/ -- match -- -- - #VUID-vkCmdCopyImage-srcSubresource-10214# If -- @srcSubresource.aspectMask@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', -- then @dstSubresource.aspectMask@ /must/ not contain both -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-vkCmdCopyImage-dstSubresource-10215# If -- @dstSubresource.aspectMask@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', -- then @srcSubresource.aspectMask@ /must/ not contain both -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-vkCmdCopyImage-srcImage-08713# If @srcImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>, -- then for each element of @pRegions@, @srcSubresource.aspectMask@ -- /must/ be a single valid -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask> -- bit -- -- - #VUID-vkCmdCopyImage-dstImage-08714# If @dstImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>, -- then for each element of @pRegions@, @dstSubresource.aspectMask@ -- /must/ be a single valid -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask> -- bit -- -- - #VUID-vkCmdCopyImage-srcImage-01556# If @srcImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar 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-multiplanar multi-planar 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-srcSubresource-10211# If -- @srcSubresource.aspectMask@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and -- @dstSubresource.aspectMask@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- then the 'Vulkan.Core10.Enums.Format.Format' values of @srcImage@ -- and @dstImage@ /must/ be compatible according to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-zs-color the list of compatible depth-stencil and color formats> -- -- - #VUID-vkCmdCopyImage-srcSubresource-10212# If -- @srcSubresource.aspectMask@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- and @dstSubresource.aspectMask@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', -- then the 'Vulkan.Core10.Enums.Format.Format' values of @srcImage@ -- and @dstImage@ /must/ be compatible according to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-zs-color the list of compatible depth-stencil and color formats> -- -- - #VUID-vkCmdCopyImage-apiVersion-07932# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1> -- extension is not enabled, or -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@ -- is less than Vulkan 1.1, and 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/ both be @0@, and -- @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/ -- both be @1@ -- -- - #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# If @srcImage@ is of type -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then 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@ -- -- - #VUID-vkCmdCopyImage-srcImage-10907# If either 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#compressed_image_formats compressed image format>, -- and @dstImage@ is of type -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element -- of @pRegions@, @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-apiVersion-07933# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1> -- extension is not enabled, and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@ -- is less than Vulkan 1.1, @srcImage@ and @dstImage@ /must/ have the -- same 'Vulkan.Core10.Enums.ImageType.ImageType' -- -- - #VUID-vkCmdCopyImage-apiVersion-08969# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1> -- extension is not enabled, and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@ -- is less than Vulkan 1.1, @srcImage@ or @dstImage@ is of type -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element -- of @pRegions@, @extent.depth@ /must/ be @1@ -- -- - #VUID-vkCmdCopyImage-srcImage-07743# If @srcImage@ and @dstImage@ -- have a different 'Vulkan.Core10.Enums.ImageType.ImageType', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5> -- feature is not enabled, one /must/ be -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' and the other /must/ -- be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' -- -- - #VUID-vkCmdCopyImage-srcImage-08793# If @srcImage@ and @dstImage@ -- have the same 'Vulkan.Core10.Enums.ImageType.ImageType', for each -- element of @pRegions@, if neither of the @layerCount@ members of -- @srcSubresource@ or @dstSubresource@ are -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the -- @layerCount@ members of @srcSubresource@ or @dstSubresource@ /must/ -- match -- -- - #VUID-vkCmdCopyImage-srcImage-08794# If @srcImage@ and @dstImage@ -- have the same 'Vulkan.Core10.Enums.ImageType.ImageType', and one of -- the @layerCount@ members of @srcSubresource@ or @dstSubresource@ is -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the other -- member /must/ be either -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' or equal to the -- @arrayLayers@ member of the 'Vulkan.Core10.Image.ImageCreateInfo' -- used to create the image minus @baseArrayLayer@ -- -- - #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@), -- where @extent@ is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility>, -- /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@), -- where @extent@ is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility>, -- /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@ -- -- - #VUID-vkCmdCopyImage-srcImage-10908# If either 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#compressed_image_formats compressed image format>, -- and @dstImage@ is of type -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element -- of @pRegions@, @extent.height@ /must/ be @1@, where @extent@ is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility> -- -- - #VUID-vkCmdCopyImage-dstOffset-00153# If @dstImage@ is of type -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element -- of @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@), -- where @extent@ is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility>, -- /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-pRegions-07278# For each element of @pRegions@, -- @srcOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImage-pRegions-07279# For each element of @pRegions@, -- @srcOffset.y@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImage-pRegions-07280# For each element of @pRegions@, -- @srcOffset.z@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImage-pRegions-07281# For each element of @pRegions@, -- @dstOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyImage-pRegions-07282# For each element of @pRegions@, -- @dstOffset.y@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyImage-pRegions-07283# For each element of @pRegions@, -- @dstOffset.z@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyImage-srcImage-01728# For each element of @pRegions@, -- if the sum of @srcOffset.x@ and @extent.width@ does not equal the -- width of the subresource specified by @srcSubresource@, -- @extent.width@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImage-srcImage-01729# For each element of @pRegions@, -- if the sum of @srcOffset.y@ and @extent.height@ does not equal the -- height of the subresource specified by @srcSubresource@, -- @extent.height@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImage-srcImage-01730# For each element of @pRegions@, -- if the sum of @srcOffset.z@ and @extent.depth@ does not equal the -- depth of the subresource specified by @srcSubresource@, -- @extent.depth@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImage-aspect-06662# If the @aspect@ member of any -- element of @pRegions@ includes any flag other than -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- or @srcImage@ was not created with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>, -- @srcImage@ /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #VUID-vkCmdCopyImage-aspect-06663# If the @aspect@ member of any -- element of @pRegions@ includes any flag other than -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- or @dstImage@ was not created with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>, -- @dstImage@ /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #VUID-vkCmdCopyImage-aspect-06664# If the @aspect@ member of any -- element of @pRegions@ includes -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- and @srcImage@ was created with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>, -- @srcImage@ /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #VUID-vkCmdCopyImage-aspect-06665# If the @aspect@ member of any -- element of @pRegions@ includes -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- and @dstImage@ was created with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>, -- @srcImage@ /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #VUID-vkCmdCopyImage-srcImage-07966# If @srcImage@ is non-sparse -- then the image or each specified /disjoint/ plane /must/ be bound -- completely and contiguously to a single -- 'Vulkan.Core10.Handles.DeviceMemory' object -- -- - #VUID-vkCmdCopyImage-srcSubresource-07967# 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-srcSubresource-07968# If -- @srcSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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-srcImage-07969# @srcImage@ /must/ not have been -- created with @flags@ containing -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' -- -- - #VUID-vkCmdCopyImage-dstImage-07966# If @dstImage@ is non-sparse -- then the image or each specified /disjoint/ plane /must/ be bound -- completely and contiguously to a single -- 'Vulkan.Core10.Handles.DeviceMemory' object -- -- - #VUID-vkCmdCopyImage-dstSubresource-07967# 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-dstSubresource-07968# If -- @dstSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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-dstImage-07969# @dstImage@ /must/ not have been -- created with @flags@ containing -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations -- -- - #VUID-vkCmdCopyImage-renderpass# This command /must/ only be called -- outside of a render pass instance -- -- - #VUID-vkCmdCopyImage-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdCopyImage-videocoding# This command /must/ only be called -- outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdCopyImage is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("regions" ::: Vector ImageCopy) -> io () cmdCopyImage CommandBuffer commandBuffer "srcImage" ::: Image srcImage "srcImageLayout" ::: ImageLayout srcImageLayout "srcImage" ::: Image dstImage "srcImageLayout" ::: ImageLayout dstImageLayout "regions" ::: Vector ImageCopy regions = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdCopyImagePtr :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) vkCmdCopyImagePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) pVkCmdCopyImage (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) vkCmdCopyImagePtr FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdCopyImage is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdCopyImage' :: Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO () vkCmdCopyImage' = FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) -> Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO () mkVkCmdCopyImage FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageCopy -> IO ()) vkCmdCopyImagePtr pPRegions <- ((Ptr ImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageCopy) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr ImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageCopy)) -> ((Ptr ImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageCopy) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @ImageCopy ((("regions" ::: Vector ImageCopy) -> Int forall a. Vector a -> Int Data.Vector.length ("regions" ::: Vector ImageCopy regions)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 68) lift $ Data.Vector.imapM_ (\Int i ImageCopy e -> Ptr ImageCopy -> ImageCopy -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ImageCopy pPRegions Ptr ImageCopy -> Int -> Ptr ImageCopy forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 68 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ImageCopy) (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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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. -- -- 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, scaled 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 and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @srcImage@ /must/ not be a protected image -- -- - #VUID-vkCmdBlitImage-commandBuffer-01835# If @commandBuffer@ is an -- unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstImage@ /must/ not be a protected image -- -- - #VUID-vkCmdBlitImage-commandBuffer-01836# If @commandBuffer@ is a -- protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstImage@ /must/ not be an unprotected image -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #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-srcImage-09459# If @srcImage@ and @dstImage@ -- are the same, and an elements of @pRegions@ contains the -- @srcSubresource@ and @dstSubresource@ with matching @mipLevel@ and -- overlapping array layers, then the @srcImageLayout@ and -- @dstImageLayout@ /must/ be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR' -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- - #VUID-vkCmdBlitImage-filter-00237# If @filter@ is -- 'Vulkan.Core10.Enums.Filter.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# If -- @srcSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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# If -- @dstSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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-maintenance8-10207# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8> -- feature is enabled and @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@ and @dstSubresource.layerCount@ /must/ -- each be @1@ -- -- - #VUID-vkCmdBlitImage-maintenance8-10208# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8> -- feature is enabled and @dstImage@ is of type -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element -- of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@, and -- @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/ -- each be @1@ -- -- - #VUID-vkCmdBlitImage-maintenance8-10579# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8> -- feature is enabled, @dstImage@ is -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and @srcImage@ is not -- of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each -- element of @pRegions@, the absolute difference of the @z@ member of -- each member of @dstOffsets@ /must/ equal @srcSubresource.layerCount@ -- -- - #VUID-vkCmdBlitImage-maintenance8-10580# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8> -- feature is enabled, @srcImage@ is -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and @dstImage@ is not -- of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each -- element of @pRegions@, the absolute difference of the @z@ member of -- each member of @srcOffsets@ /must/ equal @dstSubresource.layerCount@ -- -- - #VUID-vkCmdBlitImage-srcImage-00240# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8> -- feature is not enabled and 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBlitImage-renderpass# This command /must/ only be called -- outside of a render pass instance -- -- - #VUID-vkCmdBlitImage-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdBlitImage-videocoding# This command /must/ only be called -- outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBlitImage is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("regions" ::: Vector ImageBlit) -> Filter -> io () cmdBlitImage CommandBuffer commandBuffer "srcImage" ::: Image srcImage "srcImageLayout" ::: ImageLayout srcImageLayout "srcImage" ::: Image dstImage "srcImageLayout" ::: ImageLayout dstImageLayout "regions" ::: Vector ImageBlit regions Filter filter' = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBlitImagePtr :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) vkCmdBlitImagePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) pVkCmdBlitImage (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) vkCmdBlitImagePtr FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBlitImage is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBlitImage' :: Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO () vkCmdBlitImage' = FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) -> Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO () mkVkCmdBlitImage FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageBlit -> Filter -> IO ()) vkCmdBlitImagePtr pPRegions <- ((Ptr ImageBlit -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageBlit) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr ImageBlit -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageBlit)) -> ((Ptr ImageBlit -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageBlit) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @ImageBlit ((("regions" ::: Vector ImageBlit) -> Int forall a. Vector a -> Int Data.Vector.length ("regions" ::: Vector ImageBlit regions)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 80) lift $ Data.Vector.imapM_ (\Int i ImageBlit e -> Ptr ImageBlit -> ImageBlit -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ImageBlit pPRegions Ptr ImageBlit -> Int -> Ptr ImageBlit forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 80 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ImageBlit) (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 source region specified by @pRegions@ is copied from the source -- buffer to the destination region of the destination image according to -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers-images-addressing addressing calculations> -- for each resource. If any of the specified regions in @srcBuffer@ -- overlaps in memory with any of the specified regions in @dstImage@, -- values read from those overlapping regions are undefined. If any region -- accesses a depth aspect in @dstImage@ and the -- @VK_EXT_depth_range_unrestricted@ extension is not enabled, values -- copied from @srcBuffer@ outside of the range [0,1] will be written as -- undefined values to the destination image. -- -- Copy regions for the image /must/ be aligned to a multiple of the texel -- block extent in each dimension, except at the edges of the image, where -- region extents /must/ match the edge of the image. -- -- == Valid Usage -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07966# If @dstImage@ is -- non-sparse then the image or each specified /disjoint/ plane /must/ -- be bound completely and contiguously to a single -- 'Vulkan.Core10.Handles.DeviceMemory' object -- -- - #VUID-vkCmdCopyBufferToImage-imageSubresource-07967# 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-07968# If -- @imageSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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-dstImage-07969# @dstImage@ /must/ not -- have been created with @flags@ containing -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' -- -- - #VUID-vkCmdCopyBufferToImage-imageSubresource-07971# 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-imageSubresource-07972# 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-dstImage-07973# @dstImage@ /must/ have -- a sample count equal to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- - #VUID-vkCmdCopyBufferToImage-commandBuffer-01828# If @commandBuffer@ -- is an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @srcBuffer@ /must/ not be a protected buffer -- -- - #VUID-vkCmdCopyBufferToImage-commandBuffer-01829# If @commandBuffer@ -- is an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstImage@ /must/ not be a protected image -- -- - #VUID-vkCmdCopyBufferToImage-commandBuffer-01830# If @commandBuffer@ -- is a protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstImage@ /must/ not be an unprotected image -- -- - #VUID-vkCmdCopyBufferToImage-commandBuffer-07737# 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-imageOffset-07738# 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-commandBuffer-07739# 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', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10> -- feature is not enabled, 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-commandBuffer-11778# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyBufferToImage-commandBuffer-11779# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyBufferToImage-commandBuffer-11780# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyBufferToImage-commandBuffer-11781# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- then 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #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 the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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_SHARED_PRESENT_KHR', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL', -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' -- -- - #VUID-vkCmdCopyBufferToImage-pRegions-07931# If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_range_unrestricted VK_EXT_depth_range_unrestricted> -- is not enabled, for each element of @pRegions@ whose -- @imageSubresource@ contains a depth aspect, the data in @srcBuffer@ -- /must/ be in the range [0,1] -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07979# 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-09104# 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-dstImage-07980# 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-dstImage-07274# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR', -- @imageOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10051# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- and @imageOffset.x@ does not equal the width of the subresource -- specified by @imageSubresource@, @imageOffset.x@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07275# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- @imageOffset.y@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10052# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR', -- and @imageOffset.y@ does not equal the height of the subresource -- specified by @imageSubresource@, @imageOffset.y@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07276# For each element of -- @pRegions@, @imageOffset.z@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-00207# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR', -- the sum of @imageOffset.x@ and @extent.width@ does not equal the -- width of the subresource specified by @imageSubresource@, -- @extent.width@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10053# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- the difference of @imageOffset.x@ and @extent.height@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10054# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR', -- the difference of @imageOffset.x@ and @extent.width@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10055# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR', -- the sum of @imageOffset.x@ and @extent.height@ does not equal the -- width of the subresource specified by @imageSubresource@, -- @extent.height@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-00208# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR', -- and the sum of @imageOffset.y@ and @extent.height@ does not equal -- the height of the subresource specified by @imageSubresource@, -- @extent.height@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10056# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- the sum of @imageOffset.y@ and @extent.width@ does not equal the -- height of the subresource specified by @imageSubresource@, -- @extent.width@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10057# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR', -- the difference of @imageOffset.y@ and @extent.height@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageOffset-10058# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR', -- the difference of @imageOffset.y@ and @extent.width@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-00209# For each element of -- @pRegions@, if the sum of @imageOffset.z@ and @extent.depth@ does -- not equal the depth of the subresource specified by -- @srcSubresource@, @extent.depth@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-imageSubresource-09105# For each -- element of @pRegions@, @imageSubresource.aspectMask@ /must/ specify -- aspects present in @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07981# If @dstImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>, -- then for each element of @pRegions@, @imageSubresource.aspectMask@ -- /must/ be a single valid -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask> -- bit -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07983# 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-bufferRowLength-09106# For each element -- of @pRegions@, @bufferRowLength@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-bufferImageHeight-09107# For each -- element of @pRegions@, @bufferImageHeight@ /must/ be a multiple of -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@ -- -- - #VUID-vkCmdCopyBufferToImage-bufferRowLength-09108# For each element -- of @pRegions@, @bufferRowLength@ divided by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- and then multiplied by the texel block size of @dstImage@ /must/ be -- less than or equal to 231-1 -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07975# If @dstImage@ does not -- have either a depth\/stencil format or a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>, -- then for each element of @pRegions@, @bufferOffset@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size> -- -- - #VUID-vkCmdCopyBufferToImage-dstImage-07976# If @dstImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar 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-dstImage-07978# 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations -- -- - #VUID-vkCmdCopyBufferToImage-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdCopyBufferToImage-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdCopyBufferToImage-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdCopyBufferToImage is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("regions" ::: Vector BufferImageCopy) -> io () cmdCopyBufferToImage CommandBuffer commandBuffer Buffer srcBuffer "srcImage" ::: Image dstImage "srcImageLayout" ::: ImageLayout dstImageLayout "regions" ::: Vector BufferImageCopy regions = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdCopyBufferToImagePtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) vkCmdCopyBufferToImagePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) pVkCmdCopyBufferToImage (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) vkCmdCopyBufferToImagePtr FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdCopyBufferToImage is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdCopyBufferToImage' :: Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO () vkCmdCopyBufferToImage' = FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO () mkVkCmdCopyBufferToImage FunPtr (Ptr CommandBuffer_T -> Buffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) vkCmdCopyBufferToImagePtr pPRegions <- ((Ptr BufferImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferImageCopy) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr BufferImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferImageCopy)) -> ((Ptr BufferImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferImageCopy) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @BufferImageCopy ((("regions" ::: Vector BufferImageCopy) -> Int forall a. Vector a -> Int Data.Vector.length ("regions" ::: Vector BufferImageCopy regions)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 56) lift $ Data.Vector.imapM_ (\Int i BufferImageCopy e -> Ptr BufferImageCopy -> BufferImageCopy -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr BufferImageCopy pPRegions Ptr BufferImageCopy -> Int -> Ptr BufferImageCopy forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 56 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr BufferImageCopy) (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 source region specified by @pRegions@ is copied from the source -- image to the destination region of the destination buffer according to -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers-images-addressing addressing calculations> -- for each resource. If any of the specified regions in @srcImage@ -- overlaps in memory with any of the specified regions in @dstBuffer@, -- values read from those overlapping regions are undefined. -- -- Copy regions for the image /must/ be aligned to a multiple of the texel -- block extent in each dimension, except at the edges of the image, where -- region extents /must/ match the edge of the image. -- -- == Valid Usage -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07966# If @srcImage@ is -- non-sparse then the image or each specified /disjoint/ plane /must/ -- be bound completely and contiguously to a single -- 'Vulkan.Core10.Handles.DeviceMemory' object -- -- - #VUID-vkCmdCopyImageToBuffer-imageSubresource-07967# 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-07968# If -- @imageSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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-srcImage-07969# @srcImage@ /must/ not -- have been created with @flags@ containing -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' -- -- - #VUID-vkCmdCopyImageToBuffer-imageSubresource-07971# 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-imageSubresource-07972# 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-srcImage-07973# @srcImage@ /must/ have -- a sample count equal to -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- - #VUID-vkCmdCopyImageToBuffer-commandBuffer-01831# If @commandBuffer@ -- is an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @srcImage@ /must/ not be a protected image -- -- - #VUID-vkCmdCopyImageToBuffer-commandBuffer-01832# If @commandBuffer@ -- is an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstBuffer@ /must/ not be a protected buffer -- -- - #VUID-vkCmdCopyImageToBuffer-commandBuffer-01833# If @commandBuffer@ -- is a protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstBuffer@ /must/ not be an unprotected buffer -- -- - #VUID-vkCmdCopyImageToBuffer-commandBuffer-07746# 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-imageOffset-07747# 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-commandBuffer-10216# 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', and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10> -- feature is not enabled, 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-vkCmdCopyImageToBuffer-commandBuffer-11790# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImageToBuffer-commandBuffer-11791# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImageToBuffer-commandBuffer-11792# 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' but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR' -- -- - #VUID-vkCmdCopyImageToBuffer-commandBuffer-11793# 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' and -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does -- support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and -- in any element of @pRegions@ the @aspectMask@ member of -- @imageSubresource@ is -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR' -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #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-dstBuffer-00191# @dstBuffer@ /must/ -- have been created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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-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_SHARED_PRESENT_KHR', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL', -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07979# 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-09104# 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-07980# 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-srcImage-07274# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR', -- @imageOffset.x@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10051# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- and @imageOffset.x@ does not equal the width of the subresource -- specified by @imageSubresource@, @imageOffset.x@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07275# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- @imageOffset.y@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10052# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR', -- and @imageOffset.y@ does not equal the height of the subresource -- specified by @imageSubresource@, @imageOffset.y@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07276# For each element of -- @pRegions@, @imageOffset.z@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-00207# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR', -- the sum of @imageOffset.x@ and @extent.width@ does not equal the -- width of the subresource specified by @imageSubresource@, -- @extent.width@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10053# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- the difference of @imageOffset.x@ and @extent.height@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10054# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR', -- the difference of @imageOffset.x@ and @extent.width@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10055# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR', -- the sum of @imageOffset.x@ and @extent.height@ does not equal the -- width of the subresource specified by @imageSubresource@, -- @extent.height@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-00208# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR', -- and the sum of @imageOffset.y@ and @extent.height@ does not equal -- the height of the subresource specified by @imageSubresource@, -- @extent.height@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10056# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR', -- the sum of @imageOffset.y@ and @extent.width@ does not equal the -- height of the subresource specified by @imageSubresource@, -- @extent.width@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10057# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR', -- the difference of @imageOffset.y@ and @extent.height@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageOffset-10058# For each element of -- @pRegions@, if -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@ -- is equal to -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR', -- the difference of @imageOffset.y@ and @extent.width@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-00209# For each element of -- @pRegions@, if the sum of @imageOffset.z@ and @extent.depth@ does -- not equal the depth of the subresource specified by -- @srcSubresource@, @extent.depth@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-imageSubresource-09105# For each -- element of @pRegions@, @imageSubresource.aspectMask@ /must/ specify -- aspects present in @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07981# If @srcImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>, -- then for each element of @pRegions@, @imageSubresource.aspectMask@ -- /must/ be a single valid -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask> -- bit -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07983# 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-bufferRowLength-09106# For each element -- of @pRegions@, @bufferRowLength@ /must/ be a multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-bufferImageHeight-09107# For each -- element of @pRegions@, @bufferImageHeight@ /must/ be a multiple of -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height> -- of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@ -- -- - #VUID-vkCmdCopyImageToBuffer-bufferRowLength-09108# For each element -- of @pRegions@, @bufferRowLength@ divided by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width> -- and then multiplied by the texel block size of @srcImage@ /must/ be -- less than or equal to 231-1 -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07975# If @srcImage@ does not -- have either a depth\/stencil format or a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>, -- then for each element of @pRegions@, @bufferOffset@ /must/ be a -- multiple of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size> -- -- - #VUID-vkCmdCopyImageToBuffer-srcImage-07976# If @srcImage@ has a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar 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-07978# 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations -- -- - #VUID-vkCmdCopyImageToBuffer-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdCopyImageToBuffer-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdCopyImageToBuffer-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdCopyImageToBuffer is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("regions" ::: Vector BufferImageCopy) -> io () cmdCopyImageToBuffer CommandBuffer commandBuffer "srcImage" ::: Image srcImage "srcImageLayout" ::: ImageLayout srcImageLayout Buffer dstBuffer "regions" ::: Vector BufferImageCopy regions = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdCopyImageToBufferPtr :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) vkCmdCopyImageToBufferPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) pVkCmdCopyImageToBuffer (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) vkCmdCopyImageToBufferPtr FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdCopyImageToBuffer is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdCopyImageToBuffer' :: Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO () vkCmdCopyImageToBuffer' = FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO () mkVkCmdCopyImageToBuffer FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Buffer -> ("firstViewport" ::: Word32) -> Ptr BufferImageCopy -> IO ()) vkCmdCopyImageToBufferPtr pPRegions <- ((Ptr BufferImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferImageCopy) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr BufferImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferImageCopy)) -> ((Ptr BufferImageCopy -> IO ()) -> IO ()) -> ContT () IO (Ptr BufferImageCopy) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @BufferImageCopy ((("regions" ::: Vector BufferImageCopy) -> Int forall a. Vector a -> Int Data.Vector.length ("regions" ::: Vector BufferImageCopy regions)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 56) lift $ Data.Vector.imapM_ (\Int i BufferImageCopy e -> Ptr BufferImageCopy -> BufferImageCopy -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr BufferImageCopy pPRegions Ptr BufferImageCopy -> Int -> Ptr BufferImageCopy forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 56 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr BufferImageCopy) (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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers copies>. -- -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers buffer to buffer copies> -- means it should only be used for very small amounts of data, and is why -- it is limited to at most 65536 bytes. Applications /can/ work around -- this restriction by issuing multiple 'cmdUpdateBuffer' commands to -- different ranges of the same buffer, but doing so is not recommended. -- -- The source data is copied from @pData@ to the command buffer when the -- command is called. -- -- 'cmdUpdateBuffer' is only allowed outside of a render pass. This command -- is treated as a “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 the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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 and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstBuffer@ /must/ not be a protected buffer -- -- - #VUID-vkCmdUpdateBuffer-commandBuffer-01814# If @commandBuffer@ is a -- protected command buffer and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations -- -- - #VUID-vkCmdUpdateBuffer-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdUpdateBuffer-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdUpdateBuffer-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdUpdateBuffer is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> io () cmdUpdateBuffer CommandBuffer commandBuffer Buffer dstBuffer "offset" ::: DeviceSize dstOffset "offset" ::: DeviceSize dataSize "data" ::: Ptr () data' = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdUpdateBufferPtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) vkCmdUpdateBufferPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) pVkCmdUpdateBuffer (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) vkCmdUpdateBufferPtr FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdUpdateBuffer is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdUpdateBuffer' :: Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO () vkCmdUpdateBuffer' = FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO () mkVkCmdUpdateBuffer FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()) vkCmdUpdateBufferPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdUpdateBuffer" (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO () vkCmdUpdateBuffer' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Buffer dstBuffer) ("offset" ::: DeviceSize dstOffset) ("offset" ::: DeviceSize dataSize) ("data" ::: Ptr () data')) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 a “transfer” operation for the purposes of -- synchronization barriers. It is only compatible with buffers created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT' -- usage flag set. -- -- == 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 the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #VUID-vkCmdFillBuffer-apiVersion-07894# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1> -- extension is not enabled and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@ -- is less than Vulkan 1.1, the 'Vulkan.Core10.Handles.CommandPool' -- that @commandBuffer@ was allocated from /must/ support graphics or -- compute operations -- -- - #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 and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstBuffer@ /must/ not be a protected buffer -- -- - #VUID-vkCmdFillBuffer-commandBuffer-01812# If @commandBuffer@ is a -- protected command buffer and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations -- -- - #VUID-vkCmdFillBuffer-renderpass# This command /must/ only be called -- outside of a render pass instance -- -- - #VUID-vkCmdFillBuffer-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdFillBuffer-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdFillBuffer is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> io () cmdFillBuffer CommandBuffer commandBuffer Buffer dstBuffer "offset" ::: DeviceSize dstOffset "offset" ::: DeviceSize size "firstViewport" ::: Word32 data' = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdFillBufferPtr :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdFillBufferPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdFillBuffer (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdFillBufferPtr FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdFillBuffer is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdFillBuffer' :: Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO () vkCmdFillBuffer' = FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdFillBuffer FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdFillBufferPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdFillBuffer" (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> IO () vkCmdFillBuffer' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Buffer dstBuffer) ("offset" ::: DeviceSize dstOffset) ("offset" ::: DeviceSize size) ("firstViewport" ::: Word32 data')) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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://registry.khronos.org/vulkan/specs/latest/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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #VUID-vkCmdClearColorImage-image-01545# @image@ /must/ not use any -- of the -- <https://registry.khronos.org/vulkan/specs/latest/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_SHARED_PRESENT_KHR', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' -- -- - #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 or equal to 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 or equal to 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 and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @image@ /must/ not be a protected image -- -- - #VUID-vkCmdClearColorImage-commandBuffer-01806# If @commandBuffer@ -- is a protected command buffer and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, /must/ not be an unprotected image -- -- - #VUID-vkCmdClearColorImage-image-09678# If @image@’s format has -- components other than R and G, it /must/ not have a 64-bit component -- width -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdClearColorImage-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdClearColorImage-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdClearColorImage-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdClearColorImage is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views Image Views>. ("ranges" ::: Vector ImageSubresourceRange) -> io () cmdClearColorImage :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ClearColorValue -> ("ranges" ::: Vector ImageSubresourceRange) -> io () cmdClearColorImage CommandBuffer commandBuffer "srcImage" ::: Image image "srcImageLayout" ::: ImageLayout imageLayout ClearColorValue color "ranges" ::: Vector ImageSubresourceRange ranges = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdClearColorImagePtr :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) vkCmdClearColorImagePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) pVkCmdClearColorImage (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) vkCmdClearColorImagePtr FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdClearColorImage is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdClearColorImage' :: Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO () vkCmdClearColorImage' = FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO () mkVkCmdClearColorImage FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearColorValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) vkCmdClearColorImagePtr pColor <- ((Ptr ClearColorValue -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearColorValue) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr ClearColorValue -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearColorValue)) -> ((Ptr ClearColorValue -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearColorValue) forall a b. (a -> b) -> a -> b $ ClearColorValue -> (Ptr ClearColorValue -> IO ()) -> IO () forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b forall b. ClearColorValue -> (Ptr ClearColorValue -> IO b) -> IO b withCStruct (ClearColorValue color) pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20) lift $ Data.Vector.imapM_ (\Int i ImageSubresourceRange e -> Ptr ImageSubresourceRange -> ImageSubresourceRange -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ImageSubresourceRange pPRanges Ptr ImageSubresourceRange -> Int -> Ptr ImageSubresourceRange forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 20 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ImageSubresourceRange) (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://registry.khronos.org/vulkan/specs/latest/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>, it must -- have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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>, the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag /must/ have been set 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', -- @image@ /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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 or equal to 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 or equal to 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 and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @image@ /must/ not be a protected image -- -- - #VUID-vkCmdClearDepthStencilImage-commandBuffer-01808# If -- @commandBuffer@ is a protected command buffer and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdClearDepthStencilImage-renderpass# This command /must/ -- only be called outside of a render pass instance -- -- - #VUID-vkCmdClearDepthStencilImage-suspended# This command /must/ not -- be called between suspended render pass instances -- -- - #VUID-vkCmdClearDepthStencilImage-videocoding# This command /must/ -- only be called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdClearDepthStencilImage is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views Image Views>. ("ranges" ::: Vector ImageSubresourceRange) -> io () cmdClearDepthStencilImage :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ClearDepthStencilValue -> ("ranges" ::: Vector ImageSubresourceRange) -> io () cmdClearDepthStencilImage CommandBuffer commandBuffer "srcImage" ::: Image image "srcImageLayout" ::: ImageLayout imageLayout ClearDepthStencilValue depthStencil "ranges" ::: Vector ImageSubresourceRange ranges = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdClearDepthStencilImagePtr :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) vkCmdClearDepthStencilImagePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) pVkCmdClearDepthStencilImage (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) vkCmdClearDepthStencilImagePtr FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdClearDepthStencilImage is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdClearDepthStencilImage' :: Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO () vkCmdClearDepthStencilImage' = FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO () mkVkCmdClearDepthStencilImage FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> Ptr ClearDepthStencilValue -> ("firstViewport" ::: Word32) -> Ptr ImageSubresourceRange -> IO ()) vkCmdClearDepthStencilImagePtr pDepthStencil <- ((Ptr ClearDepthStencilValue -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearDepthStencilValue) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr ClearDepthStencilValue -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearDepthStencilValue)) -> ((Ptr ClearDepthStencilValue -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearDepthStencilValue) forall a b. (a -> b) -> a -> b $ ClearDepthStencilValue -> (Ptr ClearDepthStencilValue -> IO ()) -> IO () forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b forall b. ClearDepthStencilValue -> (Ptr ClearDepthStencilValue -> IO b) -> IO b withCStruct (ClearDepthStencilValue depthStencil) pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20) lift $ Data.Vector.imapM_ (\Int i ImageSubresourceRange e -> Ptr ImageSubresourceRange -> ImageSubresourceRange -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ImageSubresourceRange pPRanges Ptr ImageSubresourceRange -> Int -> Ptr ImageSubresourceRange forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 20 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ImageSubresourceRange) (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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>, -- clears follow the -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears clear commands>, -- 'cmdClearAttachments' is not a transfer command. It performs its -- operations in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-order rasterization order>. -- For color attachments, the operations are executed as color attachment -- writes, by the -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' -- stage. For depth\/stencil attachments, the operations are executed as -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth depth writes> -- and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-stencil 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. -- -- It is generally preferable to clear attachments by using the -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' load -- operation at the start of rendering, as it is more efficient on some -- implementations. -- -- If any attachment’s @aspectMask@ to be cleared is not backed by an image -- view, the clear has no effect on that aspect. -- -- If an attachment being cleared refers to an image view created with an -- @aspectMask@ equal to one of -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT', -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT', it -- is considered to be -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' for -- purposes of this command, and /must/ be cleared with the -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' aspect -- as specified by -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#image-views-plane-promotion image view creation>. -- -- == Valid Usage -- -- - #VUID-vkCmdClearAttachments-aspectMask-07884# If the current render -- pass instance does not use dynamic rendering, and the @aspectMask@ -- member of any element of @pAttachments@ contains -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', -- the current subpass instance’s depth-stencil attachment /must/ be -- either 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' or the -- attachment @format@ /must/ contain a depth component -- -- - #VUID-vkCmdClearAttachments-aspectMask-07885# If the current render -- pass instance does not use dynamic rendering, and the @aspectMask@ -- member of any element of @pAttachments@ contains -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', -- the current subpass instance’s depth-stencil attachment /must/ be -- either 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' or the -- attachment @format@ /must/ contain a stencil component -- -- - #VUID-vkCmdClearAttachments-aspectMask-07271# If the @aspectMask@ -- member of any element of @pAttachments@ contains -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', -- the @colorAttachment@ /must/ be a valid color attachment index in -- the current render pass instance -- -- - #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-06937# The layers specified by -- each element of @pRects@ /must/ be contained within every attachment -- that @pAttachments@ refers to, i.e. for each element of @pRects@, -- 'ClearRect'::@baseArrayLayer@ + 'ClearRect'::@layerCount@ /must/ be -- less than or equal to the number of layers rendered to in the -- current render pass instance -- -- - #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 and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, each attachment to be cleared /must/ not be a -- protected image -- -- - #VUID-vkCmdClearAttachments-commandBuffer-02505# If @commandBuffer@ -- is a protected command buffer and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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 -- -- - #VUID-vkCmdClearAttachments-colorAttachment-09503# The -- @colorAttachment@ member of each element of @pAttachments@ /must/ -- not identify a color attachment that is currently mapped to -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' in @commandBuffer@ -- via -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingAttachmentLocationInfo' -- -- - #VUID-vkCmdClearAttachments-aspectMask-09298# If the subpass this is -- recorded in performs an external format resolve, the @aspectMask@ -- member of any element of @pAttachments@ /must/ not include -- @VK_IMAGE_ASPECT_PLANE_i_BIT@ for any index /i/ -- -- - #VUID-vkCmdClearAttachments-None-09679# If the attachment format has -- components other than R and G, it /must/ not have a 64-bit component -- width -- -- - #VUID-vkCmdClearAttachments-None-10616# This command /must/ not be -- recorded when -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdClearAttachments-renderpass# This command /must/ only be -- called inside of a render pass instance -- -- - #VUID-vkCmdClearAttachments-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdClearAttachments-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdClearAttachments is affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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. ("attachments" ::: Vector ClearAttachment) -> -- | @pRects@ is a pointer to an array of 'ClearRect' structures defining -- regions to clear for every attachment in @pAttachments@. ("rects" ::: Vector ClearRect) -> io () cmdClearAttachments :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("attachments" ::: Vector ClearAttachment) -> ("rects" ::: Vector ClearRect) -> io () cmdClearAttachments CommandBuffer commandBuffer "attachments" ::: Vector ClearAttachment attachments "rects" ::: Vector ClearRect rects = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdClearAttachmentsPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) vkCmdClearAttachmentsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) pVkCmdClearAttachments (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) vkCmdClearAttachmentsPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdClearAttachments is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdClearAttachments' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO () vkCmdClearAttachments' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO () mkVkCmdClearAttachments FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr ClearAttachment -> ("firstViewport" ::: Word32) -> Ptr ClearRect -> IO ()) vkCmdClearAttachmentsPtr pPAttachments <- ((Ptr ClearAttachment -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearAttachment) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr ClearAttachment -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearAttachment)) -> ((Ptr ClearAttachment -> IO ()) -> IO ()) -> ContT () IO (Ptr ClearAttachment) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @ClearAttachment ((("attachments" ::: Vector ClearAttachment) -> Int forall a. Vector a -> Int Data.Vector.length ("attachments" ::: Vector ClearAttachment attachments)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 24) Data.Vector.imapM_ (\Int i ClearAttachment e -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO ()) -> IO ()) -> ContT () IO ()) -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall a b. (a -> b) -> a -> b $ Ptr ClearAttachment -> ClearAttachment -> IO () -> IO () forall b. Ptr ClearAttachment -> ClearAttachment -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct (Ptr ClearAttachment pPAttachments Ptr ClearAttachment -> Int -> Ptr ClearAttachment forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ClearAttachment) (ClearAttachment e) (IO () -> IO ()) -> ((() -> IO ()) -> IO ()) -> (() -> IO ()) -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ ())) (attachments) pPRects <- ContT $ allocaBytes @ClearRect ((Data.Vector.length (rects)) * 24) lift $ Data.Vector.imapM_ (\Int i ClearRect e -> Ptr ClearRect -> ClearRect -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ClearRect pPRects Ptr ClearRect -> Int -> Ptr ClearRect forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ClearRect) (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 format is a floating-point or normalized type, the resolve -- mode is chosen as implementation-dependent behavior. If the resolve mode -- requires to calculate the result from multiple samples, such as by -- computing an average or weighted average of the samples, the values for -- each pixel are resolved with implementation-defined numerical precision. -- -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat numeric format> -- of @srcImage@ uses sRGB encoding and the resolve mode requires the -- implementation to convert the samples to floating-point to perform the -- calculations, the implementation /should/ convert samples from nonlinear -- to linear before resolving the samples as described in the “sRGB EOTF” -- section of the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#data-format Khronos Data Format Specification>. -- In this case, the implementation /must/ convert the linear averaged -- value to nonlinear before writing the resolved result to @dstImage@. If -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10> -- feature is enabled, whether a nonlinear to linear conversion happens for -- sRGB encoded resolve is controlled by -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resolveSrgbFormatAppliesTransferFunction resolveSrgbFormatAppliesTransferFunction>. -- -- If the source format is an integer type, 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 and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @srcImage@ /must/ not be a protected image -- -- - #VUID-vkCmdResolveImage-commandBuffer-01838# If @commandBuffer@ is -- an unprotected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @dstImage@ /must/ not be a protected image -- -- - #VUID-vkCmdResolveImage-commandBuffer-01839# If @commandBuffer@ is a -- protected command buffer and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, @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-maintenance10-11799# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10> -- feature is enabled, 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' -- or -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' -- -- - #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' -- if the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10> -- feature is not enabled -- -- - #VUID-vkCmdResolveImage-linearColorAttachment-06519# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment> -- feature is enabled and the image is created with -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' -- -- - #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# If -- @srcSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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# If -- @dstSubresource.layerCount@ is not -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', -- @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 @dstImage@ is of type -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element -- of @pRegions@, @srcSubresource.layerCount@ /must/ be @1@ -- -- - #VUID-vkCmdResolveImage-srcImage-04447# 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-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@ -- -- - #VUID-vkCmdResolveImage-srcImage-06762# @srcImage@ /must/ have been -- created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #VUID-vkCmdResolveImage-srcImage-06763# 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-vkCmdResolveImage-dstImage-06764# @dstImage@ /must/ have been -- created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #VUID-vkCmdResolveImage-dstImage-06765# 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-vkCmdResolveImage-srcSubresource-11800# -- @srcSubresource.aspectMask@ for each element in @pRegions@ /must/ -- not specify an aspect which is not part of the image format of -- @srcImage@ -- -- - #VUID-vkCmdResolveImage-dstSubresource-11801# -- @dstSubresource.aspectMask@ for each element in @pRegions@ /must/ -- not specify an aspect which is not part of the image format of -- @dstImage@ -- -- - #VUID-vkCmdResolveImage-srcSubresource-11802# -- @srcSubresource.aspectMask@ /must/ equal @dstSubresource.aspectMask@ -- for each element in @pRegions@ -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdResolveImage-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdResolveImage-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdResolveImage-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdResolveImage is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("regions" ::: Vector ImageResolve) -> io () cmdResolveImage CommandBuffer commandBuffer "srcImage" ::: Image srcImage "srcImageLayout" ::: ImageLayout srcImageLayout "srcImage" ::: Image dstImage "srcImageLayout" ::: ImageLayout dstImageLayout "regions" ::: Vector ImageResolve regions = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdResolveImagePtr :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) vkCmdResolveImagePtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) pVkCmdResolveImage (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) vkCmdResolveImagePtr FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdResolveImage is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdResolveImage' :: Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO () vkCmdResolveImage' = FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) -> Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO () mkVkCmdResolveImage FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("firstViewport" ::: Word32) -> Ptr ImageResolve -> IO ()) vkCmdResolveImagePtr pPRegions <- ((Ptr ImageResolve -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageResolve) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr ImageResolve -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageResolve)) -> ((Ptr ImageResolve -> IO ()) -> IO ()) -> ContT () IO (Ptr ImageResolve) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @ImageResolve ((("regions" ::: Vector ImageResolve) -> Int forall a. Vector a -> Int Data.Vector.length ("regions" ::: Vector ImageResolve regions)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 68) lift $ Data.Vector.imapM_ (\Int i ImageResolve e -> Ptr ImageResolve -> ImageResolve -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ImageResolve pPRegions Ptr ImageResolve -> Int -> Ptr ImageResolve forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 68 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ImageResolve) (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.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2', -- except that it does not define an access scope, and /must/ only be used -- with 'cmdWaitEvents', not -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'. -- -- == Valid Usage -- -- - #VUID-vkCmdSetEvent-stageMask-04090# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- 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 tessellationShader> -- 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 conditionalRendering> -- 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 fragmentDensityMap> -- 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 transformFeedback> -- 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 meshShader> -- feature is not enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT' -- -- - #VUID-vkCmdSetEvent-stageMask-04096# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is not enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT' -- -- - #VUID-vkCmdSetEvent-stageMask-07318# If neither of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate> -- features are enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #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-07949# If neither the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing> -- extension or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline> -- feature are enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdSetEvent-stageMask-10754# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure> -- feature is not enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' -- -- - #VUID-vkCmdSetEvent-stageMask-06457# 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages> -- -- - #VUID-vkCmdSetEvent-stageMask-01149# @stageMask@ /must/ not include -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' -- -- - #VUID-vkCmdSetEvent-commandBuffer-01152# The current device mask of -- @commandBuffer@ /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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdSetEvent-renderpass# This command /must/ only be called -- outside of a render pass instance -- -- - #VUID-vkCmdSetEvent-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Both | VK_QUEUE_COMPUTE_BIT | Synchronization | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdSetEvent is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages source stage mask> -- used to determine the first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>. ("stageMask" ::: PipelineStageFlags) -> io () cmdSetEvent :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Event -> ("stageMask" ::: PipelineStageFlags) -> io () cmdSetEvent CommandBuffer commandBuffer Event event "stageMask" ::: PipelineStageFlags stageMask = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdSetEventPtr :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdSetEventPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) pVkCmdSetEvent (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdSetEventPtr FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdSetEvent is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdSetEvent' :: Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO () vkCmdSetEvent' = FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) -> Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO () mkVkCmdSetEvent FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdSetEventPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdSetEvent" (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO () vkCmdSetEvent' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Event event) ("stageMask" ::: PipelineStageFlags stageMask)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2'. -- -- == Valid Usage -- -- - #VUID-vkCmdResetEvent-stageMask-04090# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- 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 tessellationShader> -- 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 conditionalRendering> -- 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 fragmentDensityMap> -- 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 transformFeedback> -- 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 meshShader> -- feature is not enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT' -- -- - #VUID-vkCmdResetEvent-stageMask-04096# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is not enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT' -- -- - #VUID-vkCmdResetEvent-stageMask-07318# If neither of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate> -- features are enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #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-07949# If neither the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing> -- extension or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline> -- feature are enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdResetEvent-stageMask-10754# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure> -- feature is not enabled, @stageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' -- -- - #VUID-vkCmdResetEvent-stageMask-06458# 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages> -- -- - #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.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2' -- 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdResetEvent-renderpass# This command /must/ only be called -- outside of a render pass instance -- -- - #VUID-vkCmdResetEvent-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Both | VK_QUEUE_COMPUTE_BIT | Synchronization | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdResetEvent is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages source stage mask> -- used to determine when the @event@ is unsignaled. ("stageMask" ::: PipelineStageFlags) -> io () cmdResetEvent :: forall (io :: * -> *). MonadIO io => CommandBuffer -> Event -> ("stageMask" ::: PipelineStageFlags) -> io () cmdResetEvent CommandBuffer commandBuffer Event event "stageMask" ::: PipelineStageFlags stageMask = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdResetEventPtr :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdResetEventPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) pVkCmdResetEvent (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdResetEventPtr FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdResetEvent is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdResetEvent' :: Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO () vkCmdResetEvent' = FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) -> Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO () mkVkCmdResetEvent FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdResetEventPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdResetEvent" (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO () vkCmdResetEvent' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (Event event) ("stageMask" ::: PipelineStageFlags stageMask)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 (SomeStruct BufferMemoryBarrier) -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr (SomeStruct 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 (SomeStruct BufferMemoryBarrier) -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr (SomeStruct 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 (SomeStruct BufferMemoryBarrier) -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr (SomeStruct 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages source stage mask>. ("srcStageMask" ::: PipelineStageFlags) -> -- | @dstStageMask@ is a bitmask of -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' -- specifying the -- <https://registry.khronos.org/vulkan/specs/latest/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 (SomeStruct BufferMemoryBarrier)) -> -- | @pImageMemoryBarriers@ is a pointer to an array of -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures. ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEventsSafeOrUnsafe :: forall (io :: * -> *). MonadIO io => (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> CommandBuffer -> ("events" ::: Vector Event) -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEventsSafeOrUnsafe FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () mkVkCmdWaitEvents CommandBuffer commandBuffer "events" ::: Vector Event events "stageMask" ::: PipelineStageFlags srcStageMask "stageMask" ::: PipelineStageFlags dstStageMask "memoryBarriers" ::: Vector MemoryBarrier memoryBarriers "bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier) bufferMemoryBarriers "imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier) imageMemoryBarriers = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdWaitEventsPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) vkCmdWaitEventsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) pVkCmdWaitEvents (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) vkCmdWaitEventsPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdWaitEvents is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdWaitEvents' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () vkCmdWaitEvents' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () mkVkCmdWaitEvents FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) vkCmdWaitEventsPtr pPEvents <- ((Ptr Event -> IO ()) -> IO ()) -> ContT () IO (Ptr Event) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr Event -> IO ()) -> IO ()) -> ContT () IO (Ptr Event)) -> ((Ptr Event -> IO ()) -> IO ()) -> ContT () IO (Ptr Event) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @Event ((("events" ::: Vector Event) -> Int forall a. Vector a -> Int Data.Vector.length ("events" ::: Vector Event events)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 8) lift $ Data.Vector.imapM_ (\Int i Event e -> Ptr Event -> Event -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Event pPEvents Ptr Event -> Int -> Ptr Event forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 8 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Event) (Event e)) (events) pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24) lift $ Data.Vector.imapM_ (\Int i MemoryBarrier e -> Ptr MemoryBarrier -> MemoryBarrier -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr MemoryBarrier pPMemoryBarriers Ptr MemoryBarrier -> Int -> Ptr MemoryBarrier forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr MemoryBarrier) (MemoryBarrier e)) (memoryBarriers) pPBufferMemoryBarriers <- ContT $ allocaBytes @(BufferMemoryBarrier _) ((Data.Vector.length (bufferMemoryBarriers)) * 56) Data.Vector.imapM_ (\Int i SomeStruct BufferMemoryBarrier e -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO ()) -> IO ()) -> ContT () IO ()) -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall a b. (a -> b) -> a -> b $ Ptr (SomeStruct BufferMemoryBarrier) -> SomeStruct BufferMemoryBarrier -> IO () -> IO () forall (a :: [*] -> *) b. (forall (es :: [*]). (Extendss a es, PokeChain es) => ToCStruct (a es)) => Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b pokeSomeCStruct (Ptr (BufferMemoryBarrier (ZonkAny 5)) -> Ptr (SomeStruct BufferMemoryBarrier) forall (a :: [*] -> *) (es :: [*]). Ptr (a es) -> Ptr (SomeStruct a) forgetExtensions (Ptr (BufferMemoryBarrier (ZonkAny 4)) pPBufferMemoryBarriers Ptr (BufferMemoryBarrier (ZonkAny 4)) -> Int -> Ptr (BufferMemoryBarrier w) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 56 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr (BufferMemoryBarrier _))) (SomeStruct BufferMemoryBarrier e) (IO () -> IO ()) -> ((() -> IO ()) -> IO ()) -> (() -> IO ()) -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ ())) (bufferMemoryBarriers) pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72) Data.Vector.imapM_ (\Int i SomeStruct ImageMemoryBarrier e -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO ()) -> IO ()) -> ContT () IO ()) -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall a b. (a -> b) -> a -> b $ Ptr (SomeStruct ImageMemoryBarrier) -> SomeStruct ImageMemoryBarrier -> IO () -> IO () forall (a :: [*] -> *) b. (forall (es :: [*]). (Extendss a es, PokeChain es) => ToCStruct (a es)) => Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b pokeSomeCStruct (Ptr (ImageMemoryBarrier (ZonkAny 7)) -> Ptr (SomeStruct ImageMemoryBarrier) forall (a :: [*] -> *) (es :: [*]). Ptr (a es) -> Ptr (SomeStruct a) forgetExtensions (Ptr (ImageMemoryBarrier (ZonkAny 6)) pPImageMemoryBarriers Ptr (ImageMemoryBarrier (ZonkAny 6)) -> Int -> Ptr (ImageMemoryBarrier w) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 72 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr (ImageMemoryBarrier _))) (SomeStruct ImageMemoryBarrier e) (IO () -> IO ()) -> ((() -> IO ()) -> IO ()) -> (() -> IO ()) -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ ())) (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)) (forgetExtensions (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.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2', -- 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. -- -- Since 'cmdSetEvent' does not have any dependency information beyond a -- stage mask, implementations do not have the same opportunity to perform -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations> -- or -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transitions> -- in advance as they do with -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2' and -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'. -- -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order> -- are included in the first synchronization scope, if the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-order logically latest> -- pipeline stage in their @stageMask@ parameter is -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-order logically earlier> -- than or equal to the -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands that occur later in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- The second synchronization scope is limited to operations on the -- pipeline stages determined by the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask> -- specified by @dstStageMask@. -- -- The first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope> -- is limited to accesses in the pipeline stages determined by the -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope> -- is limited to accesses in the pipeline stages determined by the -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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 geometryShader> -- 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 tessellationShader> -- 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 conditionalRendering> -- 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 fragmentDensityMap> -- 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 transformFeedback> -- 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 meshShader> -- feature is not enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT' -- -- - #VUID-vkCmdWaitEvents-srcStageMask-04096# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is not enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT' -- -- - #VUID-vkCmdWaitEvents-srcStageMask-07318# If neither of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate> -- features are enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #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-srcStageMask-07949# If neither the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing> -- extension or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline> -- feature are enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdWaitEvents-srcStageMask-10754# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure> -- feature is not enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' -- -- - #VUID-vkCmdWaitEvents-srcAccessMask-06257# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery> -- feature is not enabled and a memory barrier @srcAccessMask@ includes -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR', -- @srcStageMask@ /must/ not include any of the -- @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdWaitEvents-dstStageMask-04090# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- 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 tessellationShader> -- 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 conditionalRendering> -- 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 fragmentDensityMap> -- 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 transformFeedback> -- 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 meshShader> -- feature is not enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT' -- -- - #VUID-vkCmdWaitEvents-dstStageMask-04096# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is not enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT' -- -- - #VUID-vkCmdWaitEvents-dstStageMask-07318# If neither of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate> -- features are enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #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-dstStageMask-07949# If neither the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing> -- extension or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline> -- feature are enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdWaitEvents-dstStageMask-10754# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure> -- feature is not enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' -- -- - #VUID-vkCmdWaitEvents-dstAccessMask-06257# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery> -- feature is not enabled and a memory barrier @dstAccessMask@ includes -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR', -- @dstStageMask@ /must/ not include any of the -- @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #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 each 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 each 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 each 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 each 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-image-09373# If 'cmdWaitEvents' is called -- within a render pass instance using a -- 'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of -- any image memory barrier is a color resolve attachment, the -- corresponding color attachment /must/ be -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' -- -- - #VUID-vkCmdWaitEvents-image-09374# If 'cmdWaitEvents' is called -- within a render pass instance using a -- 'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of -- any image memory barrier is a color resolve attachment, it /must/ -- have been created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value -- -- - #VUID-vkCmdWaitEvents-oldLayout-01181# If 'cmdWaitEvents' 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-vkCmdWaitEvents-srcQueueFamilyIndex-01182# If 'cmdWaitEvents' -- is called within a render pass instance, the @srcQueueFamilyIndex@ -- and @dstQueueFamilyIndex@ members of any memory barrier included in -- this command /must/ be equal -- -- - #VUID-vkCmdWaitEvents-srcStageMask-06459# 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages> -- -- - #VUID-vkCmdWaitEvents-dstStageMask-06460# 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages> -- -- - #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-srcStageMask-07308# If this command is called -- inside a render pass instance, @srcStageMask@ /must/ not include -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' -- -- - #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.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2' -- -- - #VUID-vkCmdWaitEvents-None-10655# This command /must/ not be -- recorded when -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdWaitEvents-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Both | VK_QUEUE_COMPUTE_BIT | Synchronization | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdWaitEvents is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages source stage mask>. ("srcStageMask" ::: PipelineStageFlags) -> -- | @dstStageMask@ is a bitmask of -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' -- specifying the -- <https://registry.khronos.org/vulkan/specs/latest/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 (SomeStruct BufferMemoryBarrier)) -> -- | @pImageMemoryBarriers@ is a pointer to an array of -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures. ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEvents :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("events" ::: Vector Event) -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEvents = (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> CommandBuffer -> ("events" ::: Vector Event) -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () forall (io :: * -> *). MonadIO io => (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> CommandBuffer -> ("events" ::: Vector Event) -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEventsSafeOrUnsafe FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages source stage mask>. ("srcStageMask" ::: PipelineStageFlags) -> -- | @dstStageMask@ is a bitmask of -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' -- specifying the -- <https://registry.khronos.org/vulkan/specs/latest/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 (SomeStruct BufferMemoryBarrier)) -> -- | @pImageMemoryBarriers@ is a pointer to an array of -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures. ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEventsSafe :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("events" ::: Vector Event) -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEventsSafe = (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> CommandBuffer -> ("events" ::: Vector Event) -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () forall (io :: * -> *). MonadIO io => (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> CommandBuffer -> ("events" ::: Vector Event) -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdWaitEventsSafeOrUnsafe FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr Event -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () 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 (SomeStruct BufferMemoryBarrier) -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr (SomeStruct BufferMemoryBarrier) -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () -- | vkCmdPipelineBarrier - Insert a memory dependency -- -- = Description -- -- 'cmdPipelineBarrier' operates almost identically to -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdPipelineBarrier2', -- except that the scopes and barriers are defined as direct parameters -- rather than being defined by a -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo'. -- -- When 'cmdPipelineBarrier' is submitted to a queue, it defines a memory -- dependency between commands that were submitted to the same queue before -- it, and those submitted to the same queue after it. -- -- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the -- first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands that occur earlier in -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands that occur later in -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask> -- specified by @dstStageMask@. -- -- The first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope> -- is limited to accesses in the pipeline stages determined by the -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope> -- is limited to accesses in the pipeline stages determined by the -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space> -- pipeline stages is -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local> -- - otherwise it is -- <https://registry.khronos.org/vulkan/specs/latest/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 geometryShader> -- 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 tessellationShader> -- 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 conditionalRendering> -- 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 fragmentDensityMap> -- 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 transformFeedback> -- 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 meshShader> -- feature is not enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT' -- -- - #VUID-vkCmdPipelineBarrier-srcStageMask-04096# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is not enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT' -- -- - #VUID-vkCmdPipelineBarrier-srcStageMask-07318# If neither of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate> -- features are enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #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-srcStageMask-07949# If neither the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing> -- extension or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline> -- feature are enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdPipelineBarrier-srcStageMask-10754# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure> -- feature is not enabled, @srcStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' -- -- - #VUID-vkCmdPipelineBarrier-srcAccessMask-06257# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery> -- feature is not enabled and a memory barrier @srcAccessMask@ includes -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR', -- @srcStageMask@ /must/ not include any of the -- @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdPipelineBarrier-dstStageMask-04090# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader> -- 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 tessellationShader> -- 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 conditionalRendering> -- 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 fragmentDensityMap> -- 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 transformFeedback> -- 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 meshShader> -- feature is not enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT' -- -- - #VUID-vkCmdPipelineBarrier-dstStageMask-04096# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is not enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT' -- -- - #VUID-vkCmdPipelineBarrier-dstStageMask-07318# If neither of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate> -- features are enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #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-dstStageMask-07949# If neither the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing> -- extension or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline> -- feature are enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdPipelineBarrier-dstStageMask-10754# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure> -- feature is not enabled, @dstStageMask@ /must/ not contain -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' -- -- - #VUID-vkCmdPipelineBarrier-dstAccessMask-06257# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery> -- feature is not enabled and a memory barrier @dstAccessMask@ includes -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR', -- @dstStageMask@ /must/ not include any of the -- @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #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 each -- 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 each -- 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 each -- 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 each -- 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-image-09373# If 'cmdPipelineBarrier' is -- called within a render pass instance using a -- 'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of -- any image memory barrier is a color resolve attachment, the -- corresponding color attachment /must/ be -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' -- -- - #VUID-vkCmdPipelineBarrier-image-09374# If 'cmdPipelineBarrier' is -- called within a render pass instance using a -- 'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of -- any image memory barrier is a color resolve attachment, it /must/ -- have been created with a non-zero -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- value -- -- - #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 -- memory barrier included in this command /must/ be equal -- -- - #VUID-vkCmdPipelineBarrier-None-07889# If 'cmdPipelineBarrier' is -- called within a render pass instance using a -- 'Vulkan.Core10.Handles.RenderPass' object, the render pass /must/ -- have been created with at least one subpass dependency that -- expresses a dependency from the current subpass to itself, does not -- include -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT' if -- this command does not, does not include -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT' -- if this command does not, and has -- <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 using a -- 'Vulkan.Core10.Handles.RenderPass' object, it /must/ not include any -- buffer memory barriers -- -- - #VUID-vkCmdPipelineBarrier-image-04073# If 'cmdPipelineBarrier' is -- called within a render pass instance using a -- 'Vulkan.Core10.Handles.RenderPass' object, 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, color resolve, or depth\/stencil attachment -- -- - #VUID-vkCmdPipelineBarrier-None-07890# If 'cmdPipelineBarrier' is -- called within a render pass instance, and the source stage masks of -- any memory barriers include -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>, -- destination stage masks of all memory barriers /must/ only include -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages> -- -- - #VUID-vkCmdPipelineBarrier-dependencyFlags-07891# If -- 'cmdPipelineBarrier' is called within a render pass instance, and -- the source stage masks of any memory barriers include -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>, -- then @dependencyFlags@ /must/ include -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT' -- -- - #VUID-vkCmdPipelineBarrier-None-07892# If 'cmdPipelineBarrier' is -- called within a render pass instance, the source and destination -- stage masks of any memory barriers /must/ only include graphics -- pipeline stages -- -- - #VUID-vkCmdPipelineBarrier-dependencyFlags-01186# If -- 'cmdPipelineBarrier' is called outside of a render pass instance, -- the dependency flags /must/ not include -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT' -- -- - #VUID-vkCmdPipelineBarrier-None-07893# If 'cmdPipelineBarrier' is -- called inside a render pass instance, and there is more than one -- view in the current subpass, dependency flags /must/ include -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT' -- -- - #VUID-vkCmdPipelineBarrier-None-09553# If none of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageColorReadAccess shaderTileImageColorReadAccess>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageStencilReadAccess shaderTileImageStencilReadAccess>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageDepthReadAccess shaderTileImageDepthReadAccess> -- features are enabled, and the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead> -- feature is not enabled, 'cmdPipelineBarrier' /must/ not be called -- within a render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdPipelineBarrier-None-09554# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead> -- feature is not enabled, and 'cmdPipelineBarrier' is called within a -- render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- there /must/ be no buffer or image memory barriers specified by this -- command -- -- - #VUID-vkCmdPipelineBarrier-None-09586# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead> -- feature is not enabled, and 'cmdPipelineBarrier' is called within a -- render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- memory barriers specified by this command /must/ only include -- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT', -- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT', -- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT', -- or -- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' -- in their access masks -- -- - #VUID-vkCmdPipelineBarrier-image-09555# If 'cmdPipelineBarrier' is -- called within a render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and the @image@ member of any image memory barrier is used as an -- attachment in the current render pass instance, it /must/ be in the -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ' -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout -- -- - #VUID-vkCmdPipelineBarrier-srcStageMask-09556# If -- 'cmdPipelineBarrier' is called within a render pass instance started -- with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- this command /must/ only specify -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages> -- in @srcStageMask@ and @dstStageMask@ -- -- - #VUID-vkCmdPipelineBarrier-oldLayout-10758# If called within a -- render pass instance using a 'Vulkan.Core10.Handles.RenderPass' -- object, the @oldLayout@ member of any image memory barrier included -- in this command /must/ be equal to the layout that the corresponding -- attachment uses during the subpass -- -- - #VUID-vkCmdPipelineBarrier-oldLayout-10759# If called within a -- render pass instance started with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @oldLayout@ member of any image memory barrier included in this -- command /must/ be equal to the layout that the corresponding -- attachment uses during the render pass instance -- -- - #VUID-vkCmdPipelineBarrier-srcStageMask-06461# 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages> -- -- - #VUID-vkCmdPipelineBarrier-dstStageMask-06462# 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages> -- -- - #VUID-vkCmdPipelineBarrier-srcStageMask-09633# If either -- @srcStageMask@ or @dstStageMask@ includes -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT', -- for each element of @pImageMemoryBarriers@, @srcQueueFamilyIndex@ -- and @dstQueueFamilyIndex@ /must/ be equal -- -- - #VUID-vkCmdPipelineBarrier-srcStageMask-09634# If either -- @srcStageMask@ or @dstStageMask@ includes -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT', -- for each element of @pBufferMemoryBarriers@, @srcQueueFamilyIndex@ -- and @dstQueueFamilyIndex@ /must/ be equal -- -- - #VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-10388# If a buffer or -- image memory barrier specifies a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>, -- either the @srcQueueFamilyIndex@ or @dstQueueFamilyIndex@ member and -- the queue family index that was used to create the command pool that -- @commandBuffer@ was allocated from /must/ be equal -- -- - #VUID-vkCmdPipelineBarrier-maintenance8-10206# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance8 maintenance8> -- feature is not enabled, @dependencyFlags@ /must/ not include -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR' -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdPipelineBarrier-suspended# This command /must/ not be -- called between suspended render pass instances -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Both | VK_QUEUE_COMPUTE_BIT | Synchronization | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdPipelineBarrier is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks source stages>. ("srcStageMask" ::: PipelineStageFlags) -> -- | @dstStageMask@ is a bitmask of -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' -- specifying the -- <https://registry.khronos.org/vulkan/specs/latest/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 (SomeStruct BufferMemoryBarrier)) -> -- | @pImageMemoryBarriers@ is a pointer to an array of -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures. ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdPipelineBarrier :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier)) -> ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier)) -> io () cmdPipelineBarrier CommandBuffer commandBuffer "stageMask" ::: PipelineStageFlags srcStageMask "stageMask" ::: PipelineStageFlags dstStageMask DependencyFlags dependencyFlags "memoryBarriers" ::: Vector MemoryBarrier memoryBarriers "bufferMemoryBarriers" ::: Vector (SomeStruct BufferMemoryBarrier) bufferMemoryBarriers "imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier) imageMemoryBarriers = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdPipelineBarrierPtr :: FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) vkCmdPipelineBarrierPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) pVkCmdPipelineBarrier (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) vkCmdPipelineBarrierPtr FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdPipelineBarrier is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdPipelineBarrier' :: Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () vkCmdPipelineBarrier' = FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO () mkVkCmdPipelineBarrier FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> ("stageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("firstViewport" ::: Word32) -> Ptr MemoryBarrier -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct BufferMemoryBarrier) -> ("firstViewport" ::: Word32) -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) vkCmdPipelineBarrierPtr pPMemoryBarriers <- ((Ptr MemoryBarrier -> IO ()) -> IO ()) -> ContT () IO (Ptr MemoryBarrier) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr MemoryBarrier -> IO ()) -> IO ()) -> ContT () IO (Ptr MemoryBarrier)) -> ((Ptr MemoryBarrier -> IO ()) -> IO ()) -> ContT () IO (Ptr MemoryBarrier) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @MemoryBarrier ((("memoryBarriers" ::: Vector MemoryBarrier) -> Int forall a. Vector a -> Int Data.Vector.length ("memoryBarriers" ::: Vector MemoryBarrier memoryBarriers)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 24) lift $ Data.Vector.imapM_ (\Int i MemoryBarrier e -> Ptr MemoryBarrier -> MemoryBarrier -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr MemoryBarrier pPMemoryBarriers Ptr MemoryBarrier -> Int -> Ptr MemoryBarrier forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr MemoryBarrier) (MemoryBarrier e)) (memoryBarriers) pPBufferMemoryBarriers <- ContT $ allocaBytes @(BufferMemoryBarrier _) ((Data.Vector.length (bufferMemoryBarriers)) * 56) Data.Vector.imapM_ (\Int i SomeStruct BufferMemoryBarrier e -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO ()) -> IO ()) -> ContT () IO ()) -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall a b. (a -> b) -> a -> b $ Ptr (SomeStruct BufferMemoryBarrier) -> SomeStruct BufferMemoryBarrier -> IO () -> IO () forall (a :: [*] -> *) b. (forall (es :: [*]). (Extendss a es, PokeChain es) => ToCStruct (a es)) => Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b pokeSomeCStruct (Ptr (BufferMemoryBarrier (ZonkAny 1)) -> Ptr (SomeStruct BufferMemoryBarrier) forall (a :: [*] -> *) (es :: [*]). Ptr (a es) -> Ptr (SomeStruct a) forgetExtensions (Ptr (BufferMemoryBarrier (ZonkAny 0)) pPBufferMemoryBarriers Ptr (BufferMemoryBarrier (ZonkAny 0)) -> Int -> Ptr (BufferMemoryBarrier w) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 56 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr (BufferMemoryBarrier _))) (SomeStruct BufferMemoryBarrier e) (IO () -> IO ()) -> ((() -> IO ()) -> IO ()) -> (() -> IO ()) -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ ())) (bufferMemoryBarriers) pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72) Data.Vector.imapM_ (\Int i SomeStruct ImageMemoryBarrier e -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO ()) -> IO ()) -> ContT () IO ()) -> ((() -> IO ()) -> IO ()) -> ContT () IO () forall a b. (a -> b) -> a -> b $ Ptr (SomeStruct ImageMemoryBarrier) -> SomeStruct ImageMemoryBarrier -> IO () -> IO () forall (a :: [*] -> *) b. (forall (es :: [*]). (Extendss a es, PokeChain es) => ToCStruct (a es)) => Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b pokeSomeCStruct (Ptr (ImageMemoryBarrier (ZonkAny 3)) -> Ptr (SomeStruct ImageMemoryBarrier) forall (a :: [*] -> *) (es :: [*]). Ptr (a es) -> Ptr (SomeStruct a) forgetExtensions (Ptr (ImageMemoryBarrier (ZonkAny 2)) pPImageMemoryBarriers Ptr (ImageMemoryBarrier (ZonkAny 2)) -> Int -> Ptr (ImageMemoryBarrier w) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 72 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr (ImageMemoryBarrier _))) (SomeStruct ImageMemoryBarrier e) (IO () -> IO ()) -> ((() -> IO ()) -> IO ()) -> (() -> IO ()) -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ ())) (imageMemoryBarriers) lift $ traceAroundEvent "vkCmdPipelineBarrier" (vkCmdPipelineBarrier' (commandBufferHandle (commandBuffer)) (srcStageMask) (dstStageMask) (dependencyFlags) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (forgetExtensions (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://registry.khronos.org/vulkan/specs/latest/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. -- -- Furthermore, if the query is started within a video coding scope, the -- following command buffer states are initialized for the query type: -- -- - #queries-operation-active-query-index# The /active_query_index/ is -- set to the value specified by @query@. -- -- - #queries-operation-last-activatable-query-index# The /last -- activatable query index/ is also set to the value specified by -- @query@. -- -- Each -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-coding video coding operation> -- stores a result to the query corresponding to the current active query -- index, followed by incrementing the active query index. If the active -- query index gets incremented past the last activatable query index, -- issuing any further video coding operations results in undefined -- behavior. -- -- In practice, this means that currently no more than a single video -- coding operation /must/ be issued between a begin and end query pair. -- -- This command defines an execution dependency between other query -- commands that reference the same query. -- -- The first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands which reference the queries in @queryPool@ -- indicated by @query@ that occur earlier in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- The second -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands which reference the queries in @queryPool@ -- indicated by @query@ that occur later in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- The operation of this command happens after the first scope and happens -- before the second scope. -- -- == 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-06741# The @queryType@ used to -- create @queryPool@ /must/ not be -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR' -- or -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_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 occlusionQueryPrecise> -- 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-queryType-07126# If the @queryType@ used to -- create @queryPool@ was -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>, -- then the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ -- was allocated from /must/ have been created with a queue family -- index that supports -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-result-status-only result status queries>, -- as indicated by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>::@queryResultStatusSupport@ -- -- - #VUID-vkCmdBeginQuery-None-07127# If there is a bound video session, -- then there /must/ be no -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active> -- queries -- -- - #VUID-vkCmdBeginQuery-None-08370# If there is a bound video session, -- then it /must/ not have been created with -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateFlagBitsKHR VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR> -- -- - #VUID-vkCmdBeginQuery-queryType-07128# If the @queryType@ used to -- create @queryPool@ was -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR> -- and there is a bound video session, then @queryPool@ /must/ have -- been created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR> -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.Query.QueryPoolCreateInfo' identical to the one -- specified in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>::@pVideoProfile@ -- the bound video session was created with -- -- - #VUID-vkCmdBeginQuery-queryType-07129# If the @queryType@ used to -- create @queryPool@ was -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>, -- then there /must/ be a bound video session -- -- - #VUID-vkCmdBeginQuery-queryType-07130# If the @queryType@ used to -- create @queryPool@ was -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR> -- and there is a bound video session, then @queryPool@ /must/ have -- been created with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR> -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.Query.QueryPoolCreateInfo' identical to the one -- specified in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>::@pVideoProfile@ -- the bound video session was created with -- -- - #VUID-vkCmdBeginQuery-queryType-07131# If the @queryType@ used to -- create @queryPool@ was not -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>, -- then there /must/ be no bound video session -- -- - #VUID-vkCmdBeginQuery-None-10681# This command /must/ not be -- recorded when -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled -- -- - #VUID-vkCmdBeginQuery-queryPool-01922# @queryPool@ /must/ have been -- created with a @queryType@ that differs from that of any queries -- that are -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active> -- within @commandBuffer@ -- -- - #VUID-vkCmdBeginQuery-queryType-07070# If the @queryType@ used to -- create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT' -- the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support graphics operations -- -- - #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-queryType-06687# If the @queryType@ used to -- create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support graphics operations -- -- - #VUID-vkCmdBeginQuery-queryType-06688# If the @queryType@ used to -- create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- then -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitivesGeneratedQuery primitivesGeneratedQuery> -- /must/ be enabled -- -- - #VUID-vkCmdBeginQuery-queryPool-07289# If @queryPool@ was created -- with a @queryType@ of -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', -- then the -- 'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'::@queueFamilyIndex@ -- @queryPool@ was created with /must/ equal the queue family index of -- the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from -- -- - #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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdBeginQuery-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Both | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | State | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBeginQuery is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT', -- 'cmdEndQuery', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT' 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> io () cmdBeginQuery CommandBuffer commandBuffer QueryPool queryPool "firstViewport" ::: Word32 query QueryControlFlags flags = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBeginQueryPtr :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) vkCmdBeginQueryPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) pVkCmdBeginQuery (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) vkCmdBeginQueryPtr FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBeginQuery is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBeginQuery' :: Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO () vkCmdBeginQuery' = FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO () mkVkCmdBeginQuery FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO ()) vkCmdBeginQueryPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdBeginQuery" (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> IO () vkCmdBeginQuery' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (QueryPool queryPool) ("firstViewport" ::: Word32 query) (QueryControlFlags flags)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () -- | 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 :: forall (io :: * -> *) r. MonadIO io => CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> io r -> io r cmdUseQuery CommandBuffer commandBuffer QueryPool queryPool "firstViewport" ::: Word32 query QueryControlFlags flags io r a = (CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> QueryControlFlags -> io () cmdBeginQuery CommandBuffer commandBuffer QueryPool queryPool "firstViewport" ::: Word32 query QueryControlFlags flags) io () -> io r -> io r forall a b. io a -> io b -> io b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> io r a io r -> io () -> io r forall a b. io a -> io b -> io a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* (CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> io () cmdEndQuery CommandBuffer commandBuffer QueryPool queryPool "firstViewport" ::: Word32 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 -- -- The command completes the query in @queryPool@ identified by @query@, -- and marks it as available. -- -- This command defines an execution dependency between other query -- commands that reference the same query. -- -- The first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands which reference the queries in @queryPool@ -- indicated by @query@ that occur earlier in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- The second -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes only the operation of this command. -- -- Calling 'cmdEndQuery' is equivalent to calling -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT' with -- the @index@ parameter set to zero. -- -- == Valid Usage -- -- - #VUID-vkCmdEndQuery-None-01923# All queries used by the command -- /must/ be -- <https://registry.khronos.org/vulkan/specs/latest/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 -- -- - #VUID-vkCmdEndQuery-None-07007# If called within a subpass of a -- render pass instance, the corresponding 'cmdBeginQuery'* command -- /must/ have been called previously within the same subpass -- -- - #VUID-vkCmdEndQuery-None-10682# This command /must/ not be recorded -- when -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdEndQuery-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Both | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | State | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdEndQuery is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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', 'cmdBeginQuery', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT' 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> io () cmdEndQuery CommandBuffer commandBuffer QueryPool queryPool "firstViewport" ::: Word32 query = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdEndQueryPtr :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) vkCmdEndQueryPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdEndQuery (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) vkCmdEndQueryPtr FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdEndQuery is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdEndQuery' :: Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO () vkCmdEndQuery' = FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO () mkVkCmdEndQuery FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) vkCmdEndQueryPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdEndQuery" (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> IO () vkCmdEndQuery' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (QueryPool queryPool) ("firstViewport" ::: Word32 query)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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. -- -- This command defines an execution dependency between other query -- commands that reference the same query. -- -- The first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands which reference the queries in @queryPool@ -- indicated by @firstQuery@ and @queryCount@ that occur earlier in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- The second -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands which reference the queries in @queryPool@ -- indicated by @firstQuery@ and @queryCount@ that occur later in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- The operation of this command happens after the first scope and happens -- before the second scope. -- -- 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'. -- -- 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-09436# @firstQuery@ /must/ be -- less than the number of queries in @queryPool@ -- -- - #VUID-vkCmdResetQueryPool-firstQuery-09437# 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdResetQueryPool-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdResetQueryPool-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdResetQueryPool-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_OPTICAL_FLOW_BIT_NV | | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdResetQueryPool is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> io () cmdResetQueryPool CommandBuffer commandBuffer QueryPool queryPool "firstViewport" ::: Word32 firstQuery "firstViewport" ::: Word32 queryCount = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdResetQueryPoolPtr :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdResetQueryPoolPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdResetQueryPool (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdResetQueryPoolPtr FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdResetQueryPool is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdResetQueryPool' :: Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdResetQueryPool' = FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () mkVkCmdResetQueryPool FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO ()) vkCmdResetQueryPoolPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdResetQueryPool" (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () vkCmdResetQueryPool' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (QueryPool queryPool) ("firstViewport" ::: Word32 firstQuery) ("firstViewport" ::: Word32 queryCount)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 -- -- When 'cmdWriteTimestamp' is submitted to a queue, it defines an -- execution dependency on commands that were submitted before it, and -- writes a timestamp to a query pool. -- -- The first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands that occur earlier in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- The synchronization scope is limited to operations on the pipeline stage -- specified by @pipelineStage@. -- -- The second -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes only the timestamp write operation. -- -- Implementations may write the timestamp at any stage that is -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-order logically later> -- than @stage@. -- -- Any timestamp write that -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-execution happens-after> -- another timestamp write in the same submission /must/ not have a lower -- value unless its value overflows the maximum supported integer bit width -- of the query. If @VK_KHR_calibrated_timestamps@ or -- @VK_EXT_calibrated_timestamps@ is enabled, this extends to timestamp -- writes across all submissions on the same logical device: any timestamp -- write that -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-execution happens-after> -- another /must/ not have a lower value unless its value overflows the -- maximum supported integer bit width of the query. Timestamps written by -- this command /must/ be in the -- 'Vulkan.Extensions.VK_EXT_present_timing.TIME_DOMAIN_DEVICE_KHR' -- <VkTimeDomainKHR.html time domain>. If an overflow occurs, the timestamp -- value /must/ wrap back to zero. -- -- 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 or dynamic render pass 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. -- -- - All N queries are timestamp values. -- -- Either way, if two timestamps are written in the same subpass or dynamic -- render pass with multiview enabled, each of the N consecutive queries -- written for a timestamp /must/ not have a lower value than the queries -- with corresponding indices written by the timestamp that happens-before -- unless the value overflows the maximum supported integer bit width of -- the query. -- -- == 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 geometryShader> -- 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 tessellationShader> -- 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 conditionalRendering> -- 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 fragmentDensityMap> -- 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 transformFeedback> -- 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 meshShader> -- feature is not enabled, @pipelineStage@ /must/ not be -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT' -- -- - #VUID-vkCmdWriteTimestamp-pipelineStage-07077# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader> -- feature is not enabled, @pipelineStage@ /must/ not be -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT' -- -- - #VUID-vkCmdWriteTimestamp-shadingRateImage-07314# If neither of the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage> -- or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate> -- features are enabled, @pipelineStage@ /must/ not be -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- - #VUID-vkCmdWriteTimestamp-synchronization2-06489# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2> -- feature is not enabled, @pipelineStage@ /must/ not be -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_NONE' -- -- - #VUID-vkCmdWriteTimestamp-rayTracingPipeline-07943# If neither of -- the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing> -- extension or the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline> -- feature are enabled, @pipelineStage@ /must/ not be -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' -- -- - #VUID-vkCmdWriteTimestamp-queryPool-01416# @queryPool@ /must/ have -- been created with a @queryType@ of -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP' -- -- - #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@ -- -- - #VUID-vkCmdWriteTimestamp-None-10640# This command /must/ not be -- recorded when -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR> -- operations -- -- - #VUID-vkCmdWriteTimestamp-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Both | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_OPTICAL_FLOW_BIT_NV | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- | | | | VK_QUEUE_VIDEO_DECODE_BIT_KHR | | -- | | | | VK_QUEUE_VIDEO_ENCODE_BIT_KHR | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdWriteTimestamp is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> io () cmdWriteTimestamp CommandBuffer commandBuffer "stageMask" ::: PipelineStageFlags pipelineStage QueryPool queryPool "firstViewport" ::: Word32 query = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdWriteTimestampPtr :: FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) vkCmdWriteTimestampPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) pVkCmdWriteTimestamp (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) vkCmdWriteTimestampPtr FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdWriteTimestamp is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdWriteTimestamp' :: Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO () vkCmdWriteTimestamp' = FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO () mkVkCmdWriteTimestamp FunPtr (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO ()) vkCmdWriteTimestampPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdWriteTimestamp" (Ptr CommandBuffer_T -> ("stageMask" ::: PipelineStageFlags) -> QueryPool -> ("firstViewport" ::: Word32) -> IO () vkCmdWriteTimestamp' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("stageMask" ::: PipelineStageFlags pipelineStage) (QueryPool queryPool) ("firstViewport" ::: Word32 query)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 -- -- Any results written for a query are written according to -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-memorylayout a layout dependent on the query type>. -- -- Results for any query in @queryPool@ identified by @firstQuery@ and -- @queryCount@ that is available are copied to @dstBuffer@. -- -- If -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT' -- is set, results for all queries in @queryPool@ identified by -- @firstQuery@ and @queryCount@ are copied to @dstBuffer@, along with an -- extra availability value written directly after the results of each -- query and interpreted as an unsigned integer. A value of zero indicates -- that the results are not yet available, otherwise the query is complete -- and results are available. -- -- If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR> -- is set, results for all queries in @queryPool@ identified by -- @firstQuery@ and @queryCount@ are copied to @dstBuffer@, along with an -- extra status value written directly after the results of each query and -- interpreted as a signed integer. A value of zero indicates that the -- results are not yet available. Positive values indicate that the -- operations within the query completed successfully, and the query -- results are valid. Negative values indicate that the operations within -- the query completed unsuccessfully. -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultStatusKHR VkQueryResultStatusKHR> -- defines specific meaning for values returned here, though -- implementations are free to return other values. -- -- If the status value written is negative, indicating that the operations -- within the query completed unsuccessfully, then all other results -- written by this command are undefined unless otherwise specified for any -- of the results of the used query type. -- -- Results for any available query written by this command are final and -- represent the final result of the query. If -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT' is -- set, then for any query that is unavailable, an intermediate result -- between zero and the final result value is written for that query. -- Otherwise, any result written by this command is undefined. -- -- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set, -- results and availability or status values for all queries are written as -- an array of 64-bit values. If the @queryPool@ was created with -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', -- results for each query are written as an array of the type indicated by -- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR'::@storage@ -- for the counter being queried. Otherwise, results and availability or -- status values are written as an array of 32-bit values. If an unsigned -- integer query’s value overflows the result type, the value /may/ either -- wrap or saturate. If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7> -- feature is enabled, for an unsigned integer query, the 32-bit result -- value /must/ be equal to the 32 least significant bits of the equivalent -- 64-bit result value. If a signed integer query’s value overflows the -- result type, the value is undefined. If a floating-point query’s value -- is not representable as the result type, the value is undefined. -- -- This command defines an execution dependency between other query -- commands that reference the same query. -- -- The first -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands which reference the queries in @queryPool@ -- indicated by @query@ that occur earlier in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- If @flags@ does not include -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT', -- 'cmdEndQuery', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT', -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV', -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdWriteMicromapsPropertiesEXT', -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2', -- and 'cmdWriteTimestamp' are excluded from this scope. -- -- The second -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope> -- includes all commands which reference the queries in @queryPool@ -- indicated by @query@ that occur later in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- The operation of this command happens after the first scope and happens -- before the second scope. -- -- '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-firstQuery-09436# @firstQuery@ -- /must/ be less than the number of queries in @queryPool@ -- -- - #VUID-vkCmdCopyQueryPoolResults-firstQuery-09437# The sum of -- @firstQuery@ and @queryCount@ /must/ be less than or equal to the -- number of queries in @queryPool@ -- -- - #VUID-vkCmdCopyQueryPoolResults-queryCount-09438# If @queryCount@ is -- greater than 1, @stride@ /must/ not be zero -- -- - #VUID-vkCmdCopyQueryPoolResults-queryType-09439# 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-09440# 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', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>, -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT', -- or 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' -- -- - #VUID-vkCmdCopyQueryPoolResults-queryType-09441# If the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', -- the @queryPool@ /must/ have been recorded once for each pass as -- retrieved via a call to -- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR' -- -- - #VUID-vkCmdCopyQueryPoolResults-queryType-11874# If the @queryType@ -- used to create @queryPool@ was not -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>, -- then @flags@ /must/ not include -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR> -- -- - #VUID-vkCmdCopyQueryPoolResults-queryType-09442# If the @queryType@ -- used to create @queryPool@ was -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>, -- then @flags@ /must/ include -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR> -- -- - #VUID-vkCmdCopyQueryPoolResults-flags-09443# If @flags@ includes -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>, -- then it /must/ not include -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT' -- -- - #VUID-vkCmdCopyQueryPoolResults-None-09402# All queries used by the -- command /must/ not be uninitialized when the command is executed -- -- - #VUID-vkCmdCopyQueryPoolResults-dstOffset-00819# @dstOffset@ /must/ -- be less than the size of @dstBuffer@ -- -- - #VUID-vkCmdCopyQueryPoolResults-flags-00822# If -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not -- set in @flags@ then @dstOffset@ /must/ be a multiple of @4@ -- -- - #VUID-vkCmdCopyQueryPoolResults-queryCount-12254# If @queryCount@ is -- greater than 1 and -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not -- set in @flags@ then @stride@ /must/ be a multiple of @4@ -- -- - #VUID-vkCmdCopyQueryPoolResults-flags-00823# If -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set -- in @flags@ then @dstOffset@ /must/ be a multiple of @8@ -- -- - #VUID-vkCmdCopyQueryPoolResults-queryCount-12255# If @queryCount@ is -- greater than 1 and -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set -- in @flags@ then @stride@ /must/ be a multiple of @8@ -- -- - #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824# @dstBuffer@ /must/ -- have enough storage, from @dstOffset@, to contain the result of each -- query, as described -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-memorylayout here> -- -- - #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825# @dstBuffer@ /must/ -- have been created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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-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-02734# -- 'cmdCopyQueryPoolResults' /must/ not be called if the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL' -- -- - #VUID-vkCmdCopyQueryPoolResults-None-07429# All queries used by the -- command /must/ not be active -- -- - #VUID-vkCmdCopyQueryPoolResults-None-08752# All queries used by the -- command /must/ have been made /available/ by prior executed commands -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdCopyQueryPoolResults-renderpass# This command /must/ only -- be called outside of a render pass instance -- -- - #VUID-vkCmdCopyQueryPoolResults-suspended# This command /must/ not -- be called between suspended render pass instances -- -- - #VUID-vkCmdCopyQueryPoolResults-videocoding# This command /must/ -- only be called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdCopyQueryPoolResults is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> io () cmdCopyQueryPoolResults CommandBuffer commandBuffer QueryPool queryPool "firstViewport" ::: Word32 firstQuery "firstViewport" ::: Word32 queryCount Buffer dstBuffer "offset" ::: DeviceSize dstOffset "offset" ::: DeviceSize stride QueryResultFlags flags = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdCopyQueryPoolResultsPtr :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) vkCmdCopyQueryPoolResultsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) pVkCmdCopyQueryPoolResults (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) vkCmdCopyQueryPoolResultsPtr FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdCopyQueryPoolResults is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdCopyQueryPoolResults' :: Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO () vkCmdCopyQueryPoolResults' = FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO () mkVkCmdCopyQueryPoolResults FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO ()) vkCmdCopyQueryPoolResultsPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdCopyQueryPoolResults" (Ptr CommandBuffer_T -> QueryPool -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> Buffer -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> QueryResultFlags -> IO () vkCmdCopyQueryPoolResults' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (QueryPool queryPool) ("firstViewport" ::: Word32 firstQuery) ("firstViewport" ::: Word32 queryCount) (Buffer dstBuffer) ("offset" ::: DeviceSize dstOffset) ("offset" ::: DeviceSize stride) (QueryResultFlags flags)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/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. -- -- 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-commandBuffer-11295# If @commandBuffer@ is -- a secondary command buffer, it /must/ have begun with -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@ -- equal to @NULL@ -- -- - #VUID-vkCmdPushConstants-commandBuffer-11296# If @commandBuffer@ is -- a secondary command buffer, it /must/ have begun with -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@ -- equal to @NULL@ -- -- - #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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdPushConstants-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT | State | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdPushConstants is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> io () cmdPushConstants CommandBuffer commandBuffer PipelineLayout layout ShaderStageFlags stageFlags "firstViewport" ::: Word32 offset "firstViewport" ::: Word32 size "data" ::: Ptr () values = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdPushConstantsPtr :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) vkCmdPushConstantsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) pVkCmdPushConstants (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) vkCmdPushConstantsPtr FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdPushConstants is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdPushConstants' :: Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO () vkCmdPushConstants' = FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) -> Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO () mkVkCmdPushConstants FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()) vkCmdPushConstantsPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdPushConstants" (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("data" ::: Ptr ()) -> IO () vkCmdPushConstants' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (PipelineLayout layout) (ShaderStageFlags stageFlags) ("firstViewport" ::: Word32 offset) ("firstViewport" ::: Word32 size) ("data" ::: Ptr () values)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' -- usage flag set -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flag set -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flag set -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flag set -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' -- usage flags set -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' -- usage flag set -- -- - #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 the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage flag set -- -- - #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-06451# The @srcStageMask@ -- 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-dstStageMask-06452# The @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 -- -- - #VUID-vkCmdBeginRenderPass-framebuffer-09045# If any attachments -- specified in @framebuffer@ are used by @renderPass@ and are bound to -- overlapping memory locations, there /must/ be only one that is used -- as a color attachment, depth\/stencil, or resolve attachment in any -- subpass -- -- - #VUID-vkCmdBeginRenderPass-initialLayout-07000# 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- then the corresponding attachment image view of the framebuffer -- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/ -- have been created with either the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' -- or -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flags set, and either the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' -- or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' -- usage flags set -- -- - #VUID-vkCmdBeginRenderPass-initialLayout-07001# 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' -- then the corresponding attachment image view of the framebuffer -- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/ -- have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' -- usage flag set -- -- - #VUID-vkCmdBeginRenderPass-initialLayout-09537# 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_RENDERING_LOCAL_READ' -- then the corresponding attachment image view of the framebuffer -- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/ -- have been created with either the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT' -- usage flag set, or both the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' -- and either of -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' -- or -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flags set -- -- - #VUID-vkCmdBeginRenderPass-contents-09640# If @contents@ is -- 'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR', -- then at least one of the following features /must/ be enabled: -- -- - <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7> -- -- - <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer> -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBeginRenderPass-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdBeginRenderPass-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdBeginRenderPass-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | | | | | State | -- | | | | | Synchronization | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBeginRenderPass is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (a :: [*]) (io :: * -> *). (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io () cmdBeginRenderPass CommandBuffer commandBuffer RenderPassBeginInfo a renderPassBegin SubpassContents contents = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBeginRenderPassPtr :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) vkCmdBeginRenderPassPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) pVkCmdBeginRenderPass (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) vkCmdBeginRenderPassPtr FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBeginRenderPass is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBeginRenderPass' :: Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO () vkCmdBeginRenderPass' = FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO () mkVkCmdBeginRenderPass FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) vkCmdBeginRenderPassPtr pRenderPassBegin <- ((Ptr (RenderPassBeginInfo a) -> IO ()) -> IO ()) -> ContT () IO (Ptr (RenderPassBeginInfo a)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (RenderPassBeginInfo a) -> IO ()) -> IO ()) -> ContT () IO (Ptr (RenderPassBeginInfo a))) -> ((Ptr (RenderPassBeginInfo a) -> IO ()) -> IO ()) -> ContT () IO (Ptr (RenderPassBeginInfo a)) forall a b. (a -> b) -> a -> b $ RenderPassBeginInfo a -> (Ptr (RenderPassBeginInfo a) -> IO ()) -> IO () forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b forall b. RenderPassBeginInfo a -> (Ptr (RenderPassBeginInfo a) -> IO b) -> IO b withCStruct (RenderPassBeginInfo a 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 :: forall (a :: [*]) (io :: * -> *) r. (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io r -> io r cmdUseRenderPass CommandBuffer commandBuffer RenderPassBeginInfo a pRenderPassBegin SubpassContents contents io r a = (CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io () forall (a :: [*]) (io :: * -> *). (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io () cmdBeginRenderPass CommandBuffer commandBuffer RenderPassBeginInfo a pRenderPassBegin SubpassContents contents) io () -> io r -> io r forall a b. io a -> io b -> io b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> io r a io r -> io () -> io r forall a b. io a -> io b -> io a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* (CommandBuffer -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> io () cmdEndRenderPass CommandBuffer 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. -- -- 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdNextSubpass-renderpass# This command /must/ only be -- called inside of a render pass instance -- -- - #VUID-vkCmdNextSubpass-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdNextSubpass-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | | | | | State | -- | | | | | Synchronization | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdNextSubpass is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> SubpassContents -> io () cmdNextSubpass CommandBuffer commandBuffer SubpassContents contents = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdNextSubpassPtr :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) vkCmdNextSubpassPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) pVkCmdNextSubpass (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) vkCmdNextSubpassPtr FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdNextSubpass is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdNextSubpass' :: Ptr CommandBuffer_T -> SubpassContents -> IO () vkCmdNextSubpass' = FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> SubpassContents -> IO () mkVkCmdNextSubpass FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) vkCmdNextSubpassPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdNextSubpass" (Ptr CommandBuffer_T -> SubpassContents -> IO () vkCmdNextSubpass' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (SubpassContents contents)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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. -- -- There is no implicit ordering between separate render passes, even in -- the same command buffer, and even when the attachments match. Some -- applications rely on the continuation of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order rasterization order> -- between multiple render passes with attachments defined in the same way, -- in order to perform non-rendering operations (such as copies or compute -- operations) between draw calls, but this has never been required by the -- specification. There is also no explicit barrier currently in the API -- that provides the guarantee that applications rely on without additional -- performance penalties. -- -- New applications should avoid relying on this ordering until an -- appropriate barrier is added to the API. -- -- Implementations where applications are performing this splitting are -- encouraged to continue supporting this guarantee until a suitable -- barrier is added to the API. -- -- Existing applications relying on this ordering should expect that it -- will continue working on platforms where it currently does. Once a new -- extension adds support for a new barrier, developers are encouraged to -- adapt their applications to use this when available. -- -- == 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.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdEndRenderPass-None-07004# If 'cmdBeginQuery'* was called -- within a subpass of the render pass, the corresponding -- 'cmdEndQuery'* /must/ have been called subsequently within the same -- subpass -- -- - #VUID-vkCmdEndRenderPass-None-10653# This command /must/ not be -- recorded when -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled -- -- == 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 -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdEndRenderPass-renderpass# This command /must/ only be -- called inside of a render pass instance -- -- - #VUID-vkCmdEndRenderPass-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdEndRenderPass-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | | | | | State | -- | | | | | Synchronization | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdEndRenderPass is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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 :: forall (io :: * -> *). MonadIO io => CommandBuffer -> io () cmdEndRenderPass CommandBuffer commandBuffer = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdEndRenderPassPtr :: FunPtr (Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderPassPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> IO ()) pVkCmdEndRenderPass (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderPassPtr FunPtr (Ptr CommandBuffer_T -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdEndRenderPass is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdEndRenderPass' :: Ptr CommandBuffer_T -> IO () vkCmdEndRenderPass' = FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO () mkVkCmdEndRenderPass FunPtr (Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderPassPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdEndRenderPass" (Ptr CommandBuffer_T -> IO () vkCmdEndRenderPass' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer))) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle executable or recording state>, -- that primary command buffer becomes -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle invalid>. -- -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer> -- feature is enabled it is valid usage for 'cmdExecuteCommands' to also be -- recorded to a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary secondary command buffer>. -- -- == 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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 this command is -- 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 this command is -- 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-09680# If this command is called -- within a render pass instance begun with 'cmdBeginRenderPass', and -- 'cmdNextSubpass' has not been called in the current render pass -- instance, the @contents@ parameter of 'cmdBeginRenderPass' /must/ -- have been -- 'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS' -- , or -- 'Vulkan.Extensions.VK_EXT_nested_command_buffer.SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT' -- -- - #VUID-vkCmdExecuteCommands-None-09681# If this command is called -- within a render pass instance begun with 'cmdBeginRenderPass', and -- 'cmdNextSubpass' has been called in the current render pass -- instance, the @contents@ parameter of the last call to -- 'cmdNextSubpass' /must/ have been -- 'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS' -- , or -- 'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR' -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-06019# If this command is -- 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 this command is -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-compatibility compatible> -- with the current render pass -- -- - #VUID-vkCmdExecuteCommands-pNext-02865# If this command is 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 this command is 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 this command is 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-inheritedQueries inheritedQueries> -- feature is not enabled, @commandBuffer@ /must/ not have any queries -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active> -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-00102# If @commandBuffer@ -- has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active> -- in @commandBuffer@ -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-07594# @commandBuffer@ -- /must/ not have any queries other than -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' and -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active> -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-01820# If @commandBuffer@ -- is a protected command buffer and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, each element of @pCommandBuffers@ /must/ be a -- protected command buffer -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-01821# If @commandBuffer@ -- is an unprotected command buffer and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault> -- is not supported, 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-commandBuffer-06533# If this command is -- called within a render pass instance and any recorded command in -- @commandBuffer@ in the current subpass will write to an image -- subresource as an attachment, commands recorded in elements of -- @pCommandBuffers@ /must/ not read from the memory backing that image -- subresource in any other way -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-06534# If this command is -- called within a render pass instance and any recorded command in -- @commandBuffer@ in the current subpass will read from an image -- subresource used as an attachment in any way other than as an -- attachment, commands recorded in elements of @pCommandBuffers@ -- /must/ not write to that image subresource as an attachment -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-06535# If this command is -- called within a render pass instance and any recorded command in a -- given element of @pCommandBuffers@ will write to an image -- subresource as an attachment, commands recorded in elements of -- @pCommandBuffers@ at a higher index /must/ not read from the memory -- backing that image subresource in any other way -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-06536# If this command is -- called within a render pass instance and any recorded command in a -- given element of @pCommandBuffers@ will read from an image -- subresource used as an attachment in any way other than as an -- attachment, commands recorded in elements of @pCommandBuffers@ at a -- higher index /must/ not write to that image subresource as an -- attachment -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-06021# If -- @pCommandBuffers@ contains any -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-variableSampleLocations variableSampleLocations> -- limit is not supported, and any element of @pCommandBuffers@ -- contains any -- <https://registry.khronos.org/vulkan/specs/latest/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 this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- its -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- parameter /must/ have included -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' -- -- - #VUID-vkCmdExecuteCommands-pBeginInfo-06025# If this command is -- called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 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 this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @flags@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- 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.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- excluding -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' -- -- - #VUID-vkCmdExecuteCommands-colorAttachmentCount-06027# If this -- command is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @colorAttachmentCount@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- 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.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdExecuteCommands-imageView-06028# If this command is -- called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- if the @imageView@ member of an element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding -- element of the @pColorAttachmentFormats@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- 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-imageView-07606# If this command is -- called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- if the @imageView@ member of an element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding -- element of the @pColorAttachmentFormats@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@ -- used to begin recording each element of @pCommandBuffers@ /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdExecuteCommands-pDepthAttachment-06029# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthAttachmentFormat@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- 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 this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @stencilAttachmentFormat@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- 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-06774# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthAttachmentFormat@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@ -- used to begin recording each element of @pCommandBuffers@ /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdExecuteCommands-pStencilAttachment-06775# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @stencilAttachmentFormat@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@ -- used to begin recording each element of @pCommandBuffers@ /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-11500# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, then each element of -- @pCommandBuffers@ /must/ have been recorded with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- struct chained to its -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-11501# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and does not contain a custom resolve, then each element of -- @pCommandBuffers@ /must/ not have been recorded with a -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- struct chained to its -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-11502# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, then each element of -- @pCommandBuffers@ /must/ have been recorded with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-11503# If the current -- render pass instance was begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and contains a custom resolve, and -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not been recorded in the render pass instance, then each element -- of @pCommandBuffers@ /must/ have been recorded with -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@ -- as 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- - #VUID-vkCmdExecuteCommands-colorAttachmentCount-11532# If this -- command is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- that contains a custom resolve, the @colorAttachmentCount@ member of -- the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- 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.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdExecuteCommands-resolveImageView-11533# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- that contains a custom resolve, if the @resolveImageView@ member of -- an element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding -- element of the @pColorAttachmentFormats@ member of the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- 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-resolveImageView-11534# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- that contains a custom resolve, if the @resolveImageView@ member of -- an element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding -- element of the @pColorAttachmentFormats@ member of the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@ -- used to begin recording each element of @pCommandBuffers@ /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdExecuteCommands-pDepthAttachment-11535# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthAttachmentFormat@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- 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-11536# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- that contains a custom resolve, if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @stencilAttachmentFormat@ member of the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- 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-11537# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- that contains a custom resolve and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthAttachmentFormat@ member of the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@ -- used to begin recording each element of @pCommandBuffers@ /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdExecuteCommands-pStencilAttachment-11538# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- that contains a custom resolve and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @stencilAttachmentFormat@ member of the -- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT' -- structure included in the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@ -- used to begin recording each element of @pCommandBuffers@ /must/ be -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- - #VUID-vkCmdExecuteCommands-resolveImageView-11526# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, and the -- @resolveImageView@ member of an element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@ -- /must/ be equal to the sample count used to create that -- @resolveImageView@ -- -- - #VUID-vkCmdExecuteCommands-pDepthAttachment-11527# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@ -- /must/ be equal to the sample count used to create that image view -- -- - #VUID-vkCmdExecuteCommands-pStencilAttachment-11528# If this command -- is called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has been recorded in the render pass instance, and the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@ -- /must/ be equal to the sample count used to create that image view -- -- - #VUID-vkCmdExecuteCommands-viewMask-06031# If this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the @viewMask@ member of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo' -- 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.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- -- - #VUID-vkCmdExecuteCommands-pNext-06032# If this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes -- a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, if the @imageView@ member of an element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding -- element of the @pColorAttachmentSamples@ member of the -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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 this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes -- a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of the -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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 this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes -- a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the -- @depthStencilAttachmentSamples@ member of the -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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 this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- and the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not -- include a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and if the -- @imageView@ member of an element of the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@ -- /must/ be equal to the sample count used to create that image view -- -- - #VUID-vkCmdExecuteCommands-pNext-06036# If this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not -- include a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@ -- /must/ be equal to the sample count used to create that image view -- -- - #VUID-vkCmdExecuteCommands-pNext-06037# If this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- and the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not -- include a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' -- has not yet been recorded in the render pass instance, and if the -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@ -- parameter to -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@ -- /must/ be equal to the sample count used to create that image view -- -- - #VUID-vkCmdExecuteCommands-pNext-09299# If this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- with any color attachment using a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' used to -- create each element of @pCommandBuffers@ /must/ include a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' -- structure with an @externalFormat@ matching that used to create the -- resolve attachment in the render pass -- -- - #VUID-vkCmdExecuteCommands-pNext-09300# If this command is called -- within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering' -- with any color attachment using a resolve mode of -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- and the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not -- include a -- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD' -- or -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV' -- structure, the value of -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@ -- /must/ be -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-09375# @commandBuffer@ -- /must/ not be a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary secondary command buffer> -- unless the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer> -- feature is enabled -- -- - #VUID-vkCmdExecuteCommands-nestedCommandBuffer-09376# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer> -- feature is enabled, and @commandBuffer@ is a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary secondary command buffer>, -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary command buffer nesting level> -- of each element of @pCommandBuffers@ /must/ be less than -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxCommandBufferNestingLevel maxCommandBufferNestingLevel> -- -- - #VUID-vkCmdExecuteCommands-nestedCommandBufferRendering-09377# If -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBufferRendering nestedCommandBufferRendering> -- feature is not enabled, and @commandBuffer@ is a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary secondary command buffer>, -- @commandBuffer@ /must/ not have been recorded with -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT' -- -- - #VUID-vkCmdExecuteCommands-nestedCommandBufferSimultaneousUse-09378# -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBufferSimultaneousUse nestedCommandBufferSimultaneousUse> -- feature is not enabled, and @commandBuffer@ is a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary secondary command buffer>, -- each element of @pCommandBuffers@ /must/ not have been recorded with -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT' -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-09504# If this command is -- called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the color attachment mapping state specified by -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingAttachmentLocationInfo' -- in the inheritance info of each element of @pCommandBuffers@ and in -- the current state of @commandBuffer@ /must/ match -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-09505# If this command is -- called within a render pass instance begun with -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering', -- the input attachment mapping state specified by -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap.RenderingInputAttachmentIndexInfo' -- in the inheritance info of each element of @pCommandBuffers@ and in -- the current state of @commandBuffer@ /must/ match -- -- - #VUID-vkCmdExecuteCommands-memory-10724# If this command is called -- within a render pass instance, the size of @memory@ member of the -- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryBindInfoQCOM' -- 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 active bound -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-bind-tile-memory bound tile memory object> -- in @commandBuffer@ -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-10620# If this command is -- being recorded within a render pass instance with -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading tile shading> -- enabled, all elements of @pCommandBuffers@ /must/ have been recorded -- with -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' -- included in -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@ -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-10621# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled, all elements of @pCommandBuffers@ /must/ have been -- recorded with -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM' -- included in -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@ -- -- - #VUID-vkCmdExecuteCommands-tileApronSize-10622# If this command is -- being recorded within a render pass instance, the @tileApronSize@ -- used to create the render pass instance /must/ equal the -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@tileApronSize@ -- used to record all elements of @pCommandBuffers@ -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-10623# If any element of -- @pCommandBuffers@ was recorded with -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' -- included in -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@, -- this command /must/ be recorded in a render pass that has tile -- shading enabled -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-10624# If any element of -- @pCommandBuffers@ was recorded with -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM' -- included in -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@, -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- /must/ be enabled -- -- - #VUID-vkCmdExecuteCommands-tileApronSize-10625# If this command is -- not being recorded into a render pass instance, the -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@tileApronSize@ -- that was recorded into all elements of @pCommandBuffers@ /must/ -- equal @(0,0)@ -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-11351# If there is a -- sampler descriptor heap bound to @commandBuffer@, each element of -- @pCommandBuffers@ /must/ have been recorded with a value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@ -- that is either @NULL@ or a pointer to a bind info that is identical -- to that set via the last call to -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT' -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-11352# If there is a -- resource descriptor heap bound to @commandBuffer@, each element of -- @pCommandBuffers@ /must/ have been recorded with a value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@ -- that is either @NULL@ or a pointer to a bind info that is identical -- to that set via the last call to -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindResourceHeapEXT' -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-11473# If there is no -- sampler descriptor heap bound to @commandBuffer@, each element of -- @pCommandBuffers@ /must/ have been recorded with a value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@ -- set to @NULL@ -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-11474# If there is no -- resource descriptor heap bound to @commandBuffer@, each element of -- @pCommandBuffers@ /must/ have been recorded with a value of -- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@ -- set to @NULL@ -- -- == Valid Usage (Implicit) -- -- - #VUID-vkCmdExecuteCommands-commandBuffer-parameter# @commandBuffer@ -- /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdExecuteCommands-pCommandBuffers-parameter# -- @pCommandBuffers@ /must/ be a valid pointer to an array of -- @commandBufferCount@ valid 'Vulkan.Core10.Handles.CommandBuffer' -- handles -- -- - #VUID-vkCmdExecuteCommands-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-vkCmdExecuteCommands-commandBuffer-cmdpool# The -- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations -- -- - #VUID-vkCmdExecuteCommands-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- - #VUID-vkCmdExecuteCommands-commandBufferCount-arraylength# -- @commandBufferCount@ /must/ be greater than @0@ -- -- - #VUID-vkCmdExecuteCommands-commonparent# Both of @commandBuffer@, -- and the elements of @pCommandBuffers@ /must/ have been created, -- allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device' -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT | Indirection | -- | Secondary | | | VK_QUEUE_GRAPHICS_BIT | | -- | | | | VK_QUEUE_TRANSFER_BIT | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdExecuteCommands is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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' cmdExecuteCommands :: forall io . (MonadIO io) => -- | @commandBuffer@ is a handle to a primary command buffer that the -- secondary command buffers are executed in. CommandBuffer -> -- | @pCommandBuffers@ is a pointer to an array of @commandBufferCount@ -- secondary command buffer handles, which are recorded to execute in the -- primary command buffer in the order they are listed in the array. ("commandBuffers" ::: Vector CommandBuffer) -> io () cmdExecuteCommands :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("commandBuffers" ::: Vector CommandBuffer) -> io () cmdExecuteCommands CommandBuffer commandBuffer "commandBuffers" ::: Vector CommandBuffer commandBuffers = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdExecuteCommandsPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) vkCmdExecuteCommandsPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) pVkCmdExecuteCommands (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) vkCmdExecuteCommandsPtr FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdExecuteCommands is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdExecuteCommands' :: Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO () vkCmdExecuteCommands' = FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO () mkVkCmdExecuteCommands FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> Ptr (Ptr CommandBuffer_T) -> IO ()) vkCmdExecuteCommandsPtr pPCommandBuffers <- ((Ptr (Ptr CommandBuffer_T) -> IO ()) -> IO ()) -> ContT () IO (Ptr (Ptr CommandBuffer_T)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (Ptr CommandBuffer_T) -> IO ()) -> IO ()) -> ContT () IO (Ptr (Ptr CommandBuffer_T))) -> ((Ptr (Ptr CommandBuffer_T) -> IO ()) -> IO ()) -> ContT () IO (Ptr (Ptr CommandBuffer_T)) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @(Ptr CommandBuffer_T) ((("commandBuffers" ::: Vector CommandBuffer) -> Int forall a. Vector a -> Int Data.Vector.length ("commandBuffers" ::: Vector CommandBuffer commandBuffers)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 8) lift $ Data.Vector.imapM_ (\Int i CommandBuffer e -> Ptr (Ptr CommandBuffer_T) -> Ptr CommandBuffer_T -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr (Ptr CommandBuffer_T) pPCommandBuffers Ptr (Ptr CommandBuffer_T) -> Int -> Ptr (Ptr CommandBuffer_T) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 8 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr (Ptr CommandBuffer_T)) (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer e))) (commandBuffers) lift $ traceAroundEvent "vkCmdExecuteCommands" (vkCmdExecuteCommands' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (commandBuffers)) :: Word32)) (pPCommandBuffers)) pure $ () -- | VkClearRect - Structure specifying a clear rectangle -- -- = Description -- -- The layers [@baseArrayLayer@, @baseArrayLayer@ + @layerCount@) counting -- from the base layer of the attachment image view are cleared. -- -- = 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.FundamentalTypes.Rect2D', 'cmdClearAttachments' data ClearRect = ClearRect { -- | @rect@ is the two-dimensional region to be cleared. ClearRect -> Rect2D rect :: Rect2D , -- | @baseArrayLayer@ is the first layer to be cleared. ClearRect -> "firstViewport" ::: Word32 baseArrayLayer :: Word32 , -- | @layerCount@ is the number of layers to clear. ClearRect -> "firstViewport" ::: Word32 layerCount :: Word32 } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (ClearRect) #endif deriving instance Show ClearRect instance ToCStruct ClearRect where withCStruct :: forall b. ClearRect -> (Ptr ClearRect -> IO b) -> IO b withCStruct ClearRect x Ptr ClearRect -> IO b f = Int -> (Ptr ClearRect -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 24 ((Ptr ClearRect -> IO b) -> IO b) -> (Ptr ClearRect -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ClearRect p -> Ptr ClearRect -> ClearRect -> IO b -> IO b forall b. Ptr ClearRect -> ClearRect -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ClearRect p ClearRect x (Ptr ClearRect -> IO b f Ptr ClearRect p) pokeCStruct :: forall b. Ptr ClearRect -> ClearRect -> IO b -> IO b pokeCStruct Ptr ClearRect p ClearRect{"firstViewport" ::: Word32 Rect2D rect :: ClearRect -> Rect2D baseArrayLayer :: ClearRect -> "firstViewport" ::: Word32 layerCount :: ClearRect -> "firstViewport" ::: Word32 rect :: Rect2D baseArrayLayer :: "firstViewport" ::: Word32 layerCount :: "firstViewport" ::: Word32 ..} IO b f = do Ptr Rect2D -> Rect2D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearRect p Ptr ClearRect -> Int -> Ptr Rect2D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr Rect2D)) (Rect2D rect) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearRect p Ptr ClearRect -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) ("firstViewport" ::: Word32 baseArrayLayer) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearRect p Ptr ClearRect -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) ("firstViewport" ::: Word32 layerCount) IO b f cStructSize :: Int cStructSize = Int 24 cStructAlignment :: Int cStructAlignment = Int 4 pokeZeroCStruct :: forall b. Ptr ClearRect -> IO b -> IO b pokeZeroCStruct Ptr ClearRect p IO b f = do Ptr Rect2D -> Rect2D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearRect p Ptr ClearRect -> Int -> Ptr Rect2D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr Rect2D)) (Rect2D forall a. Zero a => a zero) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearRect p Ptr ClearRect -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearRect p Ptr ClearRect -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) IO b f instance FromCStruct ClearRect where peekCStruct :: Ptr ClearRect -> IO ClearRect peekCStruct Ptr ClearRect p = do rect <- forall a. FromCStruct a => Ptr a -> IO a peekCStruct @Rect2D ((Ptr ClearRect p Ptr ClearRect -> Int -> Ptr Rect2D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr Rect2D)) baseArrayLayer <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32)) layerCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32)) pure $ ClearRect rect baseArrayLayer layerCount instance Storable ClearRect where sizeOf :: ClearRect -> Int sizeOf ~ClearRect _ = Int 24 alignment :: ClearRect -> Int alignment ~ClearRect _ = Int 4 peek :: Ptr ClearRect -> IO ClearRect peek = Ptr ClearRect -> IO ClearRect forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr ClearRect -> ClearRect -> IO () poke Ptr ClearRect ptr ClearRect poked = Ptr ClearRect -> ClearRect -> IO () -> IO () forall b. Ptr ClearRect -> ClearRect -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ClearRect ptr ClearRect poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero ClearRect where zero :: ClearRect zero = Rect2D -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ClearRect ClearRect Rect2D forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero -- | VkImageSubresourceLayers - Structure specifying an image subresource -- layers -- -- == Valid Usage -- -- - #VUID-VkImageSubresourceLayers-aspectMask-00167# If @aspectMask@ -- contains -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it -- /must/ not contain either of -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-VkImageSubresourceLayers-aspectMask-00168# @aspectMask@ /must/ -- not contain -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT' -- -- - #VUID-VkImageSubresourceLayers-aspectMask-02247# @aspectMask@ /must/ -- not include @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index -- /i/ -- -- - #VUID-VkImageSubresourceLayers-layerCount-09243# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5> -- feature is not enabled, @layerCount@ /must/ not be -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' -- -- - #VUID-VkImageSubresourceLayers-layerCount-01700# If @layerCount@ is -- not 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', it /must/ -- be greater than 0 -- -- == Valid Usage (Implicit) -- -- - #VUID-VkImageSubresourceLayers-aspectMask-parameter# @aspectMask@ -- /must/ be a valid combination of -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values -- -- - #VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask# -- @aspectMask@ /must/ not be @0@ -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'BufferImageCopy', -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2', -- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectCommandKHR', -- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectInfoKHR', -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', 'ImageBlit', -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2', -- 'ImageCopy', -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2', -- 'ImageResolve', -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2', -- 'Vulkan.Core14.PromotedStreamingTransfers'.ImageToMemoryCopy', -- 'Vulkan.Core14.PromotedStreamingTransfers'.MemoryToImageCopy', -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV' data ImageSubresourceLayers = ImageSubresourceLayers { -- | @aspectMask@ is a combination of -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits', selecting -- the color, depth and\/or stencil aspects to be copied. ImageSubresourceLayers -> ImageAspectFlags aspectMask :: ImageAspectFlags , -- | @mipLevel@ is the mipmap level to copy ImageSubresourceLayers -> "firstViewport" ::: Word32 mipLevel :: Word32 , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of -- layers to copy. ImageSubresourceLayers -> "firstViewport" ::: Word32 baseArrayLayer :: Word32 , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount" ImageSubresourceLayers -> "firstViewport" ::: Word32 layerCount :: Word32 } deriving (Typeable, ImageSubresourceLayers -> ImageSubresourceLayers -> Bool (ImageSubresourceLayers -> ImageSubresourceLayers -> Bool) -> (ImageSubresourceLayers -> ImageSubresourceLayers -> Bool) -> Eq ImageSubresourceLayers forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: ImageSubresourceLayers -> ImageSubresourceLayers -> Bool == :: ImageSubresourceLayers -> ImageSubresourceLayers -> Bool $c/= :: ImageSubresourceLayers -> ImageSubresourceLayers -> Bool /= :: ImageSubresourceLayers -> ImageSubresourceLayers -> Bool Eq) #if defined(GENERIC_INSTANCES) deriving instance Generic (ImageSubresourceLayers) #endif deriving instance Show ImageSubresourceLayers instance ToCStruct ImageSubresourceLayers where withCStruct :: forall b. ImageSubresourceLayers -> (Ptr ImageSubresourceLayers -> IO b) -> IO b withCStruct ImageSubresourceLayers x Ptr ImageSubresourceLayers -> IO b f = Int -> (Ptr ImageSubresourceLayers -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 16 ((Ptr ImageSubresourceLayers -> IO b) -> IO b) -> (Ptr ImageSubresourceLayers -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ImageSubresourceLayers p -> Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO b -> IO b forall b. Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageSubresourceLayers p ImageSubresourceLayers x (Ptr ImageSubresourceLayers -> IO b f Ptr ImageSubresourceLayers p) pokeCStruct :: forall b. Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO b -> IO b pokeCStruct Ptr ImageSubresourceLayers p ImageSubresourceLayers{"firstViewport" ::: Word32 ImageAspectFlags aspectMask :: ImageSubresourceLayers -> ImageAspectFlags mipLevel :: ImageSubresourceLayers -> "firstViewport" ::: Word32 baseArrayLayer :: ImageSubresourceLayers -> "firstViewport" ::: Word32 layerCount :: ImageSubresourceLayers -> "firstViewport" ::: Word32 aspectMask :: ImageAspectFlags mipLevel :: "firstViewport" ::: Word32 baseArrayLayer :: "firstViewport" ::: Word32 layerCount :: "firstViewport" ::: Word32 ..} IO b f = do Ptr ImageAspectFlags -> ImageAspectFlags -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ImageAspectFlags forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageAspectFlags)) (ImageAspectFlags aspectMask) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Word32)) ("firstViewport" ::: Word32 mipLevel) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr Word32)) ("firstViewport" ::: Word32 baseArrayLayer) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Word32)) ("firstViewport" ::: Word32 layerCount) IO b f cStructSize :: Int cStructSize = Int 16 cStructAlignment :: Int cStructAlignment = Int 4 pokeZeroCStruct :: forall b. Ptr ImageSubresourceLayers -> IO b -> IO b pokeZeroCStruct Ptr ImageSubresourceLayers p IO b f = do Ptr ImageAspectFlags -> ImageAspectFlags -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ImageAspectFlags forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageAspectFlags)) (ImageAspectFlags forall a. Zero a => a zero) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) IO b f instance FromCStruct ImageSubresourceLayers where peekCStruct :: Ptr ImageSubresourceLayers -> IO ImageSubresourceLayers peekCStruct Ptr ImageSubresourceLayers p = do aspectMask <- forall a. Storable a => Ptr a -> IO a peek @ImageAspectFlags ((Ptr ImageSubresourceLayers p Ptr ImageSubresourceLayers -> Int -> Ptr ImageAspectFlags forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageAspectFlags)) mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32)) baseArrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32)) layerCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32)) pure $ ImageSubresourceLayers aspectMask mipLevel baseArrayLayer layerCount instance Storable ImageSubresourceLayers where sizeOf :: ImageSubresourceLayers -> Int sizeOf ~ImageSubresourceLayers _ = Int 16 alignment :: ImageSubresourceLayers -> Int alignment ~ImageSubresourceLayers _ = Int 4 peek :: Ptr ImageSubresourceLayers -> IO ImageSubresourceLayers peek = Ptr ImageSubresourceLayers -> IO ImageSubresourceLayers forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () poke Ptr ImageSubresourceLayers ptr ImageSubresourceLayers poked = Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () -> IO () forall b. Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageSubresourceLayers ptr ImageSubresourceLayers poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero ImageSubresourceLayers where zero :: ImageSubresourceLayers zero = ImageAspectFlags -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ImageSubresourceLayers ImageSubresourceLayers ImageAspectFlags forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero -- | VkBufferCopy - Structure specifying a buffer copy operation -- -- == Valid Usage -- -- - #VUID-VkBufferCopy-size-01988# The @size@ /must/ be greater than @0@ -- -- = 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.FundamentalTypes.DeviceSize', 'cmdCopyBuffer' data BufferCopy = BufferCopy { -- | @srcOffset@ is the starting offset in bytes from the start of -- @srcBuffer@. BufferCopy -> "offset" ::: DeviceSize srcOffset :: DeviceSize , -- | @dstOffset@ is the starting offset in bytes from the start of -- @dstBuffer@. BufferCopy -> "offset" ::: DeviceSize dstOffset :: DeviceSize , -- | @size@ is the number of bytes to copy. BufferCopy -> "offset" ::: DeviceSize size :: DeviceSize } deriving (Typeable, BufferCopy -> BufferCopy -> Bool (BufferCopy -> BufferCopy -> Bool) -> (BufferCopy -> BufferCopy -> Bool) -> Eq BufferCopy forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: BufferCopy -> BufferCopy -> Bool == :: BufferCopy -> BufferCopy -> Bool $c/= :: BufferCopy -> BufferCopy -> Bool /= :: BufferCopy -> BufferCopy -> Bool Eq) #if defined(GENERIC_INSTANCES) deriving instance Generic (BufferCopy) #endif deriving instance Show BufferCopy instance ToCStruct BufferCopy where withCStruct :: forall b. BufferCopy -> (Ptr BufferCopy -> IO b) -> IO b withCStruct BufferCopy x Ptr BufferCopy -> IO b f = Int -> (Ptr BufferCopy -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 24 ((Ptr BufferCopy -> IO b) -> IO b) -> (Ptr BufferCopy -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr BufferCopy p -> Ptr BufferCopy -> BufferCopy -> IO b -> IO b forall b. Ptr BufferCopy -> BufferCopy -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr BufferCopy p BufferCopy x (Ptr BufferCopy -> IO b f Ptr BufferCopy p) pokeCStruct :: forall b. Ptr BufferCopy -> BufferCopy -> IO b -> IO b pokeCStruct Ptr BufferCopy p BufferCopy{"offset" ::: DeviceSize srcOffset :: BufferCopy -> "offset" ::: DeviceSize dstOffset :: BufferCopy -> "offset" ::: DeviceSize size :: BufferCopy -> "offset" ::: DeviceSize srcOffset :: "offset" ::: DeviceSize dstOffset :: "offset" ::: DeviceSize size :: "offset" ::: DeviceSize ..} IO b f = do Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferCopy p Ptr BufferCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr DeviceSize)) ("offset" ::: DeviceSize srcOffset) Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferCopy p Ptr BufferCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr DeviceSize)) ("offset" ::: DeviceSize dstOffset) Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferCopy p Ptr BufferCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr DeviceSize)) ("offset" ::: DeviceSize size) IO b f cStructSize :: Int cStructSize = Int 24 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr BufferCopy -> IO b -> IO b pokeZeroCStruct Ptr BufferCopy p IO b f = do Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferCopy p Ptr BufferCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr DeviceSize)) ("offset" ::: DeviceSize forall a. Zero a => a zero) Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferCopy p Ptr BufferCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr DeviceSize)) ("offset" ::: DeviceSize forall a. Zero a => a zero) Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferCopy p Ptr BufferCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr DeviceSize)) ("offset" ::: DeviceSize forall a. Zero a => a zero) IO b f instance FromCStruct BufferCopy where peekCStruct :: Ptr BufferCopy -> IO BufferCopy peekCStruct Ptr BufferCopy p = do srcOffset <- forall a. Storable a => Ptr a -> IO a peek @DeviceSize ((Ptr BufferCopy p Ptr BufferCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr DeviceSize)) dstOffset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize)) size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize)) pure $ BufferCopy srcOffset dstOffset size instance Storable BufferCopy where sizeOf :: BufferCopy -> Int sizeOf ~BufferCopy _ = Int 24 alignment :: BufferCopy -> Int alignment ~BufferCopy _ = Int 8 peek :: Ptr BufferCopy -> IO BufferCopy peek = Ptr BufferCopy -> IO BufferCopy forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr BufferCopy -> BufferCopy -> IO () poke Ptr BufferCopy ptr BufferCopy poked = Ptr BufferCopy -> BufferCopy -> IO () -> IO () forall b. Ptr BufferCopy -> BufferCopy -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr BufferCopy ptr BufferCopy poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero BufferCopy where zero :: BufferCopy zero = ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> BufferCopy BufferCopy "offset" ::: DeviceSize forall a. Zero a => a zero "offset" ::: DeviceSize forall a. Zero a => a zero "offset" ::: DeviceSize forall a. Zero a => a zero -- | VkImageCopy - Structure specifying an image copy operation -- -- == Valid Usage -- -- - #VUID-VkImageCopy-apiVersion-07940# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion> -- extension is not enabled, and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@ -- is less than Vulkan 1.1, the @aspectMask@ member of @srcSubresource@ -- and @dstSubresource@ /must/ match -- -- - #VUID-VkImageCopy-apiVersion-07941# If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1> -- extension is not enabled, and -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@ -- is less than Vulkan 1.1, the @layerCount@ member of @srcSubresource@ -- and @dstSubresource@ /must/ match -- -- - #VUID-VkImageCopy-extent-06668# @extent.width@ /must/ not be 0 -- -- - #VUID-VkImageCopy-extent-06669# @extent.height@ /must/ not be 0 -- -- - #VUID-VkImageCopy-extent-06670# @extent.depth@ /must/ not be 0 -- -- == Valid Usage (Implicit) -- -- - #VUID-VkImageCopy-srcSubresource-parameter# @srcSubresource@ /must/ -- be a valid 'ImageSubresourceLayers' structure -- -- - #VUID-VkImageCopy-dstSubresource-parameter# @dstSubresource@ /must/ -- be a valid 'ImageSubresourceLayers' structure -- -- = 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.FundamentalTypes.Extent3D', 'ImageSubresourceLayers', -- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyImage' data ImageCopy = ImageCopy { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers' -- structures specifying the image subresources of the images used for the -- source and destination image data, respectively. ImageCopy -> ImageSubresourceLayers srcSubresource :: ImageSubresourceLayers , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets -- in texels of the sub-regions of the source and destination image data. ImageCopy -> Offset3D srcOffset :: Offset3D , -- No documentation found for Nested "VkImageCopy" "dstSubresource" ImageCopy -> ImageSubresourceLayers dstSubresource :: ImageSubresourceLayers , -- No documentation found for Nested "VkImageCopy" "dstOffset" ImageCopy -> Offset3D dstOffset :: Offset3D , -- | @extent@ is the size in texels of the image to copy in @width@, @height@ -- and @depth@. ImageCopy -> Extent3D extent :: Extent3D } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (ImageCopy) #endif deriving instance Show ImageCopy instance ToCStruct ImageCopy where withCStruct :: forall b. ImageCopy -> (Ptr ImageCopy -> IO b) -> IO b withCStruct ImageCopy x Ptr ImageCopy -> IO b f = Int -> (Ptr ImageCopy -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 68 ((Ptr ImageCopy -> IO b) -> IO b) -> (Ptr ImageCopy -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ImageCopy p -> Ptr ImageCopy -> ImageCopy -> IO b -> IO b forall b. Ptr ImageCopy -> ImageCopy -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageCopy p ImageCopy x (Ptr ImageCopy -> IO b f Ptr ImageCopy p) pokeCStruct :: forall b. Ptr ImageCopy -> ImageCopy -> IO b -> IO b pokeCStruct Ptr ImageCopy p ImageCopy{Offset3D Extent3D ImageSubresourceLayers srcSubresource :: ImageCopy -> ImageSubresourceLayers srcOffset :: ImageCopy -> Offset3D dstSubresource :: ImageCopy -> ImageSubresourceLayers dstOffset :: ImageCopy -> Offset3D extent :: ImageCopy -> Extent3D srcSubresource :: ImageSubresourceLayers srcOffset :: Offset3D dstSubresource :: ImageSubresourceLayers dstOffset :: Offset3D extent :: Extent3D ..} IO b f = do Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers srcSubresource) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Offset3D)) (Offset3D srcOffset) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 28 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers dstSubresource) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Offset3D)) (Offset3D dstOffset) Ptr Extent3D -> Extent3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr Extent3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr Extent3D)) (Extent3D extent) IO b f cStructSize :: Int cStructSize = Int 68 cStructAlignment :: Int cStructAlignment = Int 4 pokeZeroCStruct :: forall b. Ptr ImageCopy -> IO b -> IO b pokeZeroCStruct Ptr ImageCopy p IO b f = do Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers forall a. Zero a => a zero) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Offset3D)) (Offset3D forall a. Zero a => a zero) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 28 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers forall a. Zero a => a zero) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Offset3D)) (Offset3D forall a. Zero a => a zero) Ptr Extent3D -> Extent3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr Extent3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr Extent3D)) (Extent3D forall a. Zero a => a zero) IO b f instance FromCStruct ImageCopy where peekCStruct :: Ptr ImageCopy -> IO ImageCopy peekCStruct Ptr ImageCopy p = do srcSubresource <- forall a. FromCStruct a => Ptr a -> IO a peekCStruct @ImageSubresourceLayers ((Ptr ImageCopy p Ptr ImageCopy -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D)) dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D)) extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D)) pure $ ImageCopy srcSubresource srcOffset dstSubresource dstOffset extent instance Storable ImageCopy where sizeOf :: ImageCopy -> Int sizeOf ~ImageCopy _ = Int 68 alignment :: ImageCopy -> Int alignment ~ImageCopy _ = Int 4 peek :: Ptr ImageCopy -> IO ImageCopy peek = Ptr ImageCopy -> IO ImageCopy forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr ImageCopy -> ImageCopy -> IO () poke Ptr ImageCopy ptr ImageCopy poked = Ptr ImageCopy -> ImageCopy -> IO () -> IO () forall b. Ptr ImageCopy -> ImageCopy -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageCopy ptr ImageCopy poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero ImageCopy where zero :: ImageCopy zero = ImageSubresourceLayers -> Offset3D -> ImageSubresourceLayers -> Offset3D -> Extent3D -> ImageCopy ImageCopy ImageSubresourceLayers forall a. Zero a => a zero Offset3D forall a. Zero a => a zero ImageSubresourceLayers forall a. Zero a => a zero Offset3D forall a. Zero a => a zero Extent3D forall a. Zero a => a zero -- | VkImageBlit - Structure specifying an image blit operation -- -- = Description -- -- For each element of the @pRegions@ array, a blit operation is performed -- for the specified source and destination regions. -- -- == Valid Usage -- -- - #VUID-VkImageBlit-aspectMask-00238# The @aspectMask@ member of -- @srcSubresource@ and @dstSubresource@ /must/ match -- -- - #VUID-VkImageBlit-layerCount-08800# If neither of the @layerCount@ -- members of @srcSubresource@ or @dstSubresource@ are -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the -- @layerCount@ members of @srcSubresource@ or @dstSubresource@ /must/ -- match -- -- - #VUID-VkImageBlit-layerCount-08801# If one of the @layerCount@ -- members of @srcSubresource@ or @dstSubresource@ is -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the other -- member /must/ be either -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' or equal to the -- @arrayLayers@ member of the 'Vulkan.Core10.Image.ImageCreateInfo' -- used to create the image minus @baseArrayLayer@ -- -- == Valid Usage (Implicit) -- -- - #VUID-VkImageBlit-srcSubresource-parameter# @srcSubresource@ /must/ -- be a valid 'ImageSubresourceLayers' structure -- -- - #VUID-VkImageBlit-dstSubresource-parameter# @dstSubresource@ /must/ -- be a valid 'ImageSubresourceLayers' structure -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'ImageSubresourceLayers', 'Vulkan.Core10.FundamentalTypes.Offset3D', -- 'cmdBlitImage' data ImageBlit = ImageBlit { -- | @srcSubresource@ is the subresource to blit from. ImageBlit -> ImageSubresourceLayers srcSubresource :: ImageSubresourceLayers , -- | @srcOffsets@ is a pointer to an array of two -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the -- bounds of the source region within @srcSubresource@. ImageBlit -> (Offset3D, Offset3D) srcOffsets :: (Offset3D, Offset3D) , -- | @dstSubresource@ is the subresource to blit into. ImageBlit -> ImageSubresourceLayers dstSubresource :: ImageSubresourceLayers , -- | @dstOffsets@ is a pointer to an array of two -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the -- bounds of the destination region within @dstSubresource@. ImageBlit -> (Offset3D, Offset3D) dstOffsets :: (Offset3D, Offset3D) } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (ImageBlit) #endif deriving instance Show ImageBlit instance ToCStruct ImageBlit where withCStruct :: forall b. ImageBlit -> (Ptr ImageBlit -> IO b) -> IO b withCStruct ImageBlit x Ptr ImageBlit -> IO b f = Int -> (Ptr ImageBlit -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 80 ((Ptr ImageBlit -> IO b) -> IO b) -> (Ptr ImageBlit -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ImageBlit p -> Ptr ImageBlit -> ImageBlit -> IO b -> IO b forall b. Ptr ImageBlit -> ImageBlit -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageBlit p ImageBlit x (Ptr ImageBlit -> IO b f Ptr ImageBlit p) pokeCStruct :: forall b. Ptr ImageBlit -> ImageBlit -> IO b -> IO b pokeCStruct Ptr ImageBlit p ImageBlit{(Offset3D, Offset3D) ImageSubresourceLayers srcSubresource :: ImageBlit -> ImageSubresourceLayers srcOffsets :: ImageBlit -> (Offset3D, Offset3D) dstSubresource :: ImageBlit -> ImageSubresourceLayers dstOffsets :: ImageBlit -> (Offset3D, Offset3D) srcSubresource :: ImageSubresourceLayers srcOffsets :: (Offset3D, Offset3D) dstSubresource :: ImageSubresourceLayers dstOffsets :: (Offset3D, Offset3D) ..} IO b f = do Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers srcSubresource) let pSrcOffsets' :: Ptr Offset3D pSrcOffsets' = Ptr (FixedArray 2 Offset3D) -> Ptr Offset3D forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr (FixedArray 2 Offset3D) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr (FixedArray 2 Offset3D))) case ((Offset3D, Offset3D) srcOffsets) of (Offset3D e0, Offset3D e1) -> do Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pSrcOffsets' :: Ptr Offset3D) (Offset3D e0) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pSrcOffsets' Ptr Offset3D -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Offset3D) (Offset3D e1) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 40 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers dstSubresource) let pDstOffsets' :: Ptr Offset3D pDstOffsets' = Ptr (FixedArray 2 Offset3D) -> Ptr Offset3D forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr (FixedArray 2 Offset3D) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr (FixedArray 2 Offset3D))) case ((Offset3D, Offset3D) dstOffsets) of (Offset3D e0, Offset3D e1) -> do Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pDstOffsets' :: Ptr Offset3D) (Offset3D e0) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pDstOffsets' Ptr Offset3D -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Offset3D) (Offset3D e1) IO b f cStructSize :: Int cStructSize = Int 80 cStructAlignment :: Int cStructAlignment = Int 4 pokeZeroCStruct :: forall b. Ptr ImageBlit -> IO b -> IO b pokeZeroCStruct Ptr ImageBlit p IO b f = do Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers forall a. Zero a => a zero) let pSrcOffsets' :: Ptr Offset3D pSrcOffsets' = Ptr (FixedArray 2 Offset3D) -> Ptr Offset3D forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr (FixedArray 2 Offset3D) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr (FixedArray 2 Offset3D))) case ((Offset3D forall a. Zero a => a zero, Offset3D forall a. Zero a => a zero)) of (Offset3D e0, Offset3D e1) -> do Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pSrcOffsets' :: Ptr Offset3D) (Offset3D e0) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pSrcOffsets' Ptr Offset3D -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Offset3D) (Offset3D e1) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 40 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers forall a. Zero a => a zero) let pDstOffsets' :: Ptr Offset3D pDstOffsets' = Ptr (FixedArray 2 Offset3D) -> Ptr Offset3D forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr (FixedArray 2 Offset3D) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr (FixedArray 2 Offset3D))) case ((Offset3D forall a. Zero a => a zero, Offset3D forall a. Zero a => a zero)) of (Offset3D e0, Offset3D e1) -> do Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pDstOffsets' :: Ptr Offset3D) (Offset3D e0) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Offset3D pDstOffsets' Ptr Offset3D -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Offset3D) (Offset3D e1) IO b f instance FromCStruct ImageBlit where peekCStruct :: Ptr ImageBlit -> IO ImageBlit peekCStruct Ptr ImageBlit p = do srcSubresource <- forall a. FromCStruct a => Ptr a -> IO a peekCStruct @ImageSubresourceLayers ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) let psrcOffsets = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr @Offset3D ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr (FixedArray 2 Offset3D) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr (FixedArray 2 Offset3D))) srcOffsets0 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 0 :: Ptr Offset3D)) srcOffsets1 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 12 :: Ptr Offset3D)) dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) let pdstOffsets = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr @Offset3D ((Ptr ImageBlit p Ptr ImageBlit -> Int -> Ptr (FixedArray 2 Offset3D) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr (FixedArray 2 Offset3D))) dstOffsets0 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 0 :: Ptr Offset3D)) dstOffsets1 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 12 :: Ptr Offset3D)) pure $ ImageBlit srcSubresource ((srcOffsets0, srcOffsets1)) dstSubresource ((dstOffsets0, dstOffsets1)) instance Storable ImageBlit where sizeOf :: ImageBlit -> Int sizeOf ~ImageBlit _ = Int 80 alignment :: ImageBlit -> Int alignment ~ImageBlit _ = Int 4 peek :: Ptr ImageBlit -> IO ImageBlit peek = Ptr ImageBlit -> IO ImageBlit forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr ImageBlit -> ImageBlit -> IO () poke Ptr ImageBlit ptr ImageBlit poked = Ptr ImageBlit -> ImageBlit -> IO () -> IO () forall b. Ptr ImageBlit -> ImageBlit -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageBlit ptr ImageBlit poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero ImageBlit where zero :: ImageBlit zero = ImageSubresourceLayers -> (Offset3D, Offset3D) -> ImageSubresourceLayers -> (Offset3D, Offset3D) -> ImageBlit ImageBlit ImageSubresourceLayers forall a. Zero a => a zero (Offset3D forall a. Zero a => a zero, Offset3D forall a. Zero a => a zero) ImageSubresourceLayers forall a. Zero a => a zero (Offset3D forall a. Zero a => a zero, Offset3D forall a. Zero a => a zero) -- | VkBufferImageCopy - Structure specifying a buffer image copy operation -- -- == Valid Usage -- -- - #VUID-VkBufferImageCopy-bufferRowLength-09101# @bufferRowLength@ -- /must/ be @0@, or greater than or equal to the @width@ member of -- @imageExtent@ -- -- - #VUID-VkBufferImageCopy-bufferImageHeight-09102# @bufferImageHeight@ -- /must/ be @0@, or greater than or equal to the @height@ member of -- @imageExtent@ -- -- - #VUID-VkBufferImageCopy-aspectMask-09103# The @aspectMask@ member of -- @imageSubresource@ /must/ only have a single bit set -- -- - #VUID-VkBufferImageCopy-imageExtent-06659# @imageExtent.width@ -- /must/ not be 0 -- -- - #VUID-VkBufferImageCopy-imageExtent-06660# @imageExtent.height@ -- /must/ not be 0 -- -- - #VUID-VkBufferImageCopy-imageExtent-06661# @imageExtent.depth@ -- /must/ not be 0 -- -- == Valid Usage (Implicit) -- -- - #VUID-VkBufferImageCopy-imageSubresource-parameter# -- @imageSubresource@ /must/ be a valid 'ImageSubresourceLayers' -- structure -- -- = 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.FundamentalTypes.DeviceSize', -- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers', -- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyBufferToImage', -- 'cmdCopyImageToBuffer' data BufferImageCopy = BufferImageCopy { -- | @bufferOffset@ is the offset in bytes from the start of the buffer -- object where the image data is copied from or to. BufferImageCopy -> "offset" ::: DeviceSize bufferOffset :: DeviceSize , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion -- of a larger two- or three-dimensional image in buffer memory, and -- control the addressing calculations. If either of these values is zero, -- that aspect of the buffer memory is considered to be tightly packed -- according to the @imageExtent@. BufferImageCopy -> "firstViewport" ::: Word32 bufferRowLength :: Word32 , -- No documentation found for Nested "VkBufferImageCopy" "bufferImageHeight" BufferImageCopy -> "firstViewport" ::: Word32 bufferImageHeight :: Word32 , -- | @imageSubresource@ is a 'ImageSubresourceLayers' used to specify the -- specific image subresources of the image used for the source or -- destination image data. BufferImageCopy -> ImageSubresourceLayers imageSubresource :: ImageSubresourceLayers , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the -- sub-region of the source or destination image data. BufferImageCopy -> Offset3D imageOffset :: Offset3D , -- | @imageExtent@ is the size in texels of the image to copy in @width@, -- @height@ and @depth@. BufferImageCopy -> Extent3D imageExtent :: Extent3D } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (BufferImageCopy) #endif deriving instance Show BufferImageCopy instance ToCStruct BufferImageCopy where withCStruct :: forall b. BufferImageCopy -> (Ptr BufferImageCopy -> IO b) -> IO b withCStruct BufferImageCopy x Ptr BufferImageCopy -> IO b f = Int -> (Ptr BufferImageCopy -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 56 ((Ptr BufferImageCopy -> IO b) -> IO b) -> (Ptr BufferImageCopy -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr BufferImageCopy p -> Ptr BufferImageCopy -> BufferImageCopy -> IO b -> IO b forall b. Ptr BufferImageCopy -> BufferImageCopy -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr BufferImageCopy p BufferImageCopy x (Ptr BufferImageCopy -> IO b f Ptr BufferImageCopy p) pokeCStruct :: forall b. Ptr BufferImageCopy -> BufferImageCopy -> IO b -> IO b pokeCStruct Ptr BufferImageCopy p BufferImageCopy{"firstViewport" ::: Word32 "offset" ::: DeviceSize Offset3D Extent3D ImageSubresourceLayers bufferOffset :: BufferImageCopy -> "offset" ::: DeviceSize bufferRowLength :: BufferImageCopy -> "firstViewport" ::: Word32 bufferImageHeight :: BufferImageCopy -> "firstViewport" ::: Word32 imageSubresource :: BufferImageCopy -> ImageSubresourceLayers imageOffset :: BufferImageCopy -> Offset3D imageExtent :: BufferImageCopy -> Extent3D bufferOffset :: "offset" ::: DeviceSize bufferRowLength :: "firstViewport" ::: Word32 bufferImageHeight :: "firstViewport" ::: Word32 imageSubresource :: ImageSubresourceLayers imageOffset :: Offset3D imageExtent :: Extent3D ..} IO b f = do Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr DeviceSize)) ("offset" ::: DeviceSize bufferOffset) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr Word32)) ("firstViewport" ::: Word32 bufferRowLength) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Word32)) ("firstViewport" ::: Word32 bufferImageHeight) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers imageSubresource) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 32 :: Ptr Offset3D)) (Offset3D imageOffset) Ptr Extent3D -> Extent3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr Extent3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Extent3D)) (Extent3D imageExtent) IO b f cStructSize :: Int cStructSize = Int 56 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr BufferImageCopy -> IO b -> IO b pokeZeroCStruct Ptr BufferImageCopy p IO b f = do Ptr ("offset" ::: DeviceSize) -> ("offset" ::: DeviceSize) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr DeviceSize)) ("offset" ::: DeviceSize forall a. Zero a => a zero) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers forall a. Zero a => a zero) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 32 :: Ptr Offset3D)) (Offset3D forall a. Zero a => a zero) Ptr Extent3D -> Extent3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr Extent3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Extent3D)) (Extent3D forall a. Zero a => a zero) IO b f instance FromCStruct BufferImageCopy where peekCStruct :: Ptr BufferImageCopy -> IO BufferImageCopy peekCStruct Ptr BufferImageCopy p = do bufferOffset <- forall a. Storable a => Ptr a -> IO a peek @DeviceSize ((Ptr BufferImageCopy p Ptr BufferImageCopy -> Int -> Ptr ("offset" ::: DeviceSize) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr DeviceSize)) bufferRowLength <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32)) bufferImageHeight <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32)) imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D)) imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 44 :: Ptr Extent3D)) pure $ BufferImageCopy bufferOffset bufferRowLength bufferImageHeight imageSubresource imageOffset imageExtent instance Storable BufferImageCopy where sizeOf :: BufferImageCopy -> Int sizeOf ~BufferImageCopy _ = Int 56 alignment :: BufferImageCopy -> Int alignment ~BufferImageCopy _ = Int 8 peek :: Ptr BufferImageCopy -> IO BufferImageCopy peek = Ptr BufferImageCopy -> IO BufferImageCopy forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr BufferImageCopy -> BufferImageCopy -> IO () poke Ptr BufferImageCopy ptr BufferImageCopy poked = Ptr BufferImageCopy -> BufferImageCopy -> IO () -> IO () forall b. Ptr BufferImageCopy -> BufferImageCopy -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr BufferImageCopy ptr BufferImageCopy poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero BufferImageCopy where zero :: BufferImageCopy zero = ("offset" ::: DeviceSize) -> ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> ImageSubresourceLayers -> Offset3D -> Extent3D -> BufferImageCopy BufferImageCopy "offset" ::: DeviceSize forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero ImageSubresourceLayers forall a. Zero a => a zero Offset3D forall a. Zero a => a zero Extent3D forall a. Zero a => a zero -- | VkImageResolve - Structure specifying an image resolve operation -- -- == Valid Usage -- -- - #VUID-VkImageResolve-aspectMask-10981# The @aspectMask@ member of -- @srcSubresource@ and @dstSubresource@ /must/ only contain -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' -- -- - #VUID-VkImageResolve-layerCount-08803# If neither of the -- @layerCount@ members of @srcSubresource@ or @dstSubresource@ are -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the -- @layerCount@ member of @srcSubresource@ and @dstSubresource@ /must/ -- match -- -- - #VUID-VkImageResolve-layerCount-08804# If one of the @layerCount@ -- members of @srcSubresource@ or @dstSubresource@ is -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the other -- member /must/ be either -- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' or equal to the -- @arrayLayers@ member of the 'Vulkan.Core10.Image.ImageCreateInfo' -- used to create the image minus @baseArrayLayer@ -- -- == Valid Usage (Implicit) -- -- - #VUID-VkImageResolve-srcSubresource-parameter# @srcSubresource@ -- /must/ be a valid 'ImageSubresourceLayers' structure -- -- - #VUID-VkImageResolve-dstSubresource-parameter# @dstSubresource@ -- /must/ be a valid 'ImageSubresourceLayers' structure -- -- = 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.FundamentalTypes.Extent3D', 'ImageSubresourceLayers', -- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdResolveImage' data ImageResolve = ImageResolve { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers' -- structures specifying the image subresources of the images used for the -- source and destination image data, respectively. Resolve of -- depth\/stencil images is not supported. -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2' /can/ -- support resolve of depth\/stencil images with -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10> -- instead. ImageResolve -> ImageSubresourceLayers srcSubresource :: ImageSubresourceLayers , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets -- in texels of the sub-regions of the source and destination image data. ImageResolve -> Offset3D srcOffset :: Offset3D , -- No documentation found for Nested "VkImageResolve" "dstSubresource" ImageResolve -> ImageSubresourceLayers dstSubresource :: ImageSubresourceLayers , -- No documentation found for Nested "VkImageResolve" "dstOffset" ImageResolve -> Offset3D dstOffset :: Offset3D , -- | @extent@ is the size in texels of the source image to resolve in -- @width@, @height@ and @depth@. ImageResolve -> Extent3D extent :: Extent3D } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (ImageResolve) #endif deriving instance Show ImageResolve instance ToCStruct ImageResolve where withCStruct :: forall b. ImageResolve -> (Ptr ImageResolve -> IO b) -> IO b withCStruct ImageResolve x Ptr ImageResolve -> IO b f = Int -> (Ptr ImageResolve -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 68 ((Ptr ImageResolve -> IO b) -> IO b) -> (Ptr ImageResolve -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ImageResolve p -> Ptr ImageResolve -> ImageResolve -> IO b -> IO b forall b. Ptr ImageResolve -> ImageResolve -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageResolve p ImageResolve x (Ptr ImageResolve -> IO b f Ptr ImageResolve p) pokeCStruct :: forall b. Ptr ImageResolve -> ImageResolve -> IO b -> IO b pokeCStruct Ptr ImageResolve p ImageResolve{Offset3D Extent3D ImageSubresourceLayers srcSubresource :: ImageResolve -> ImageSubresourceLayers srcOffset :: ImageResolve -> Offset3D dstSubresource :: ImageResolve -> ImageSubresourceLayers dstOffset :: ImageResolve -> Offset3D extent :: ImageResolve -> Extent3D srcSubresource :: ImageSubresourceLayers srcOffset :: Offset3D dstSubresource :: ImageSubresourceLayers dstOffset :: Offset3D extent :: Extent3D ..} IO b f = do Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers srcSubresource) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Offset3D)) (Offset3D srcOffset) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 28 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers dstSubresource) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Offset3D)) (Offset3D dstOffset) Ptr Extent3D -> Extent3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr Extent3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr Extent3D)) (Extent3D extent) IO b f cStructSize :: Int cStructSize = Int 68 cStructAlignment :: Int cStructAlignment = Int 4 pokeZeroCStruct :: forall b. Ptr ImageResolve -> IO b -> IO b pokeZeroCStruct Ptr ImageResolve p IO b f = do Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers forall a. Zero a => a zero) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Offset3D)) (Offset3D forall a. Zero a => a zero) Ptr ImageSubresourceLayers -> ImageSubresourceLayers -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 28 :: Ptr ImageSubresourceLayers)) (ImageSubresourceLayers forall a. Zero a => a zero) Ptr Offset3D -> Offset3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr Offset3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Offset3D)) (Offset3D forall a. Zero a => a zero) Ptr Extent3D -> Extent3D -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr Extent3D forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr Extent3D)) (Extent3D forall a. Zero a => a zero) IO b f instance FromCStruct ImageResolve where peekCStruct :: Ptr ImageResolve -> IO ImageResolve peekCStruct Ptr ImageResolve p = do srcSubresource <- forall a. FromCStruct a => Ptr a -> IO a peekCStruct @ImageSubresourceLayers ((Ptr ImageResolve p Ptr ImageResolve -> Int -> Ptr ImageSubresourceLayers forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageSubresourceLayers)) srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D)) dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D)) extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D)) pure $ ImageResolve srcSubresource srcOffset dstSubresource dstOffset extent instance Storable ImageResolve where sizeOf :: ImageResolve -> Int sizeOf ~ImageResolve _ = Int 68 alignment :: ImageResolve -> Int alignment ~ImageResolve _ = Int 4 peek :: Ptr ImageResolve -> IO ImageResolve peek = Ptr ImageResolve -> IO ImageResolve forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr ImageResolve -> ImageResolve -> IO () poke Ptr ImageResolve ptr ImageResolve poked = Ptr ImageResolve -> ImageResolve -> IO () -> IO () forall b. Ptr ImageResolve -> ImageResolve -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ImageResolve ptr ImageResolve poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero ImageResolve where zero :: ImageResolve zero = ImageSubresourceLayers -> Offset3D -> ImageSubresourceLayers -> Offset3D -> Extent3D -> ImageResolve ImageResolve ImageSubresourceLayers forall a. Zero a => a zero Offset3D forall a. Zero a => a zero ImageSubresourceLayers forall a. Zero a => a zero Offset3D forall a. Zero a => a zero Extent3D forall a. Zero a => a zero -- | VkRenderPassBeginInfo - Structure specifying render pass begin -- information -- -- = Description -- -- @renderArea@ is the render area that is affected by the render pass -- instance. The effects of attachment load, store, and multisample resolve -- operations are restricted to the pixels whose x and y coordinates fall -- within the render area on all attachments. The render area extends to -- all layers of @framebuffer@. The application /must/ ensure (using -- scissor if necessary) that all rendering is contained within the render -- area. The render area, after any transform specified by -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@ -- is applied, /must/ be contained within the framebuffer dimensions. -- -- If -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform> -- is enabled, then @renderArea@ /must/ equal the framebuffer -- pre-transformed dimensions. After @renderArea@ has been transformed by -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@, -- the resulting render area /must/ be equal to the framebuffer dimensions. -- -- If multiview is enabled in @renderPass@, and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas> -- feature is enabled, and there is an instance of -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM' -- included in the @pNext@ chain with @perViewRenderAreaCount@ not equal to -- @0@, then the elements of -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM'::@pPerViewRenderAreas@ -- override @renderArea@ and define a render area for each view. In this -- case, @renderArea@ /must/ be an area at least as large as the union of -- all the per-view render areas. -- -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subpassShading subpassShading> -- feature is enabled, then @renderArea@ /must/ equal the framebuffer -- dimensions. -- -- There /may/ be a performance cost for using a render area smaller than -- the framebuffer, unless it matches the render area granularity for the -- render pass. -- -- == Valid Usage -- -- - #VUID-VkRenderPassBeginInfo-clearValueCount-00902# @clearValueCount@ -- /must/ be greater than the largest attachment index in @renderPass@ -- specifying a @loadOp@ (or @stencilLoadOp@, if the attachment has a -- depth\/stencil format) of -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' -- -- - #VUID-VkRenderPassBeginInfo-clearValueCount-04962# If -- @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid -- pointer to an array of @clearValueCount@ 'ClearValue' unions -- -- - #VUID-VkRenderPassBeginInfo-renderPass-00904# @renderPass@ /must/ be -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-compatibility compatible> -- with the @renderPass@ member of the -- 'Vulkan.Core10.Pass.FramebufferCreateInfo' structure specified when -- creating @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-None-08996# 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.extent.width@ /must/ be greater than 0 -- -- - #VUID-VkRenderPassBeginInfo-None-08997# 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.extent.height@ /must/ be greater than 0 -- -- - #VUID-VkRenderPassBeginInfo-pNext-02850# 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-VkRenderPassBeginInfo-pNext-02851# 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-VkRenderPassBeginInfo-pNext-02852# 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@ + @renderArea.extent.width@ /must/ be less -- than or equal to 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@ -- the @framebuffer@ was created with -- -- - #VUID-VkRenderPassBeginInfo-pNext-02853# 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@ + @renderArea.extent.height@ /must/ be less -- than or equal to -- 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the -- @framebuffer@ was created with -- -- - #VUID-VkRenderPassBeginInfo-pNext-02856# If the @pNext@ chain -- contains -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo', -- @offset.x@ + @extent.width@ of each element of @pDeviceRenderAreas@ -- /must/ be less than or equal to -- 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@ the -- @framebuffer@ was created with -- -- - #VUID-VkRenderPassBeginInfo-pNext-02857# If the @pNext@ chain -- contains -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo', -- @offset.y@ + @extent.height@ of each element of @pDeviceRenderAreas@ -- /must/ be less than or equal to -- 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the -- @framebuffer@ was created with -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03207# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that did not include -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- and the @pNext@ chain includes a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure, its @attachmentCount@ /must/ be zero -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03208# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- the @attachmentCount@ of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be equal to the value -- of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@attachmentImageInfoCount@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-02780# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ have been created on -- the same 'Vulkan.Core10.Handles.Device' as @framebuffer@ and -- @renderPass@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03209# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' of an image created with a value -- of 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ equal to the -- @flags@ member of the corresponding element of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-12328# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each @pAttachments@ member of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- that is used as a resolve attachment by @renderPass@ /must/ not be -- bound to a 'Vulkan.Core10.Handles.DeviceMemory' object allocated -- from a 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-04627# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' with -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-inherited-usage an inherited usage> -- equal to the @usage@ member of the corresponding element of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03211# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' with a width equal to the @width@ -- member of the corresponding element of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03212# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' with a height equal to the -- @height@ member of the corresponding element of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03213# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' of an image created with a value -- of -- 'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@subresourceRange.layerCount@ -- equal to the @layerCount@ member of the corresponding element of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03214# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' of an image created with a value -- of -- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@ -- equal to the @viewFormatCount@ member of the corresponding element -- of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03215# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' of an image created with a set of -- elements in -- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@ -- equal to the set of elements in the @pViewFormats@ member of the -- corresponding element of -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@ -- used to create @framebuffer@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-03216# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' of an image created with a value -- of 'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@format@ equal to -- the corresponding value of -- 'Vulkan.Core10.Pass.AttachmentDescription'::@format@ in @renderPass@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-09353# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve> -- is 'Vulkan.Core10.FundamentalTypes.FALSE', the format of the color -- attachment for each subpass that includes an external format image -- as a resolve attachment /must/ have a format equal to the value of -- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID'::@colorAttachmentFormat@ -- as returned by a call to -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID' -- for the Android hardware buffer that was used to create the image -- view use as its resolve attachment -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-09354# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' of an image created with a value -- of -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- equal to -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@ -- in the @pNext@ chain of the corresponding -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2' -- structure used to create @renderPass@ -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-09047# If @framebuffer@ was -- created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@ -- value that included -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', -- each element of the @pAttachments@ member of a -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo' -- structure included in the @pNext@ chain /must/ be a -- 'Vulkan.Core10.Handles.ImageView' of an image created with a value -- of 'Vulkan.Core10.Image.ImageCreateInfo'::@samples@ equal to the -- corresponding value of -- 'Vulkan.Core10.Pass.AttachmentDescription'::@samples@ in -- @renderPass@ , or -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' if -- @renderPass@ was created with -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure in the @pNext@ chain with -- @multisampledRenderToSingleSampledEnable@ equal to -- 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- - #VUID-VkRenderPassBeginInfo-pNext-02869# If the @pNext@ chain -- includes -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM', -- @renderArea.offset@ /must/ equal (0,0) -- -- - #VUID-VkRenderPassBeginInfo-pNext-02870# If the @pNext@ chain -- includes -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM', -- @renderArea.extent@ transformed by -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@ -- /must/ equal the @framebuffer@ dimensions -- -- - #VUID-VkRenderPassBeginInfo-perViewRenderAreaCount-07859# If the -- @perViewRenderAreaCount@ member of a -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM' -- structure included in the @pNext@ chain is not @0@, then the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas> -- feature /must/ be enabled -- -- - #VUID-VkRenderPassBeginInfo-perViewRenderAreaCount-07860# If the -- @perViewRenderAreaCount@ member of a -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM' -- structure included in the @pNext@ chain is not @0@, then -- @renderArea@ /must/ specify a render area that includes the union of -- all per view render areas -- -- - #VUID-VkRenderPassBeginInfo-pNext-09539# If the @pNext@ chain -- contains a -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM' -- structure, the union of stripe areas defined by the elements of -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'::@pStripeInfos@ -- /must/ cover the @renderArea@ -- -- == Valid Usage (Implicit) -- -- - #VUID-VkRenderPassBeginInfo-sType-sType# @sType@ /must/ be -- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO' -- -- - #VUID-VkRenderPassBeginInfo-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', -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM', -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARM>, -- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT', -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM', -- or -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM' -- -- - #VUID-VkRenderPassBeginInfo-sType-unique# The @sType@ value of each -- structure in the @pNext@ chain /must/ be unique -- -- - #VUID-VkRenderPassBeginInfo-renderPass-parameter# @renderPass@ -- /must/ be a valid 'Vulkan.Core10.Handles.RenderPass' handle -- -- - #VUID-VkRenderPassBeginInfo-framebuffer-parameter# @framebuffer@ -- /must/ be a valid 'Vulkan.Core10.Handles.Framebuffer' handle -- -- - #VUID-VkRenderPassBeginInfo-commonparent# Both of @framebuffer@, and -- @renderPass@ /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_VERSION_1_0 VK_VERSION_1_0>, -- 'ClearValue', 'Vulkan.Core10.Handles.Framebuffer', -- 'Vulkan.Core10.FundamentalTypes.Rect2D', -- 'Vulkan.Core10.Handles.RenderPass', -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBeginRenderPass', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2' data RenderPassBeginInfo (es :: [Type]) = RenderPassBeginInfo { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure. forall (es :: [*]). RenderPassBeginInfo es -> Chain es next :: Chain es , -- | @renderPass@ is the render pass to begin an instance of. forall (es :: [*]). RenderPassBeginInfo es -> RenderPass renderPass :: RenderPass , -- | @framebuffer@ is the framebuffer containing the attachments that are -- used with the render pass. forall (es :: [*]). RenderPassBeginInfo es -> Framebuffer framebuffer :: Framebuffer , -- | @renderArea@ is the render area that is affected by the render pass -- instance, and is described in more detail below. forall (es :: [*]). RenderPassBeginInfo es -> Rect2D renderArea :: Rect2D , -- | @pClearValues@ is a pointer to an array of @clearValueCount@ -- 'ClearValue' structures containing clear values for each attachment, if -- the attachment uses a @loadOp@ value of -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' or if -- the attachment has a depth\/stencil format and uses a @stencilLoadOp@ -- value of -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'. The -- array is indexed by attachment number. Only elements corresponding to -- cleared attachments are used. Other elements of @pClearValues@ are -- ignored. forall (es :: [*]). RenderPassBeginInfo es -> Vector ClearValue clearValues :: Vector ClearValue } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (RenderPassBeginInfo (es :: [Type])) #endif deriving instance Show (Chain es) => Show (RenderPassBeginInfo es) instance Extensible RenderPassBeginInfo where extensibleTypeName :: String extensibleTypeName = String "RenderPassBeginInfo" setNext :: forall (ds :: [*]) (es :: [*]). RenderPassBeginInfo ds -> Chain es -> RenderPassBeginInfo es setNext RenderPassBeginInfo{Vector ClearValue Rect2D RenderPass Framebuffer Chain ds next :: forall (es :: [*]). RenderPassBeginInfo es -> Chain es renderPass :: forall (es :: [*]). RenderPassBeginInfo es -> RenderPass framebuffer :: forall (es :: [*]). RenderPassBeginInfo es -> Framebuffer renderArea :: forall (es :: [*]). RenderPassBeginInfo es -> Rect2D clearValues :: forall (es :: [*]). RenderPassBeginInfo es -> Vector ClearValue next :: Chain ds renderPass :: RenderPass framebuffer :: Framebuffer renderArea :: Rect2D clearValues :: Vector ClearValue ..} Chain es next' = RenderPassBeginInfo{next :: Chain es next = Chain es next', Vector ClearValue Rect2D RenderPass Framebuffer renderPass :: RenderPass framebuffer :: Framebuffer renderArea :: Rect2D clearValues :: Vector ClearValue renderPass :: RenderPass framebuffer :: Framebuffer renderArea :: Rect2D clearValues :: Vector ClearValue ..} getNext :: forall (es :: [*]). RenderPassBeginInfo es -> Chain es getNext RenderPassBeginInfo{Vector ClearValue Rect2D RenderPass Framebuffer Chain es next :: forall (es :: [*]). RenderPassBeginInfo es -> Chain es renderPass :: forall (es :: [*]). RenderPassBeginInfo es -> RenderPass framebuffer :: forall (es :: [*]). RenderPassBeginInfo es -> Framebuffer renderArea :: forall (es :: [*]). RenderPassBeginInfo es -> Rect2D clearValues :: forall (es :: [*]). RenderPassBeginInfo es -> Vector ClearValue next :: Chain es renderPass :: RenderPass framebuffer :: Framebuffer renderArea :: Rect2D clearValues :: Vector ClearValue ..} = Chain es next extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassBeginInfo e => b) -> Maybe b extends :: forall e b (proxy :: * -> *). Typeable e => proxy e -> (Extends RenderPassBeginInfo e => b) -> Maybe b extends proxy e _ Extends RenderPassBeginInfo e => b f | Just e :~: RenderPassStripeBeginInfoARM Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderPassStripeBeginInfoARM = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderPassBeginInfo e => b f | Just e :~: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderPassBeginInfo e => b f | Just e :~: RenderPassTransformBeginInfoQCOM Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderPassTransformBeginInfoQCOM = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderPassBeginInfo e => b f | Just e :~: RenderPassAttachmentBeginInfo Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderPassAttachmentBeginInfo = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderPassBeginInfo e => b f | Just e :~: RenderPassSampleLocationsBeginInfoEXT Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderPassSampleLocationsBeginInfoEXT = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderPassBeginInfo e => b f | Just e :~: DeviceGroupRenderPassBeginInfo Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @DeviceGroupRenderPassBeginInfo = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderPassBeginInfo e => b f | Bool otherwise = Maybe b forall a. Maybe a Nothing instance ( Extendss RenderPassBeginInfo es , PokeChain es ) => ToCStruct (RenderPassBeginInfo es) where withCStruct :: forall b. RenderPassBeginInfo es -> (Ptr (RenderPassBeginInfo es) -> IO b) -> IO b withCStruct RenderPassBeginInfo es x Ptr (RenderPassBeginInfo es) -> IO b f = Int -> (Ptr (RenderPassBeginInfo es) -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 64 ((Ptr (RenderPassBeginInfo es) -> IO b) -> IO b) -> (Ptr (RenderPassBeginInfo es) -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr (RenderPassBeginInfo es) p -> Ptr (RenderPassBeginInfo es) -> RenderPassBeginInfo es -> IO b -> IO b forall b. Ptr (RenderPassBeginInfo es) -> RenderPassBeginInfo es -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr (RenderPassBeginInfo es) p RenderPassBeginInfo es x (Ptr (RenderPassBeginInfo es) -> IO b f Ptr (RenderPassBeginInfo es) p) pokeCStruct :: forall b. Ptr (RenderPassBeginInfo es) -> RenderPassBeginInfo es -> IO b -> IO b pokeCStruct Ptr (RenderPassBeginInfo es) p RenderPassBeginInfo{Vector ClearValue Rect2D RenderPass Framebuffer Chain es next :: forall (es :: [*]). RenderPassBeginInfo es -> Chain es renderPass :: forall (es :: [*]). RenderPassBeginInfo es -> RenderPass framebuffer :: forall (es :: [*]). RenderPassBeginInfo es -> Framebuffer renderArea :: forall (es :: [*]). RenderPassBeginInfo es -> Rect2D clearValues :: forall (es :: [*]). RenderPassBeginInfo es -> Vector ClearValue next :: Chain es renderPass :: RenderPass framebuffer :: Framebuffer renderArea :: Rect2D clearValues :: Vector ClearValue ..} IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr (RenderPassBeginInfo es) p Ptr (RenderPassBeginInfo es) -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO) pNext'' <- (Ptr (Chain es) -> "data" ::: Ptr ()) -> ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ()) forall a b. (a -> b) -> ContT b IO a -> ContT b IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Ptr (Chain es) -> "data" ::: Ptr () forall a b. Ptr a -> Ptr b castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ())) -> (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO ("data" ::: Ptr ()) forall b c a. (b -> c) -> (a -> b) -> a -> c . ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO ("data" ::: Ptr ())) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO ("data" ::: Ptr ()) forall a b. (a -> b) -> a -> b $ Chain es -> (Ptr (Chain es) -> IO b) -> IO b forall (es :: [*]) a. PokeChain es => Chain es -> (Ptr (Chain es) -> IO a) -> IO a forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a withChain (Chain es next) lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'' lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (renderPass) lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (framebuffer) lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (renderArea) lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (clearValues)) :: Word32)) pPClearValues' <- ContT $ allocaBytes @ClearValue ((Data.Vector.length (clearValues)) * 16) Data.Vector.imapM_ (\Int i ClearValue e -> ((() -> IO b) -> IO b) -> ContT b IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO b) -> IO b) -> ContT b IO ()) -> ((() -> IO b) -> IO b) -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr ClearValue -> ClearValue -> IO b -> IO b forall b. Ptr ClearValue -> ClearValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct (Ptr ClearValue pPClearValues' Ptr ClearValue -> Int -> Ptr ClearValue forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 16 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr ClearValue) (ClearValue e) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO b) -> () -> IO b forall a b. (a -> b) -> a -> b $ ())) (clearValues) lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr ClearValue))) (pPClearValues') lift $ f cStructSize :: Int cStructSize = Int 64 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr (RenderPassBeginInfo es) -> IO b -> IO b pokeZeroCStruct Ptr (RenderPassBeginInfo es) p IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr (RenderPassBeginInfo es) p Ptr (RenderPassBeginInfo es) -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO) pNext' <- (Ptr (Chain es) -> "data" ::: Ptr ()) -> ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ()) forall a b. (a -> b) -> ContT b IO a -> ContT b IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Ptr (Chain es) -> "data" ::: Ptr () forall a b. Ptr a -> Ptr b castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ())) -> (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO ("data" ::: Ptr ()) forall b c a. (b -> c) -> (a -> b) -> a -> c . ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO ("data" ::: Ptr ())) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO ("data" ::: Ptr ()) forall a b. (a -> b) -> a -> b $ forall (es :: [*]) a. PokeChain es => (Ptr (Chain es) -> IO a) -> IO a withZeroChain @es lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext' lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (zero) lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (zero) lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (zero) lift $ f instance es ~ '[] => Zero (RenderPassBeginInfo es) where zero :: RenderPassBeginInfo es zero = Chain es -> RenderPass -> Framebuffer -> Rect2D -> Vector ClearValue -> RenderPassBeginInfo es forall (es :: [*]). Chain es -> RenderPass -> Framebuffer -> Rect2D -> Vector ClearValue -> RenderPassBeginInfo es RenderPassBeginInfo () RenderPass forall a. Zero a => a zero Framebuffer forall a. Zero a => a zero Rect2D forall a. Zero a => a zero Vector ClearValue forall a. Monoid a => a mempty -- | VkClearDepthStencilValue - Structure specifying a clear depth stencil -- value -- -- == Valid Usage -- -- - #VUID-VkClearDepthStencilValue-depth-00022# Unless the -- @VK_EXT_depth_range_unrestricted@ extension is enabled @depth@ -- /must/ be between @0.0@ and @1.0@, inclusive -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'ClearValue', 'cmdClearDepthStencilImage' data ClearDepthStencilValue = ClearDepthStencilValue { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil -- attachment. It is a floating-point value which is automatically -- converted to the attachment’s format. ClearDepthStencilValue -> "lineWidth" ::: Float depth :: Float , -- | @stencil@ is the clear value for the stencil aspect of the -- depth\/stencil attachment. It is a 32-bit integer value which is -- converted to the attachment’s format by taking the appropriate number of -- LSBs. ClearDepthStencilValue -> "firstViewport" ::: Word32 stencil :: Word32 } deriving (Typeable, ClearDepthStencilValue -> ClearDepthStencilValue -> Bool (ClearDepthStencilValue -> ClearDepthStencilValue -> Bool) -> (ClearDepthStencilValue -> ClearDepthStencilValue -> Bool) -> Eq ClearDepthStencilValue forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: ClearDepthStencilValue -> ClearDepthStencilValue -> Bool == :: ClearDepthStencilValue -> ClearDepthStencilValue -> Bool $c/= :: ClearDepthStencilValue -> ClearDepthStencilValue -> Bool /= :: ClearDepthStencilValue -> ClearDepthStencilValue -> Bool Eq) #if defined(GENERIC_INSTANCES) deriving instance Generic (ClearDepthStencilValue) #endif deriving instance Show ClearDepthStencilValue instance ToCStruct ClearDepthStencilValue where withCStruct :: forall b. ClearDepthStencilValue -> (Ptr ClearDepthStencilValue -> IO b) -> IO b withCStruct ClearDepthStencilValue x Ptr ClearDepthStencilValue -> IO b f = Int -> (Ptr ClearDepthStencilValue -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 8 ((Ptr ClearDepthStencilValue -> IO b) -> IO b) -> (Ptr ClearDepthStencilValue -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ClearDepthStencilValue p -> Ptr ClearDepthStencilValue -> ClearDepthStencilValue -> IO b -> IO b forall b. Ptr ClearDepthStencilValue -> ClearDepthStencilValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ClearDepthStencilValue p ClearDepthStencilValue x (Ptr ClearDepthStencilValue -> IO b f Ptr ClearDepthStencilValue p) pokeCStruct :: forall b. Ptr ClearDepthStencilValue -> ClearDepthStencilValue -> IO b -> IO b pokeCStruct Ptr ClearDepthStencilValue p ClearDepthStencilValue{"lineWidth" ::: Float "firstViewport" ::: Word32 depth :: ClearDepthStencilValue -> "lineWidth" ::: Float stencil :: ClearDepthStencilValue -> "firstViewport" ::: Word32 depth :: "lineWidth" ::: Float stencil :: "firstViewport" ::: Word32 ..} IO b f = do Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearDepthStencilValue p Ptr ClearDepthStencilValue -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr CFloat)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float depth)) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearDepthStencilValue p Ptr ClearDepthStencilValue -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Word32)) ("firstViewport" ::: Word32 stencil) IO b f cStructSize :: Int cStructSize = Int 8 cStructAlignment :: Int cStructAlignment = Int 4 pokeZeroCStruct :: forall b. Ptr ClearDepthStencilValue -> IO b -> IO b pokeZeroCStruct Ptr ClearDepthStencilValue p IO b f = do Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearDepthStencilValue p Ptr ClearDepthStencilValue -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr CFloat)) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float forall a. Zero a => a zero)) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearDepthStencilValue p Ptr ClearDepthStencilValue -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) IO b f instance FromCStruct ClearDepthStencilValue where peekCStruct :: Ptr ClearDepthStencilValue -> IO ClearDepthStencilValue peekCStruct Ptr ClearDepthStencilValue p = do depth <- forall a. Storable a => Ptr a -> IO a peek @CFloat ((Ptr ClearDepthStencilValue p Ptr ClearDepthStencilValue -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr CFloat)) stencil <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32)) pure $ ClearDepthStencilValue (coerce @CFloat @Float depth) stencil instance Storable ClearDepthStencilValue where sizeOf :: ClearDepthStencilValue -> Int sizeOf ~ClearDepthStencilValue _ = Int 8 alignment :: ClearDepthStencilValue -> Int alignment ~ClearDepthStencilValue _ = Int 4 peek :: Ptr ClearDepthStencilValue -> IO ClearDepthStencilValue peek = Ptr ClearDepthStencilValue -> IO ClearDepthStencilValue forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr ClearDepthStencilValue -> ClearDepthStencilValue -> IO () poke Ptr ClearDepthStencilValue ptr ClearDepthStencilValue poked = Ptr ClearDepthStencilValue -> ClearDepthStencilValue -> IO () -> IO () forall b. Ptr ClearDepthStencilValue -> ClearDepthStencilValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ClearDepthStencilValue ptr ClearDepthStencilValue poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero ClearDepthStencilValue where zero :: ClearDepthStencilValue zero = ("lineWidth" ::: Float) -> ("firstViewport" ::: Word32) -> ClearDepthStencilValue ClearDepthStencilValue "lineWidth" ::: Float forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero -- | VkClearAttachment - Structure specifying a clear attachment -- -- == Valid Usage -- -- - #VUID-VkClearAttachment-aspectMask-00019# If @aspectMask@ includes -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it -- /must/ not include -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' -- -- - #VUID-VkClearAttachment-aspectMask-00020# @aspectMask@ /must/ not -- include -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT' -- -- - #VUID-VkClearAttachment-aspectMask-02246# @aspectMask@ /must/ not -- include @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index /i/ -- -- == Valid Usage (Implicit) -- -- - #VUID-VkClearAttachment-aspectMask-parameter# @aspectMask@ /must/ be -- a valid combination of -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values -- -- - #VUID-VkClearAttachment-aspectMask-requiredbitmask# @aspectMask@ -- /must/ not be @0@ -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'ClearValue', -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', -- 'cmdClearAttachments' data ClearAttachment = ClearAttachment { -- | @aspectMask@ is a mask selecting the color, depth and\/or stencil -- aspects of the attachment to be cleared. ClearAttachment -> ImageAspectFlags aspectMask :: ImageAspectFlags , -- | @colorAttachment@ is only meaningful if -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' is set -- in @aspectMask@, in which case it is an index into the bound color -- attachments. ClearAttachment -> "firstViewport" ::: Word32 colorAttachment :: Word32 , -- | @clearValue@ is the color or depth\/stencil value to clear the -- attachment to, as described in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears-values Clear Values> -- below. ClearAttachment -> ClearValue clearValue :: ClearValue } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (ClearAttachment) #endif deriving instance Show ClearAttachment instance ToCStruct ClearAttachment where withCStruct :: forall b. ClearAttachment -> (Ptr ClearAttachment -> IO b) -> IO b withCStruct ClearAttachment x Ptr ClearAttachment -> IO b f = Int -> (Ptr ClearAttachment -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 24 ((Ptr ClearAttachment -> IO b) -> IO b) -> (Ptr ClearAttachment -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ClearAttachment p -> Ptr ClearAttachment -> ClearAttachment -> IO b -> IO b forall b. Ptr ClearAttachment -> ClearAttachment -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ClearAttachment p ClearAttachment x (Ptr ClearAttachment -> IO b f Ptr ClearAttachment p) pokeCStruct :: forall b. Ptr ClearAttachment -> ClearAttachment -> IO b -> IO b pokeCStruct Ptr ClearAttachment p ClearAttachment{"firstViewport" ::: Word32 ImageAspectFlags ClearValue aspectMask :: ClearAttachment -> ImageAspectFlags colorAttachment :: ClearAttachment -> "firstViewport" ::: Word32 clearValue :: ClearAttachment -> ClearValue aspectMask :: ImageAspectFlags colorAttachment :: "firstViewport" ::: Word32 clearValue :: ClearValue ..} IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr ImageAspectFlags -> ImageAspectFlags -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearAttachment p Ptr ClearAttachment -> Int -> Ptr ImageAspectFlags forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageAspectFlags)) (ImageAspectFlags aspectMask) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearAttachment p Ptr ClearAttachment -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Word32)) ("firstViewport" ::: Word32 colorAttachment) ((() -> IO b) -> IO b) -> ContT b IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO b) -> IO b) -> ContT b IO ()) -> ((() -> IO b) -> IO b) -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr ClearValue -> ClearValue -> IO b -> IO b forall b. Ptr ClearValue -> ClearValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct ((Ptr ClearAttachment p Ptr ClearAttachment -> Int -> Ptr ClearValue forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr ClearValue)) (ClearValue clearValue) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO b) -> () -> IO b forall a b. (a -> b) -> a -> b $ ()) IO b -> ContT b IO b forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b forall a b. (a -> b) -> a -> b $ IO b f cStructSize :: Int cStructSize = Int 24 cStructAlignment :: Int cStructAlignment = Int 4 pokeZeroCStruct :: forall b. Ptr ClearAttachment -> IO b -> IO b pokeZeroCStruct Ptr ClearAttachment p IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr ImageAspectFlags -> ImageAspectFlags -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearAttachment p Ptr ClearAttachment -> Int -> Ptr ImageAspectFlags forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr ImageAspectFlags)) (ImageAspectFlags forall a. Zero a => a zero) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr ClearAttachment p Ptr ClearAttachment -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Word32)) ("firstViewport" ::: Word32 forall a. Zero a => a zero) ((() -> IO b) -> IO b) -> ContT b IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO b) -> IO b) -> ContT b IO ()) -> ((() -> IO b) -> IO b) -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr ClearValue -> ClearValue -> IO b -> IO b forall b. Ptr ClearValue -> ClearValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct ((Ptr ClearAttachment p Ptr ClearAttachment -> Int -> Ptr ClearValue forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr ClearValue)) (ClearValue forall a. Zero a => a zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO b) -> () -> IO b forall a b. (a -> b) -> a -> b $ ()) IO b -> ContT b IO b forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b forall a b. (a -> b) -> a -> b $ IO b f instance Zero ClearAttachment where zero :: ClearAttachment zero = ImageAspectFlags -> ("firstViewport" ::: Word32) -> ClearValue -> ClearAttachment ClearAttachment ImageAspectFlags forall a. Zero a => a zero "firstViewport" ::: Word32 forall a. Zero a => a zero ClearValue forall a. Zero a => a zero data ClearColorValue = Float32 Float Float Float Float | Int32 Int32 Int32 Int32 Int32 | Uint32 Word32 Word32 Word32 Word32 deriving (Int -> ClearColorValue -> ShowS [ClearColorValue] -> ShowS ClearColorValue -> String (Int -> ClearColorValue -> ShowS) -> (ClearColorValue -> String) -> ([ClearColorValue] -> ShowS) -> Show ClearColorValue forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> ClearColorValue -> ShowS showsPrec :: Int -> ClearColorValue -> ShowS $cshow :: ClearColorValue -> String show :: ClearColorValue -> String $cshowList :: [ClearColorValue] -> ShowS showList :: [ClearColorValue] -> ShowS Show) instance ToCStruct ClearColorValue where withCStruct :: forall b. ClearColorValue -> (Ptr ClearColorValue -> IO b) -> IO b withCStruct ClearColorValue x Ptr ClearColorValue -> IO b f = Int -> (Ptr ClearColorValue -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 16 ((Ptr ClearColorValue -> IO b) -> IO b) -> (Ptr ClearColorValue -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ClearColorValue p -> Ptr ClearColorValue -> ClearColorValue -> IO b -> IO b forall b. Ptr ClearColorValue -> ClearColorValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ClearColorValue p ClearColorValue x (Ptr ClearColorValue -> IO b f Ptr ClearColorValue p) pokeCStruct :: Ptr ClearColorValue -> ClearColorValue -> IO a -> IO a pokeCStruct :: forall b. Ptr ClearColorValue -> ClearColorValue -> IO b -> IO b pokeCStruct Ptr ClearColorValue p = (((() -> IO a) -> IO a) -> (IO a -> () -> IO a) -> IO a -> IO a forall b c a. (b -> c) -> (a -> b) -> a -> c . IO a -> () -> IO a forall a b. a -> b -> a const) (((() -> IO a) -> IO a) -> IO a -> IO a) -> (ClearColorValue -> (() -> IO a) -> IO a) -> ClearColorValue -> IO a -> IO a forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT a IO () -> (() -> IO a) -> IO a forall {k} (r :: k) (m :: k -> *) a. ContT r m a -> (a -> m r) -> m r runContT (ContT a IO () -> (() -> IO a) -> IO a) -> (ClearColorValue -> ContT a IO ()) -> ClearColorValue -> (() -> IO a) -> IO a forall b c a. (b -> c) -> (a -> b) -> a -> c . \case Float32 "lineWidth" ::: Float v0 "lineWidth" ::: Float v1 "lineWidth" ::: Float v2 "lineWidth" ::: Float v3 -> IO () -> ContT a IO () forall (m :: * -> *) a. Monad m => m a -> ContT a m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO () forall a b. (a -> b) -> a -> b $ do let pFloat32 :: Ptr CFloat pFloat32 = Ptr (FixedArray 4 CFloat) -> Ptr CFloat forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr (forall a b. Ptr a -> Ptr b castPtr @_ @(FixedArray 4 CFloat) Ptr ClearColorValue p) case (("lineWidth" ::: Float v0, "lineWidth" ::: Float v1, "lineWidth" ::: Float v2, "lineWidth" ::: Float v3)) of ("lineWidth" ::: Float e0, "lineWidth" ::: Float e1, "lineWidth" ::: Float e2, "lineWidth" ::: Float e3) -> do Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pFloat32 :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float e0)) Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pFloat32 Ptr CFloat -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float e1)) Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pFloat32 Ptr CFloat -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float e2)) Ptr CFloat -> CFloat -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr CFloat pFloat32 Ptr CFloat -> Int -> Ptr CFloat forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr CFloat) (("lineWidth" ::: Float) -> CFloat CFloat ("lineWidth" ::: Float e3)) Int32 "vertexOffset" ::: Int32 v0 "vertexOffset" ::: Int32 v1 "vertexOffset" ::: Int32 v2 "vertexOffset" ::: Int32 v3 -> IO () -> ContT a IO () forall (m :: * -> *) a. Monad m => m a -> ContT a m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO () forall a b. (a -> b) -> a -> b $ do let pInt32 :: Ptr ("vertexOffset" ::: Int32) pInt32 = Ptr (FixedArray 4 ("vertexOffset" ::: Int32)) -> Ptr ("vertexOffset" ::: Int32) forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr (forall a b. Ptr a -> Ptr b castPtr @_ @(FixedArray 4 Int32) Ptr ClearColorValue p) case (("vertexOffset" ::: Int32 v0, "vertexOffset" ::: Int32 v1, "vertexOffset" ::: Int32 v2, "vertexOffset" ::: Int32 v3)) of ("vertexOffset" ::: Int32 e0, "vertexOffset" ::: Int32 e1, "vertexOffset" ::: Int32 e2, "vertexOffset" ::: Int32 e3) -> do Ptr ("vertexOffset" ::: Int32) -> ("vertexOffset" ::: Int32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("vertexOffset" ::: Int32) pInt32 :: Ptr Int32) ("vertexOffset" ::: Int32 e0) Ptr ("vertexOffset" ::: Int32) -> ("vertexOffset" ::: Int32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("vertexOffset" ::: Int32) pInt32 Ptr ("vertexOffset" ::: Int32) -> Int -> Ptr ("vertexOffset" ::: Int32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Int32) ("vertexOffset" ::: Int32 e1) Ptr ("vertexOffset" ::: Int32) -> ("vertexOffset" ::: Int32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("vertexOffset" ::: Int32) pInt32 Ptr ("vertexOffset" ::: Int32) -> Int -> Ptr ("vertexOffset" ::: Int32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr Int32) ("vertexOffset" ::: Int32 e2) Ptr ("vertexOffset" ::: Int32) -> ("vertexOffset" ::: Int32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("vertexOffset" ::: Int32) pInt32 Ptr ("vertexOffset" ::: Int32) -> Int -> Ptr ("vertexOffset" ::: Int32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Int32) ("vertexOffset" ::: Int32 e3) Uint32 "firstViewport" ::: Word32 v0 "firstViewport" ::: Word32 v1 "firstViewport" ::: Word32 v2 "firstViewport" ::: Word32 v3 -> IO () -> ContT a IO () forall (m :: * -> *) a. Monad m => m a -> ContT a m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO () forall a b. (a -> b) -> a -> b $ do let pUint32 :: Ptr ("firstViewport" ::: Word32) pUint32 = Ptr (FixedArray 4 ("firstViewport" ::: Word32)) -> Ptr ("firstViewport" ::: Word32) forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a lowerArrayPtr (forall a b. Ptr a -> Ptr b castPtr @_ @(FixedArray 4 Word32) Ptr ClearColorValue p) case (("firstViewport" ::: Word32 v0, "firstViewport" ::: Word32 v1, "firstViewport" ::: Word32 v2, "firstViewport" ::: Word32 v3)) of ("firstViewport" ::: Word32 e0, "firstViewport" ::: Word32 e1, "firstViewport" ::: Word32 e2, "firstViewport" ::: Word32 e3) -> do Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("firstViewport" ::: Word32) pUint32 :: Ptr Word32) ("firstViewport" ::: Word32 e0) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("firstViewport" ::: Word32) pUint32 Ptr ("firstViewport" ::: Word32) -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 4 :: Ptr Word32) ("firstViewport" ::: Word32 e1) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("firstViewport" ::: Word32) pUint32 Ptr ("firstViewport" ::: Word32) -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr Word32) ("firstViewport" ::: Word32 e2) Ptr ("firstViewport" ::: Word32) -> ("firstViewport" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr ("firstViewport" ::: Word32) pUint32 Ptr ("firstViewport" ::: Word32) -> Int -> Ptr ("firstViewport" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 12 :: Ptr Word32) ("firstViewport" ::: Word32 e3) pokeZeroCStruct :: Ptr ClearColorValue -> IO b -> IO b pokeZeroCStruct :: forall b. Ptr ClearColorValue -> IO b -> IO b pokeZeroCStruct Ptr ClearColorValue _ IO b f = IO b f cStructSize :: Int cStructSize = Int 16 cStructAlignment :: Int cStructAlignment = Int 4 instance Zero ClearColorValue where zero :: ClearColorValue zero = ("lineWidth" ::: Float) -> ("lineWidth" ::: Float) -> ("lineWidth" ::: Float) -> ("lineWidth" ::: Float) -> ClearColorValue Float32 "lineWidth" ::: Float forall a. Zero a => a zero "lineWidth" ::: Float forall a. Zero a => a zero "lineWidth" ::: Float forall a. Zero a => a zero "lineWidth" ::: Float forall a. Zero a => a zero data ClearValue = Color ClearColorValue | DepthStencil ClearDepthStencilValue deriving (Int -> ClearValue -> ShowS [ClearValue] -> ShowS ClearValue -> String (Int -> ClearValue -> ShowS) -> (ClearValue -> String) -> ([ClearValue] -> ShowS) -> Show ClearValue forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> ClearValue -> ShowS showsPrec :: Int -> ClearValue -> ShowS $cshow :: ClearValue -> String show :: ClearValue -> String $cshowList :: [ClearValue] -> ShowS showList :: [ClearValue] -> ShowS Show) instance ToCStruct ClearValue where withCStruct :: forall b. ClearValue -> (Ptr ClearValue -> IO b) -> IO b withCStruct ClearValue x Ptr ClearValue -> IO b f = Int -> (Ptr ClearValue -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 16 ((Ptr ClearValue -> IO b) -> IO b) -> (Ptr ClearValue -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr ClearValue p -> Ptr ClearValue -> ClearValue -> IO b -> IO b forall b. Ptr ClearValue -> ClearValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr ClearValue p ClearValue x (Ptr ClearValue -> IO b f Ptr ClearValue p) pokeCStruct :: Ptr ClearValue -> ClearValue -> IO a -> IO a pokeCStruct :: forall b. Ptr ClearValue -> ClearValue -> IO b -> IO b pokeCStruct Ptr ClearValue p = (((() -> IO a) -> IO a) -> (IO a -> () -> IO a) -> IO a -> IO a forall b c a. (b -> c) -> (a -> b) -> a -> c . IO a -> () -> IO a forall a b. a -> b -> a const) (((() -> IO a) -> IO a) -> IO a -> IO a) -> (ClearValue -> (() -> IO a) -> IO a) -> ClearValue -> IO a -> IO a forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT a IO () -> (() -> IO a) -> IO a forall {k} (r :: k) (m :: k -> *) a. ContT r m a -> (a -> m r) -> m r runContT (ContT a IO () -> (() -> IO a) -> IO a) -> (ClearValue -> ContT a IO ()) -> ClearValue -> (() -> IO a) -> IO a forall b c a. (b -> c) -> (a -> b) -> a -> c . \case Color ClearColorValue v -> ((() -> IO a) -> IO a) -> ContT a IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO a) -> IO a) -> ContT a IO ()) -> ((() -> IO a) -> IO a) -> ContT a IO () forall a b. (a -> b) -> a -> b $ Ptr ClearColorValue -> ClearColorValue -> IO a -> IO a forall b. Ptr ClearColorValue -> ClearColorValue -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct (forall a b. Ptr a -> Ptr b castPtr @_ @ClearColorValue Ptr ClearValue p) (ClearColorValue v) (IO a -> IO a) -> ((() -> IO a) -> IO a) -> (() -> IO a) -> IO a forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO a) -> () -> IO a forall a b. (a -> b) -> a -> b $ ()) DepthStencil ClearDepthStencilValue v -> IO () -> ContT a IO () forall (m :: * -> *) a. Monad m => m a -> ContT a m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO () forall a b. (a -> b) -> a -> b $ Ptr ClearDepthStencilValue -> ClearDepthStencilValue -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (forall a b. Ptr a -> Ptr b castPtr @_ @ClearDepthStencilValue Ptr ClearValue p) (ClearDepthStencilValue v) pokeZeroCStruct :: Ptr ClearValue -> IO b -> IO b pokeZeroCStruct :: forall b. Ptr ClearValue -> IO b -> IO b pokeZeroCStruct Ptr ClearValue _ IO b f = IO b f cStructSize :: Int cStructSize = Int 16 cStructAlignment :: Int cStructAlignment = Int 4 instance Zero ClearValue where zero :: ClearValue zero = ClearColorValue -> ClearValue Color ClearColorValue forall a. Zero a => a zero