{-# language CPP #-} -- | = Name -- -- VK_EXT_transform_feedback - device extension -- -- = VK_EXT_transform_feedback -- -- [__Name String__] -- @VK_EXT_transform_feedback@ -- -- [__Extension Type__] -- Device extension -- -- [__Registered Extension Number__] -- 29 -- -- [__Revision__] -- 1 -- -- [__Ratification Status__] -- Ratified -- -- [__Extension and Version Dependencies__] -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1> -- -- [__Special Uses__] -- -- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support> -- -- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support> -- -- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools> -- -- [__Contact__] -- -- - Piers Daniell -- <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_transform_feedback] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_EXT_transform_feedback extension* > -- -- == Other Extension Metadata -- -- [__Last Modified Date__] -- 2018-10-09 -- -- [__Contributors__] -- -- - Baldur Karlsson, Valve -- -- - Boris Zanin, Mobica -- -- - Daniel Rakos, AMD -- -- - Donald Scorgie, Imagination -- -- - Henri Verbeet, CodeWeavers -- -- - Jan-Harald Fredriksen, Arm -- -- - Faith Ekstrand, Intel -- -- - Jeff Bolz, NVIDIA -- -- - Jesse Barker, Unity -- -- - Jesse Hall, Google -- -- - Pierre-Loup Griffais, Valve -- -- - Philip Rebohle, DXVK -- -- - Ruihao Zhang, Qualcomm -- -- - Samuel Pitoiset, Valve -- -- - Slawomir Grajewski, Intel -- -- - Stu Smith, Imagination Technologies -- -- == Description -- -- This extension adds transform feedback to the Vulkan API by exposing the -- SPIR-V @TransformFeedback@ and @GeometryStreams@ capabilities to capture -- vertex, tessellation, or geometry shader outputs to one or more buffers. -- It adds API functionality to bind transform feedback buffers to capture -- the primitives emitted by the graphics pipeline from SPIR-V outputs -- decorated for transform feedback. The transform feedback capture can be -- paused and resumed by way of storing and retrieving a byte counter. The -- captured data can be drawn again where the vertex count is derived from -- the byte counter without CPU intervention. If the implementation is -- capable, a vertex stream other than zero can be rasterized. -- -- All these features are designed to match the full capabilities of OpenGL -- core transform feedback functionality and beyond. Many of the features -- are optional to allow base OpenGL ES GPUs to also implement this -- extension. -- -- The primary purpose of the functionality exposed by this extension is to -- support translation layers from other 3D APIs. This functionality is not -- considered forward looking, and is not expected to be promoted to a KHR -- extension or to core Vulkan. Unless this is needed for translation, it -- is recommended that developers use alternative techniques of using the -- GPU to process and capture vertex data. -- -- == New Commands -- -- - 'cmdBeginQueryIndexedEXT' -- -- - 'cmdBeginTransformFeedbackEXT' -- -- - 'cmdBindTransformFeedbackBuffersEXT' -- -- - 'cmdDrawIndirectByteCountEXT' -- -- - 'cmdEndQueryIndexedEXT' -- -- - 'cmdEndTransformFeedbackEXT' -- -- == New Structures -- -- - Extending -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', -- 'Vulkan.Core10.Device.DeviceCreateInfo': -- -- - 'PhysicalDeviceTransformFeedbackFeaturesEXT' -- -- - Extending -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2': -- -- - 'PhysicalDeviceTransformFeedbackPropertiesEXT' -- -- - Extending -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo': -- -- - 'PipelineRasterizationStateStreamCreateInfoEXT' -- -- == New Bitmasks -- -- - 'PipelineRasterizationStateStreamCreateFlagsEXT' -- -- == New Enum Constants -- -- - 'EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME' -- -- - 'EXT_TRANSFORM_FEEDBACK_SPEC_VERSION' -- -- - Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits': -- -- - 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' -- -- - 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' -- -- - 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT' -- -- - Extending -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits': -- -- - 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' -- -- - 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' -- -- - Extending -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits': -- -- - 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' -- -- - Extending 'Vulkan.Core10.Enums.QueryType.QueryType': -- -- - 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- -- - Extending 'Vulkan.Core10.Enums.StructureType.StructureType': -- -- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT' -- -- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT' -- -- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT' -- -- == Issues -- -- 1) Should we include pause\/resume functionality? -- -- __RESOLVED__: Yes, this is needed to ease layering other APIs which have -- this functionality. To pause use 'cmdEndTransformFeedbackEXT' and -- provide valid buffer handles in the @pCounterBuffers@ array and offsets -- in the @pCounterBufferOffsets@ array for the implementation to save the -- resume points. Then to resume use 'cmdBeginTransformFeedbackEXT' with -- the previous @pCounterBuffers@ and @pCounterBufferOffsets@ values. -- Between the pause and resume there needs to be a memory barrier for the -- counter buffers with a source access of -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' -- at pipeline stage -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' -- to a destination access of -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' -- at pipeline stage -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'. -- -- 2) How does this interact with multiview? -- -- __RESOLVED__: Transform feedback cannot be made active in a render pass -- with multiview enabled. -- -- 3) How should queries be done? -- -- __RESOLVED__: There is a new query type -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'. -- A query pool created with this type will capture 2 integers - -- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex -- stream output from the last -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>. -- The vertex stream output queried is zero by default, but can be -- specified with the new 'cmdBeginQueryIndexedEXT' and -- 'cmdEndQueryIndexedEXT' commands. -- -- == Version History -- -- - Revision 1, 2018-10-09 (Piers Daniell) -- -- - Internal revisions -- -- == See Also -- -- No cross-references are available -- -- == Document Notes -- -- For more information, see the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>. -- -- This page is a generated document. Fixes and changes should be made to -- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_transform_feedback ( cmdBindTransformFeedbackBuffersEXT , cmdBeginTransformFeedbackEXT , cmdUseTransformFeedbackEXT , cmdEndTransformFeedbackEXT , cmdBeginQueryIndexedEXT , cmdUseQueryIndexedEXT , cmdEndQueryIndexedEXT , cmdDrawIndirectByteCountEXT , PhysicalDeviceTransformFeedbackFeaturesEXT(..) , PhysicalDeviceTransformFeedbackPropertiesEXT(..) , PipelineRasterizationStateStreamCreateInfoEXT(..) , PipelineRasterizationStateStreamCreateFlagsEXT(..) , EXT_TRANSFORM_FEEDBACK_SPEC_VERSION , pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION , EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME , pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME ) where import Data.Bits (Bits) import Data.Bits (FiniteBits) import Vulkan.Internal.Utils (enumReadPrec) import Vulkan.Internal.Utils (enumShowsPrec) import Vulkan.Internal.Utils (traceAroundEvent) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytes) import GHC.IO (throwIO) import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr) import GHC.Show (showString) import Numeric (showHex) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import qualified Data.Vector (imapM_) import qualified Data.Vector (length) import qualified Data.Vector (null) import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (FromCStruct(..)) import Vulkan.CStruct (ToCStruct) import Vulkan.CStruct (ToCStruct(..)) import Vulkan.Zero (Zero) import Vulkan.Zero (Zero(..)) import Control.Monad.IO.Class (MonadIO) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek)) import Foreign.Storable (Storable(poke)) import qualified Foreign.Storable (Storable(..)) import GHC.Generics (Generic) import GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..)) import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec)) import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32) import Vulkan.NamedType ((:::)) import Vulkan.Core10.FundamentalTypes (Bool32) import Vulkan.Core10.Handles (Buffer) import Vulkan.Core10.Handles (Buffer(..)) import Vulkan.Core10.Handles (CommandBuffer) import Vulkan.Core10.Handles (CommandBuffer(..)) import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer)) import Vulkan.Core10.Handles (CommandBuffer_T) import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginQueryIndexedEXT)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginTransformFeedbackEXT)) import Vulkan.Dynamic (DeviceCmds(pVkCmdBindTransformFeedbackBuffersEXT)) import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectByteCountEXT)) import Vulkan.Dynamic (DeviceCmds(pVkCmdEndQueryIndexedEXT)) import Vulkan.Dynamic (DeviceCmds(pVkCmdEndTransformFeedbackEXT)) import Vulkan.Core10.FundamentalTypes (DeviceSize) import Vulkan.Core10.FundamentalTypes (Flags) 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.StructureType (StructureType) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdBindTransformFeedbackBuffersEXT :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO () -- | vkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers -- to a command buffer -- -- = Description -- -- The values taken from elements i of @pBuffers@, @pOffsets@ and @pSizes@ -- replace the current state for the transform feedback binding -- @firstBinding@ + i, for i in [0, @bindingCount@). The transform feedback -- binding is updated to start at the offset indicated by @pOffsets@[i] -- from the start of the buffer @pBuffers@[i]. -- -- When an element of @pSizes@[i] is -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE', or @pSizes@ is @NULL@, the -- effective range is calculated by taking the size of @pBuffers@[i] minus -- @pOffsets@[i]. Otherwise, the effective range is equal to the element in -- @pSizes@[i]. -- -- == Valid Usage -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355# -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@ -- /must/ be enabled -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356# -- @firstBinding@ /must/ be less than -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@ -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357# The -- sum of @firstBinding@ and @bindingCount@ /must/ be less than or -- equal to -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@ -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358# All -- elements of @pOffsets@ /must/ be less than the size of the -- corresponding element in @pBuffers@ -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359# All -- elements of @pOffsets@ /must/ be a multiple of 4 -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360# All -- elements of @pBuffers@ /must/ have been created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' -- usage flag set -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363# All -- elements of @pOffsets@ plus the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#transform-feedback-effective-size effective size> -- of the element, /must/ be less than or equal to the size of the -- corresponding buffer in @pBuffers@ -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364# Each -- element of @pBuffers@ that is non-sparse /must/ be bound completely -- and contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' -- object -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365# Transform -- feedback /must/ not be active when the -- 'cmdBindTransformFeedbackBuffersEXT' command is recorded -- -- == Valid Usage (Implicit) -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter# -- @commandBuffer@ /must/ be a valid -- 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter# -- @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@ -- valid 'Vulkan.Core10.Handles.Buffer' handles -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter# -- @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@ -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-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-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool# -- The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-videocoding# This command -- /must/ only be called outside of a video coding scope -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength# -- @bindingCount@ /must/ be greater than @0@ -- -- - #VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent# Both of -- @commandBuffer@, and the elements of @pBuffers@ /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 -- -- vkCmdBindTransformFeedbackBuffersEXT 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_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer', -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' cmdBindTransformFeedbackBuffersEXT :: forall io . (MonadIO io) => -- | @commandBuffer@ is the command buffer into which the command is -- recorded. CommandBuffer -> -- | @firstBinding@ is the index of the first transform feedback 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) -> -- | @pSizes@ is @NULL@ or a pointer to an array of -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' buffer sizes, specifying the -- maximum number of bytes to capture to the corresponding transform -- feedback buffer. If @pSizes@ is @NULL@, it is equivalent to setting a -- @pSizes@ array where every element is -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE'. ("sizes" ::: Vector DeviceSize) -> io () cmdBindTransformFeedbackBuffersEXT :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("offsets" ::: Vector DeviceSize) -> io () cmdBindTransformFeedbackBuffersEXT CommandBuffer commandBuffer "firstBinding" ::: Word32 firstBinding "buffers" ::: Vector Buffer buffers "offsets" ::: Vector DeviceSize offsets "offsets" ::: Vector DeviceSize sizes = 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 vkCmdBindTransformFeedbackBuffersEXTPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) vkCmdBindTransformFeedbackBuffersEXTPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) pVkCmdBindTransformFeedbackBuffersEXT (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: DeviceCmds deviceCmds :: CommandBuffer -> 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 -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) vkCmdBindTransformFeedbackBuffersEXTPtr FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr 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 vkCmdBindTransformFeedbackBuffersEXT is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBindTransformFeedbackBuffersEXT' :: Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO () vkCmdBindTransformFeedbackBuffersEXT' = FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO () mkVkCmdBindTransformFeedbackBuffersEXT FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) vkCmdBindTransformFeedbackBuffersEXTPtr 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 DeviceSize) -> Int forall a. Vector a -> Int Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int) -> ("offsets" ::: Vector DeviceSize) -> Int forall a b. (a -> b) -> a -> b $ ("offsets" ::: Vector 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 let pSizesLength :: Int pSizesLength = ("offsets" ::: Vector DeviceSize) -> Int forall a. Vector a -> Int Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int) -> ("offsets" ::: Vector DeviceSize) -> Int forall a b. (a -> b) -> a -> b $ ("offsets" ::: Vector DeviceSize sizes) 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 (Int -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral Int pSizesLength Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int pBuffersLength Bool -> Bool -> Bool || Int pSizesLength Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 0) (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 "pSizes 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 DeviceSize e -> Ptr DeviceSize -> DeviceSize -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr DeviceSize pPOffsets Ptr DeviceSize -> Int -> Ptr 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) (DeviceSize e)) (offsets) pSizes <- if Data.Vector.null (sizes) then pure nullPtr else do pPSizes <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (sizes))) * 8) lift $ Data.Vector.imapM_ (\Int i DeviceSize e -> Ptr DeviceSize -> DeviceSize -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr DeviceSize pPSizes Ptr DeviceSize -> Int -> Ptr 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) (DeviceSize e)) ((sizes)) pure $ pPSizes lift $ traceAroundEvent "vkCmdBindTransformFeedbackBuffersEXT" (vkCmdBindTransformFeedbackBuffersEXT' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets) pSizes) pure $ () foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdBeginTransformFeedbackEXT :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO () -- | vkCmdBeginTransformFeedbackEXT - Make transform feedback active in the -- command buffer -- -- = Description -- -- The active transform feedback buffers will capture primitives emitted -- from the corresponding @XfbBuffer@ in the bound graphics pipeline. Any -- @XfbBuffer@ emitted that does not output to an active transform feedback -- buffer will not be captured. -- -- == Valid Usage -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366# -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@ -- /must/ be enabled -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-None-02367# Transform feedback -- /must/ not be active -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368# -- @firstCounterBuffer@ /must/ be less than -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@ -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369# The -- sum of @firstCounterBuffer@ and @counterBufferCount@ /must/ be less -- than or equal to -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@ -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607# If -- @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not -- @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of -- @counterBufferCount@ 'Vulkan.Core10.Handles.Buffer' handles that are -- either valid or 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370# -- For each buffer handle in the array, if it is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ reference a -- buffer large enough to hold 4 bytes at the corresponding offset from -- the @pCounterBufferOffsets@ array -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371# If -- @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/ also -- be @NULL@ -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372# For each -- buffer handle in the @pCounterBuffers@ array that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' -- usage flag set -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-09630# The -- sum of @firstCounterBuffer@ and @counterBufferCount@ /must/ be less -- than or equal to the number of transform feedback buffers bound by -- 'cmdBindTransformFeedbackBuffersEXT' -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-None-06233# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderObject shaderObject> -- feature is not enabled, a valid graphics pipeline /must/ be bound to -- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-None-04128# The last -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage> -- of the bound graphics pipeline /must/ have been declared with the -- @Xfb@ execution mode -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-None-02373# Transform feedback -- /must/ not be made active in a render pass instance with multiview -- enabled -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-None-10656# 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-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter# -- @commandBuffer@ /must/ be a valid -- 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter# -- If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is -- not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an -- array of @counterBufferCount@ -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-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-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool# The -- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-renderpass# This command /must/ -- only be called inside of a render pass instance -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-videocoding# This command -- /must/ only be called outside of a video coding scope -- -- - #VUID-vkCmdBeginTransformFeedbackEXT-commonparent# Both of -- @commandBuffer@, and the elements of @pCounterBuffers@ 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 | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBeginTransformFeedbackEXT 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_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer', -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' cmdBeginTransformFeedbackEXT :: forall io . (MonadIO io) => -- | @commandBuffer@ is the command buffer into which the command is -- recorded. CommandBuffer -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0]. ("firstCounterBuffer" ::: Word32) -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. Each buffer -- contains a 4 byte integer value representing the byte offset from the -- start of the corresponding transform feedback buffer from where to start -- capturing vertex data. If the byte offset stored to the counter buffer -- location was done using 'cmdEndTransformFeedbackEXT' it can be used to -- resume transform feedback from the previous location. In that case, a -- pipeline barrier is required between the calls to -- 'cmdEndTransformFeedbackEXT' and 'cmdBeginTransformFeedbackEXT', with -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' -- as the source and destination stages, -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' -- as the source access and -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' -- as the destination access. If @pCounterBuffers@ is @NULL@, then -- transform feedback will start capturing vertex data to byte offset zero -- in all bound transform feedback buffers. For each element of -- @pCounterBuffers@ that is 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- transform feedback will start capturing vertex data to byte zero in the -- corresponding bound transform feedback buffer. ("counterBuffers" ::: Vector Buffer) -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets -- within each of the @pCounterBuffers@ where the counter values were -- previously written. The location in each counter buffer at these offsets -- /must/ be large enough to contain 4 bytes of data. This data is the -- number of bytes captured by the previous transform feedback to this -- buffer. If @pCounterBufferOffsets@ is @NULL@, then it is assumed the -- offsets are zero. ("counterBufferOffsets" ::: Vector DeviceSize) -> io () cmdBeginTransformFeedbackEXT :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> io () cmdBeginTransformFeedbackEXT CommandBuffer commandBuffer "firstBinding" ::: Word32 firstCounterBuffer "buffers" ::: Vector Buffer counterBuffers "offsets" ::: Vector DeviceSize counterBufferOffsets = 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 vkCmdBeginTransformFeedbackEXTPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) vkCmdBeginTransformFeedbackEXTPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) pVkCmdBeginTransformFeedbackEXT (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 -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) vkCmdBeginTransformFeedbackEXTPtr FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr 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 vkCmdBeginTransformFeedbackEXT is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBeginTransformFeedbackEXT' :: Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO () vkCmdBeginTransformFeedbackEXT' = FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO () mkVkCmdBeginTransformFeedbackEXT FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) vkCmdBeginTransformFeedbackEXTPtr let pCounterBuffersLength :: Int pCounterBuffersLength = ("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 counterBuffers) let pCounterBufferOffsetsLength :: Int pCounterBufferOffsetsLength = ("offsets" ::: Vector DeviceSize) -> Int forall a. Vector a -> Int Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int) -> ("offsets" ::: Vector DeviceSize) -> Int forall a b. (a -> b) -> a -> b $ ("offsets" ::: Vector DeviceSize counterBufferOffsets) 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 (Int -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral Int pCounterBufferOffsetsLength Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int pCounterBuffersLength Bool -> Bool -> Bool || Int pCounterBufferOffsetsLength Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 0) (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 "pCounterBufferOffsets and pCounterBuffers must have the same length" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing pPCounterBuffers <- ((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 counterBuffers)) 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 pPCounterBuffers 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)) (counterBuffers) pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets) then pure nullPtr else do pPCounterBufferOffsets <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8) lift $ Data.Vector.imapM_ (\Int i DeviceSize e -> Ptr DeviceSize -> DeviceSize -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr DeviceSize pPCounterBufferOffsets Ptr DeviceSize -> Int -> Ptr 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) (DeviceSize e)) ((counterBufferOffsets)) pure $ pPCounterBufferOffsets lift $ traceAroundEvent "vkCmdBeginTransformFeedbackEXT" (vkCmdBeginTransformFeedbackEXT' (commandBufferHandle (commandBuffer)) (firstCounterBuffer) ((fromIntegral pCounterBuffersLength :: Word32)) (pPCounterBuffers) pCounterBufferOffsets) pure $ () -- | This function will call the supplied action between calls to -- 'cmdBeginTransformFeedbackEXT' and 'cmdEndTransformFeedbackEXT' -- -- Note that 'cmdEndTransformFeedbackEXT' is *not* called if an exception -- is thrown by the inner action. cmdUseTransformFeedbackEXT :: forall io r . MonadIO io => CommandBuffer -> Word32 -> Vector Buffer -> Vector DeviceSize -> io r -> io r cmdUseTransformFeedbackEXT :: forall (io :: * -> *) r. MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> io r -> io r cmdUseTransformFeedbackEXT CommandBuffer commandBuffer "firstBinding" ::: Word32 firstCounterBuffer "buffers" ::: Vector Buffer pCounterBuffers "offsets" ::: Vector DeviceSize pCounterBufferOffsets io r a = (CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> io () cmdBeginTransformFeedbackEXT CommandBuffer commandBuffer "firstBinding" ::: Word32 firstCounterBuffer "buffers" ::: Vector Buffer pCounterBuffers "offsets" ::: Vector DeviceSize pCounterBufferOffsets) 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 -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> io () cmdEndTransformFeedbackEXT CommandBuffer commandBuffer "firstBinding" ::: Word32 firstCounterBuffer "buffers" ::: Vector Buffer pCounterBuffers "offsets" ::: Vector DeviceSize pCounterBufferOffsets) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdEndTransformFeedbackEXT :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO () -- | vkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the -- command buffer -- -- == Valid Usage -- -- - #VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374# -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@ -- /must/ be enabled -- -- - #VUID-vkCmdEndTransformFeedbackEXT-None-02375# Transform feedback -- /must/ be active -- -- - #VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376# -- @firstCounterBuffer@ /must/ be less than -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@ -- -- - #VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377# The sum -- of @firstCounterBuffer@ and @counterBufferCount@ /must/ be less than -- or equal to -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@ -- -- - #VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608# If -- @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not -- @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of -- @counterBufferCount@ 'Vulkan.Core10.Handles.Buffer' handles that are -- either valid or 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378# For -- each buffer handle in the array, if it is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ reference a -- buffer large enough to hold 4 bytes at the corresponding offset from -- the @pCounterBufferOffsets@ array -- -- - #VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379# If -- @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/ also -- be @NULL@ -- -- - #VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380# For each -- buffer handle in the @pCounterBuffers@ array that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have been created -- with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' -- usage flag set -- -- - #VUID-vkCmdEndTransformFeedbackEXT-None-10657# 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-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter# -- @commandBuffer@ /must/ be a valid -- 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter# -- If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is -- not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an -- array of @counterBufferCount@ -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values -- -- - #VUID-vkCmdEndTransformFeedbackEXT-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-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool# The -- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdEndTransformFeedbackEXT-renderpass# This command /must/ -- only be called inside of a render pass instance -- -- - #VUID-vkCmdEndTransformFeedbackEXT-videocoding# This command /must/ -- only be called outside of a video coding scope -- -- - #VUID-vkCmdEndTransformFeedbackEXT-commonparent# Both of -- @commandBuffer@, and the elements of @pCounterBuffers@ 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 | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | State | -- | Secondary | | | | | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdEndTransformFeedbackEXT 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_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer', -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' cmdEndTransformFeedbackEXT :: forall io . (MonadIO io) => -- | @commandBuffer@ is the command buffer into which the command is -- recorded. CommandBuffer -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0]. ("firstCounterBuffer" ::: Word32) -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. The counter -- buffers are used to record the current byte positions of each transform -- feedback buffer where the next vertex output data would be captured. -- This /can/ be used by a subsequent 'cmdBeginTransformFeedbackEXT' call -- to resume transform feedback capture from this position. It can also be -- used by 'cmdDrawIndirectByteCountEXT' to determine the vertex count of -- the draw call. ("counterBuffers" ::: Vector Buffer) -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets -- within each of the @pCounterBuffers@ where the counter values can be -- written. The location in each counter buffer at these offsets /must/ be -- large enough to contain 4 bytes of data. The data stored at this -- location is the byte offset from the start of the transform feedback -- buffer binding where the next vertex data would be written. If -- @pCounterBufferOffsets@ is @NULL@, then it is assumed the offsets are -- zero. ("counterBufferOffsets" ::: Vector DeviceSize) -> io () cmdEndTransformFeedbackEXT :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> io () cmdEndTransformFeedbackEXT CommandBuffer commandBuffer "firstBinding" ::: Word32 firstCounterBuffer "buffers" ::: Vector Buffer counterBuffers "offsets" ::: Vector DeviceSize counterBufferOffsets = 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 vkCmdEndTransformFeedbackEXTPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) vkCmdEndTransformFeedbackEXTPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) pVkCmdEndTransformFeedbackEXT (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 -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) vkCmdEndTransformFeedbackEXTPtr FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr 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 vkCmdEndTransformFeedbackEXT is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdEndTransformFeedbackEXT' :: Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO () vkCmdEndTransformFeedbackEXT' = FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO () mkVkCmdEndTransformFeedbackEXT FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Ptr Buffer -> Ptr DeviceSize -> IO ()) vkCmdEndTransformFeedbackEXTPtr let pCounterBuffersLength :: Int pCounterBuffersLength = ("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 counterBuffers) let pCounterBufferOffsetsLength :: Int pCounterBufferOffsetsLength = ("offsets" ::: Vector DeviceSize) -> Int forall a. Vector a -> Int Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int) -> ("offsets" ::: Vector DeviceSize) -> Int forall a b. (a -> b) -> a -> b $ ("offsets" ::: Vector DeviceSize counterBufferOffsets) 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 (Int -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral Int pCounterBufferOffsetsLength Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int pCounterBuffersLength Bool -> Bool -> Bool || Int pCounterBufferOffsetsLength Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 0) (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 "pCounterBufferOffsets and pCounterBuffers must have the same length" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing pPCounterBuffers <- ((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 counterBuffers)) 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 pPCounterBuffers 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)) (counterBuffers) pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets) then pure nullPtr else do pPCounterBufferOffsets <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8) lift $ Data.Vector.imapM_ (\Int i DeviceSize e -> Ptr DeviceSize -> DeviceSize -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr DeviceSize pPCounterBufferOffsets Ptr DeviceSize -> Int -> Ptr 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) (DeviceSize e)) ((counterBufferOffsets)) pure $ pPCounterBufferOffsets lift $ traceAroundEvent "vkCmdEndTransformFeedbackEXT" (vkCmdEndTransformFeedbackEXT' (commandBufferHandle (commandBuffer)) (firstCounterBuffer) ((fromIntegral pCounterBuffersLength :: Word32)) (pPCounterBuffers) pCounterBufferOffsets) pure $ () foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdBeginQueryIndexedEXT :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO () -- | vkCmdBeginQueryIndexedEXT - Begin an indexed query -- -- = Description -- -- The 'cmdBeginQueryIndexedEXT' command operates the same as the -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' command, except that -- it also accepts a query type specific @index@ parameter. -- -- This command defines an execution dependency between other query -- commands that reference the same query index. -- -- 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@ and @index@ 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@ and @index@ 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-vkCmdBeginQueryIndexedEXT-None-00807# All queries used by the -- command /must/ be /unavailable/ -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryType-02804# The @queryType@ -- used to create @queryPool@ /must/ not be -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP' -- -- - #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-queryType-04729# The @queryType@ -- used to create @queryPool@ /must/ not be -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV' -- -- - #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-query-00802# @query@ /must/ be less -- than the number of queries in @queryPool@ -- -- - #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-commandBuffer-01885# @commandBuffer@ -- /must/ not be a protected command buffer -- -- - #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-queryPool-04753# If the @queryPool@ -- was created with the same @queryType@ as that of another -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active> -- query within @commandBuffer@, then @index@ /must/ not match the -- index used for the active query -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryType-02338# 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-vkCmdBeginQueryIndexedEXT-queryType-02339# If the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- the @index@ parameter /must/ be less than -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@ -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryType-06692# If the @queryType@ -- used to create @queryPool@ was not -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- and not -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', -- the @index@ /must/ be zero -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryType-06689# 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-vkCmdBeginQueryIndexedEXT-queryType-06690# If the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- the @index@ parameter /must/ be less than -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@ -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryType-06691# If the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT' -- and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams> -- feature is not enabled, the @index@ parameter /must/ be zero -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryType-06693# 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-vkCmdBeginQueryIndexedEXT-queryType-02341# If the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- then -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@ -- /must/ be supported -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryType-07071# The @queryType@ -- used to create @queryPool@ /must/ not be -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT' -- -- - #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool' command -- affecting the same query -- -- == Valid Usage (Implicit) -- -- - #VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter# -- @commandBuffer@ /must/ be a valid -- 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter# @queryPool@ -- /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle -- -- - #VUID-vkCmdBeginQueryIndexedEXT-flags-parameter# @flags@ /must/ be a -- valid combination of -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits' -- values -- -- - #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-suspended# This command /must/ not -- be called between suspended render pass instances -- -- - #VUID-vkCmdBeginQueryIndexedEXT-videocoding# This command /must/ -- only be called outside of a video coding scope -- -- - #VUID-vkCmdBeginQueryIndexedEXT-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 | Outside | 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 -- -- vkCmdBeginQueryIndexedEXT 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_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.Handles.CommandBuffer', -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags', -- 'Vulkan.Core10.Handles.QueryPool', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery', -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery', -- 'cmdEndQueryIndexedEXT' cmdBeginQueryIndexedEXT :: 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 -> -- | @index@ is the query type specific index. When the query type is -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- or 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', -- the index represents the vertex stream. ("index" ::: Word32) -> io () cmdBeginQueryIndexedEXT :: forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> io () cmdBeginQueryIndexedEXT CommandBuffer commandBuffer QueryPool queryPool "firstBinding" ::: Word32 query QueryControlFlags flags "firstBinding" ::: Word32 index = 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 vkCmdBeginQueryIndexedEXTPtr :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO ()) vkCmdBeginQueryIndexedEXTPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO ()) pVkCmdBeginQueryIndexedEXT (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 -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO ()) vkCmdBeginQueryIndexedEXTPtr FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: 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 vkCmdBeginQueryIndexedEXT is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBeginQueryIndexedEXT' :: Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO () vkCmdBeginQueryIndexedEXT' = FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO () mkVkCmdBeginQueryIndexedEXT FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO ()) vkCmdBeginQueryIndexedEXTPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdBeginQueryIndexedEXT" (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> IO () vkCmdBeginQueryIndexedEXT' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (QueryPool queryPool) ("firstBinding" ::: Word32 query) (QueryControlFlags flags) ("firstBinding" ::: Word32 index)) () -> 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 -- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT' -- -- Note that 'cmdEndQueryIndexedEXT' is *not* called if an exception is -- thrown by the inner action. cmdUseQueryIndexedEXT :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> io r -> io r cmdUseQueryIndexedEXT :: forall (io :: * -> *) r. MonadIO io => CommandBuffer -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> io r -> io r cmdUseQueryIndexedEXT CommandBuffer commandBuffer QueryPool queryPool "firstBinding" ::: Word32 query QueryControlFlags flags "firstBinding" ::: Word32 index io r a = (CommandBuffer -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstBinding" ::: Word32) -> QueryControlFlags -> ("firstBinding" ::: Word32) -> io () cmdBeginQueryIndexedEXT CommandBuffer commandBuffer QueryPool queryPool "firstBinding" ::: Word32 query QueryControlFlags flags "firstBinding" ::: Word32 index) 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 -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> io () cmdEndQueryIndexedEXT CommandBuffer commandBuffer QueryPool queryPool "firstBinding" ::: Word32 query "firstBinding" ::: Word32 index) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdEndQueryIndexedEXT :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO () -- | vkCmdEndQueryIndexedEXT - Ends a query -- -- = Description -- -- The command completes the query in @queryPool@ identified by @query@ and -- @index@, and marks it as available. -- -- The 'cmdEndQueryIndexedEXT' command operates the same as the -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' command, except that -- it also accepts a query type specific @index@ parameter. -- -- This command defines an execution dependency between other query -- commands that reference the same query index. -- -- 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. -- -- == Valid Usage -- -- - #VUID-vkCmdEndQueryIndexedEXT-None-02342# All queries used by the -- command /must/ be -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active> -- -- - #VUID-vkCmdEndQueryIndexedEXT-query-02343# @query@ /must/ be less -- than the number of queries in @queryPool@ -- -- - #VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344# @commandBuffer@ -- /must/ not be a protected command buffer -- -- - #VUID-vkCmdEndQueryIndexedEXT-query-02345# If -- 'cmdEndQueryIndexedEXT' 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-vkCmdEndQueryIndexedEXT-queryType-06694# If the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- or -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', -- the @index@ parameter /must/ be less than -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@ -- -- - #VUID-vkCmdEndQueryIndexedEXT-queryType-06695# If the @queryType@ -- used to create @queryPool@ was not -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- and not -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', -- the @index@ /must/ be zero -- -- - #VUID-vkCmdEndQueryIndexedEXT-queryType-06696# If the @queryType@ -- used to create @queryPool@ was -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- or -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', -- @index@ /must/ equal the @index@ used to begin the query -- -- - #VUID-vkCmdEndQueryIndexedEXT-None-07007# If called within a subpass -- of a render pass instance, the corresponding -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'* command /must/ -- have been called previously within the same subpass -- -- - #VUID-vkCmdEndQueryIndexedEXT-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-vkCmdEndQueryIndexedEXT-commandBuffer-parameter# -- @commandBuffer@ /must/ be a valid -- 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter# @queryPool@ -- /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle -- -- - #VUID-vkCmdEndQueryIndexedEXT-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-vkCmdEndQueryIndexedEXT-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-vkCmdEndQueryIndexedEXT-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdEndQueryIndexedEXT-videocoding# This command /must/ only -- be called outside of a video coding scope -- -- - #VUID-vkCmdEndQueryIndexedEXT-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 | Outside | 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 -- -- vkCmdEndQueryIndexedEXT 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_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.Handles.CommandBuffer', -- 'Vulkan.Core10.Handles.QueryPool', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery', -- 'cmdBeginQueryIndexedEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' cmdEndQueryIndexedEXT :: 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) -> -- | @index@ is the query type specific index. ("index" ::: Word32) -> io () cmdEndQueryIndexedEXT :: forall (io :: * -> *). MonadIO io => CommandBuffer -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> io () cmdEndQueryIndexedEXT CommandBuffer commandBuffer QueryPool queryPool "firstBinding" ::: Word32 query "firstBinding" ::: Word32 index = 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 vkCmdEndQueryIndexedEXTPtr :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) vkCmdEndQueryIndexedEXTPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) pVkCmdEndQueryIndexedEXT (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 -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) vkCmdEndQueryIndexedEXTPtr FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: 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 vkCmdEndQueryIndexedEXT is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdEndQueryIndexedEXT' :: Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () vkCmdEndQueryIndexedEXT' = FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () mkVkCmdEndQueryIndexedEXT FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) vkCmdEndQueryIndexedEXTPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdEndQueryIndexedEXT" (Ptr CommandBuffer_T -> QueryPool -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () vkCmdEndQueryIndexedEXT' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) (QueryPool queryPool) ("firstBinding" ::: Word32 query) ("firstBinding" ::: Word32 index)) () -> 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" mkVkCmdDrawIndirectByteCountEXT :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO () -- | vkCmdDrawIndirectByteCountEXT - Draw primitives with indirect parameters -- where the vertex count is derived from the counter byte value in the -- counter buffer -- -- = Description -- -- When the command is executed, primitives are assembled in the same way -- as done with 'Vulkan.Core10.CommandBufferBuilding.cmdDraw' except the -- @vertexCount@ is calculated based on the byte count read from -- @counterBuffer@ at offset @counterBufferOffset@. The assembled -- primitives execute the bound graphics pipeline. -- -- The effective @vertexCount@ is calculated as follows: -- -- > const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset; -- > vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride); -- -- The effective @firstVertex@ is zero. -- -- == Valid Usage -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-08114# Descriptors in each -- bound descriptor set, specified via -- 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-08115# If the descriptors -- used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline -- bind point were specified via -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the -- bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created -- without -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-07831# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic -- state enabled then -- 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-None-07832# If the bound -- graphics pipeline state was created with the -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic -- state enabled then -- 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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 -- 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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 -- 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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 'Vulkan.Core10.CommandBufferBuilding.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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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 -- 'PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/ -- be @0@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-10772# If a shader object -- is bound to any graphics stage, /multiview/ functionality /must/ not -- be enabled in the current render pass -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287# -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@ -- /must/ be enabled -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288# The -- implementation /must/ support -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackDraw@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289# -- @vertexStride@ /must/ be greater than 0 and less than or equal to -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBufferDataStride@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567# If -- @counterBuffer@ is non-sparse then it /must/ be bound completely and -- contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290# -- @counterBuffer@ /must/ have been created with the -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT' -- usage flag set -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-counterBufferOffset-04568# -- @counterBufferOffset@ /must/ be a multiple of @4@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-counterOffset-09474# -- @counterOffset@ /must/ be a multiple of @4@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-09475# -- @vertexStride@ /must/ be a multiple of @4@ -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646# -- @commandBuffer@ /must/ not be a protected command buffer -- -- == Valid Usage (Implicit) -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter# -- @commandBuffer@ /must/ be a valid -- 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter# -- @counterBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer' -- handle -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool# The -- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-renderpass# This command /must/ -- only be called inside of a render pass instance -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-suspended# This command /must/ -- not be called between suspended render pass instances -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-videocoding# This command /must/ -- only be called outside of a video coding scope -- -- - #VUID-vkCmdDrawIndirectByteCountEXT-commonparent# Both of -- @commandBuffer@, and @counterBuffer@ /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 -- -- vkCmdDrawIndirectByteCountEXT 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_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer', -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' cmdDrawIndirectByteCountEXT :: forall io . (MonadIO io) => -- | @commandBuffer@ is the command buffer into which the command is -- recorded. CommandBuffer -> -- | @instanceCount@ is the number of instances to draw. ("instanceCount" ::: Word32) -> -- | @firstInstance@ is the instance ID of the first instance to draw. ("firstInstance" ::: Word32) -> -- | @counterBuffer@ is the buffer handle from where the byte count is read. ("counterBuffer" ::: Buffer) -> -- | @counterBufferOffset@ is the offset into the buffer used to read the -- byte count, which is used to calculate the vertex count for this draw -- call. ("counterBufferOffset" ::: DeviceSize) -> -- | @counterOffset@ is subtracted from the byte count read from the -- @counterBuffer@ at the @counterBufferOffset@ ("counterOffset" ::: Word32) -> -- | @vertexStride@ is the stride in bytes between each element of the vertex -- data that is used to calculate the vertex count from the counter value. -- This value is typically the same value that was used in the graphics -- pipeline state when the transform feedback was captured as the -- @XfbStride@. ("vertexStride" ::: Word32) -> io () cmdDrawIndirectByteCountEXT :: forall (io :: * -> *). MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> io () cmdDrawIndirectByteCountEXT CommandBuffer commandBuffer "firstBinding" ::: Word32 instanceCount "firstBinding" ::: Word32 firstInstance Buffer counterBuffer DeviceSize counterBufferOffset "firstBinding" ::: Word32 counterOffset "firstBinding" ::: Word32 vertexStride = 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 vkCmdDrawIndirectByteCountEXTPtr :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) vkCmdDrawIndirectByteCountEXTPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) pVkCmdDrawIndirectByteCountEXT (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 -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) vkCmdDrawIndirectByteCountEXTPtr FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: 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 vkCmdDrawIndirectByteCountEXT is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdDrawIndirectByteCountEXT' :: Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () vkCmdDrawIndirectByteCountEXT' = FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) -> Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () mkVkCmdDrawIndirectByteCountEXT FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO ()) vkCmdDrawIndirectByteCountEXTPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdDrawIndirectByteCountEXT" (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Buffer -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () vkCmdDrawIndirectByteCountEXT' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer)) ("firstBinding" ::: Word32 instanceCount) ("firstBinding" ::: Word32 firstInstance) (Buffer counterBuffer) (DeviceSize counterBufferOffset) ("firstBinding" ::: Word32 counterOffset) ("firstBinding" ::: Word32 vertexStride)) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () -- | VkPhysicalDeviceTransformFeedbackFeaturesEXT - Structure describing -- transform feedback features that can be supported by an implementation -- -- = Members -- -- This structure describes the following features: -- -- = Description -- -- If the 'PhysicalDeviceTransformFeedbackFeaturesEXT' structure is -- included in the @pNext@ chain of the -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2' -- structure passed to -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2', -- it is filled in to indicate whether each corresponding feature is -- supported. If the application wishes to use a -- 'Vulkan.Core10.Handles.Device' with any features described by -- 'PhysicalDeviceTransformFeedbackFeaturesEXT', it /must/ add an instance -- of the structure, with the desired feature members set to -- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of -- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the -- 'Vulkan.Core10.Handles.Device'. -- -- == Valid Usage (Implicit) -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.FundamentalTypes.Bool32', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDeviceTransformFeedbackFeaturesEXT = PhysicalDeviceTransformFeedbackFeaturesEXT { -- | #features-transformFeedback# @transformFeedback@ indicates whether the -- implementation supports transform feedback and shader modules /can/ -- declare the @TransformFeedback@ capability. PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool transformFeedback :: Bool , -- | #features-geometryStreams# @geometryStreams@ indicates whether the -- implementation supports the @GeometryStreams@ SPIR-V capability. PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool geometryStreams :: Bool } deriving (Typeable, PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool (PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool) -> (PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool) -> Eq PhysicalDeviceTransformFeedbackFeaturesEXT forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool == :: PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool $c/= :: PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool /= :: PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool Eq) #if defined(GENERIC_INSTANCES) deriving instance Generic (PhysicalDeviceTransformFeedbackFeaturesEXT) #endif deriving instance Show PhysicalDeviceTransformFeedbackFeaturesEXT instance ToCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where withCStruct :: forall b. PhysicalDeviceTransformFeedbackFeaturesEXT -> (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b) -> IO b withCStruct PhysicalDeviceTransformFeedbackFeaturesEXT x Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b f = Int -> (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 24 ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b) -> IO b) -> (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p -> Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b forall b. Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p PhysicalDeviceTransformFeedbackFeaturesEXT x (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b f Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p) pokeCStruct :: forall b. Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p PhysicalDeviceTransformFeedbackFeaturesEXT{Bool transformFeedback :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool geometryStreams :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool transformFeedback :: Bool geometryStreams :: Bool ..} IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool transformFeedback)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool geometryStreams)) IO b f cStructSize :: Int cStructSize = Int 24 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b pokeZeroCStruct Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool forall a. Zero a => a zero)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool forall a. Zero a => a zero)) IO b f instance FromCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where peekCStruct :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO PhysicalDeviceTransformFeedbackFeaturesEXT peekCStruct Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p = do transformFeedback <- forall a. Storable a => Ptr a -> IO a peek @Bool32 ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Bool32)) geometryStreams <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32)) pure $ PhysicalDeviceTransformFeedbackFeaturesEXT (bool32ToBool transformFeedback) (bool32ToBool geometryStreams) instance Storable PhysicalDeviceTransformFeedbackFeaturesEXT where sizeOf :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Int sizeOf ~PhysicalDeviceTransformFeedbackFeaturesEXT _ = Int 24 alignment :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Int alignment ~PhysicalDeviceTransformFeedbackFeaturesEXT _ = Int 8 peek :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO PhysicalDeviceTransformFeedbackFeaturesEXT peek = Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO PhysicalDeviceTransformFeedbackFeaturesEXT forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO () poke Ptr PhysicalDeviceTransformFeedbackFeaturesEXT ptr PhysicalDeviceTransformFeedbackFeaturesEXT poked = Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO () -> IO () forall b. Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceTransformFeedbackFeaturesEXT ptr PhysicalDeviceTransformFeedbackFeaturesEXT poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero PhysicalDeviceTransformFeedbackFeaturesEXT where zero :: PhysicalDeviceTransformFeedbackFeaturesEXT zero = Bool -> Bool -> PhysicalDeviceTransformFeedbackFeaturesEXT PhysicalDeviceTransformFeedbackFeaturesEXT Bool forall a. Zero a => a zero Bool forall a. Zero a => a zero -- | VkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing -- transform feedback properties that can be supported by an implementation -- -- = Description -- -- If the 'PhysicalDeviceTransformFeedbackPropertiesEXT' structure is -- included in the @pNext@ chain of the -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2' -- structure passed to -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2', -- it is filled in with each corresponding implementation-dependent -- property. -- -- == Valid Usage (Implicit) -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.FundamentalTypes.Bool32', -- 'Vulkan.Core10.FundamentalTypes.DeviceSize', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDeviceTransformFeedbackPropertiesEXT = PhysicalDeviceTransformFeedbackPropertiesEXT { -- | #limits-maxTransformFeedbackStreams# @maxTransformFeedbackStreams@ is -- the maximum number of vertex streams that can be output from geometry -- shaders declared with the @GeometryStreams@ capability. If the -- implementation does not support -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@ then -- @maxTransformFeedbackStreams@ /must/ be @1@. PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackStreams :: Word32 , -- | #limits-maxTransformFeedbackBuffers# @maxTransformFeedbackBuffers@ is -- the maximum number of transform feedback buffers that can be bound for -- capturing shader outputs from the last -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>. PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackBuffers :: Word32 , -- | #limits-maxTransformFeedbackBufferSize# @maxTransformFeedbackBufferSize@ -- is the maximum size that can be specified when binding a buffer for -- transform feedback in 'cmdBindTransformFeedbackBuffersEXT'. PhysicalDeviceTransformFeedbackPropertiesEXT -> DeviceSize maxTransformFeedbackBufferSize :: DeviceSize , -- | #limits-maxTransformFeedbackStreamDataSize# -- @maxTransformFeedbackStreamDataSize@ is the maximum amount of data in -- bytes for each vertex that captured to one or more transform feedback -- buffers associated with a specific vertex stream. PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackStreamDataSize :: Word32 , -- | #limits-maxTransformFeedbackBufferDataSize# -- @maxTransformFeedbackBufferDataSize@ is the maximum amount of data in -- bytes for each vertex that can be captured to a specific transform -- feedback buffer. PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackBufferDataSize :: Word32 , -- | #limits-maxTransformFeedbackBufferDataStride# -- @maxTransformFeedbackBufferDataStride@ is the maximum stride between -- each capture of vertex data to the buffer. PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackBufferDataStride :: Word32 , -- | #limits-transformFeedbackQueries# @transformFeedbackQueries@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' -- query type. @transformFeedbackQueries@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE' if queries of this type /cannot/ -- be created. PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool transformFeedbackQueries :: Bool , -- | #limits-transformFeedbackStreamsLinesTriangles# -- @transformFeedbackStreamsLinesTriangles@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the -- geometry shader @OpExecutionMode@ of @OutputLineStrip@ and -- @OutputTriangleStrip@ in addition to @OutputPoints@ when more than one -- vertex stream is output. If @transformFeedbackStreamsLinesTriangles@ is -- 'Vulkan.Core10.FundamentalTypes.FALSE' the implementation only supports -- an @OpExecutionMode@ of @OutputPoints@ when more than one vertex stream -- is output from the geometry shader. PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool transformFeedbackStreamsLinesTriangles :: Bool , -- | #limits-transformFeedbackRasterizationStreamSelect# -- @transformFeedbackRasterizationStreamSelect@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the -- @GeometryStreams@ SPIR-V capability and the application can use -- 'PipelineRasterizationStateStreamCreateInfoEXT' to modify which vertex -- stream output is used for rasterization. Otherwise vertex stream @0@ -- /must/ always be used for rasterization. PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool transformFeedbackRasterizationStreamSelect :: Bool , -- | #limits-transformFeedbackDraw# @transformFeedbackDraw@ is -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the -- 'cmdDrawIndirectByteCountEXT' function otherwise the function /must/ not -- be called. PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool transformFeedbackDraw :: Bool } deriving (Typeable, PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool (PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool) -> (PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool) -> Eq PhysicalDeviceTransformFeedbackPropertiesEXT forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool == :: PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool $c/= :: PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool /= :: PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool Eq) #if defined(GENERIC_INSTANCES) deriving instance Generic (PhysicalDeviceTransformFeedbackPropertiesEXT) #endif deriving instance Show PhysicalDeviceTransformFeedbackPropertiesEXT instance ToCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where withCStruct :: forall b. PhysicalDeviceTransformFeedbackPropertiesEXT -> (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b) -> IO b withCStruct PhysicalDeviceTransformFeedbackPropertiesEXT x Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b f = Int -> (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 64 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b) -> IO b) -> (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p -> Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b forall b. Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p PhysicalDeviceTransformFeedbackPropertiesEXT x (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b f Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p) pokeCStruct :: forall b. Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p PhysicalDeviceTransformFeedbackPropertiesEXT{Bool "firstBinding" ::: Word32 DeviceSize maxTransformFeedbackStreams :: PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackBuffers :: PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackBufferSize :: PhysicalDeviceTransformFeedbackPropertiesEXT -> DeviceSize maxTransformFeedbackStreamDataSize :: PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackBufferDataSize :: PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 maxTransformFeedbackBufferDataStride :: PhysicalDeviceTransformFeedbackPropertiesEXT -> "firstBinding" ::: Word32 transformFeedbackQueries :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool transformFeedbackStreamsLinesTriangles :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool transformFeedbackRasterizationStreamSelect :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool transformFeedbackDraw :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool maxTransformFeedbackStreams :: "firstBinding" ::: Word32 maxTransformFeedbackBuffers :: "firstBinding" ::: Word32 maxTransformFeedbackBufferSize :: DeviceSize maxTransformFeedbackStreamDataSize :: "firstBinding" ::: Word32 maxTransformFeedbackBufferDataSize :: "firstBinding" ::: Word32 maxTransformFeedbackBufferDataStride :: "firstBinding" ::: Word32 transformFeedbackQueries :: Bool transformFeedbackStreamsLinesTriangles :: Bool transformFeedbackRasterizationStreamSelect :: Bool transformFeedbackDraw :: Bool ..} IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) ("firstBinding" ::: Word32 maxTransformFeedbackStreams) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) ("firstBinding" ::: Word32 maxTransformFeedbackBuffers) Ptr DeviceSize -> DeviceSize -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr DeviceSize forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 24 :: Ptr DeviceSize)) (DeviceSize maxTransformFeedbackBufferSize) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 32 :: Ptr Word32)) ("firstBinding" ::: Word32 maxTransformFeedbackStreamDataSize) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 36 :: Ptr Word32)) ("firstBinding" ::: Word32 maxTransformFeedbackBufferDataSize) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 40 :: Ptr Word32)) ("firstBinding" ::: Word32 maxTransformFeedbackBufferDataStride) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool transformFeedbackQueries)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 48 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool transformFeedbackStreamsLinesTriangles)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 52 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool transformFeedbackRasterizationStreamSelect)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool transformFeedbackDraw)) IO b f cStructSize :: Int cStructSize = Int 64 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b pokeZeroCStruct Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) ("firstBinding" ::: Word32 forall a. Zero a => a zero) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) ("firstBinding" ::: Word32 forall a. Zero a => a zero) Ptr DeviceSize -> DeviceSize -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr DeviceSize forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 24 :: Ptr DeviceSize)) (DeviceSize forall a. Zero a => a zero) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 32 :: Ptr Word32)) ("firstBinding" ::: Word32 forall a. Zero a => a zero) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 36 :: Ptr Word32)) ("firstBinding" ::: Word32 forall a. Zero a => a zero) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 40 :: Ptr Word32)) ("firstBinding" ::: Word32 forall a. Zero a => a zero) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool forall a. Zero a => a zero)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 48 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool forall a. Zero a => a zero)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 52 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool forall a. Zero a => a zero)) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 56 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool forall a. Zero a => a zero)) IO b f instance FromCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where peekCStruct :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO PhysicalDeviceTransformFeedbackPropertiesEXT peekCStruct Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p = do maxTransformFeedbackStreams <- forall a. Storable a => Ptr a -> IO a peek @Word32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) maxTransformFeedbackBuffers <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32)) maxTransformFeedbackBufferSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize)) maxTransformFeedbackStreamDataSize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32)) maxTransformFeedbackBufferDataSize <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32)) maxTransformFeedbackBufferDataStride <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32)) transformFeedbackQueries <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32)) transformFeedbackStreamsLinesTriangles <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32)) transformFeedbackRasterizationStreamSelect <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32)) transformFeedbackDraw <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32)) pure $ PhysicalDeviceTransformFeedbackPropertiesEXT maxTransformFeedbackStreams maxTransformFeedbackBuffers maxTransformFeedbackBufferSize maxTransformFeedbackStreamDataSize maxTransformFeedbackBufferDataSize maxTransformFeedbackBufferDataStride (bool32ToBool transformFeedbackQueries) (bool32ToBool transformFeedbackStreamsLinesTriangles) (bool32ToBool transformFeedbackRasterizationStreamSelect) (bool32ToBool transformFeedbackDraw) instance Storable PhysicalDeviceTransformFeedbackPropertiesEXT where sizeOf :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Int sizeOf ~PhysicalDeviceTransformFeedbackPropertiesEXT _ = Int 64 alignment :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Int alignment ~PhysicalDeviceTransformFeedbackPropertiesEXT _ = Int 8 peek :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO PhysicalDeviceTransformFeedbackPropertiesEXT peek = Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO PhysicalDeviceTransformFeedbackPropertiesEXT forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO () poke Ptr PhysicalDeviceTransformFeedbackPropertiesEXT ptr PhysicalDeviceTransformFeedbackPropertiesEXT poked = Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO () -> IO () forall b. Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceTransformFeedbackPropertiesEXT ptr PhysicalDeviceTransformFeedbackPropertiesEXT poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero PhysicalDeviceTransformFeedbackPropertiesEXT where zero :: PhysicalDeviceTransformFeedbackPropertiesEXT zero = ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> DeviceSize -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> Bool -> Bool -> Bool -> Bool -> PhysicalDeviceTransformFeedbackPropertiesEXT PhysicalDeviceTransformFeedbackPropertiesEXT "firstBinding" ::: Word32 forall a. Zero a => a zero "firstBinding" ::: Word32 forall a. Zero a => a zero DeviceSize forall a. Zero a => a zero "firstBinding" ::: Word32 forall a. Zero a => a zero "firstBinding" ::: Word32 forall a. Zero a => a zero "firstBinding" ::: Word32 forall a. Zero a => a zero Bool forall a. Zero a => a zero Bool forall a. Zero a => a zero Bool forall a. Zero a => a zero Bool forall a. Zero a => a zero -- | VkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the -- geometry stream used for rasterization -- -- = Description -- -- If this structure is not present, @rasterizationStream@ is assumed to be -- zero. -- -- == Valid Usage (Implicit) -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'PipelineRasterizationStateStreamCreateFlagsEXT', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PipelineRasterizationStateStreamCreateInfoEXT = PipelineRasterizationStateStreamCreateInfoEXT { -- | @flags@ is reserved for future use. -- -- #VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask# -- @flags@ /must/ be @0@ PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateFlagsEXT flags :: PipelineRasterizationStateStreamCreateFlagsEXT , -- | @rasterizationStream@ is the vertex stream selected for rasterization. -- -- #VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325# -- @rasterizationStream@ /must/ be less than -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@ -- -- #VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326# -- @rasterizationStream@ /must/ be zero if -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackRasterizationStreamSelect@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE' PipelineRasterizationStateStreamCreateInfoEXT -> "firstBinding" ::: Word32 rasterizationStream :: Word32 } deriving (Typeable, PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> Bool (PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> Bool) -> (PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> Bool) -> Eq PipelineRasterizationStateStreamCreateInfoEXT forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> Bool == :: PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> Bool $c/= :: PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> Bool /= :: PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> Bool Eq) #if defined(GENERIC_INSTANCES) deriving instance Generic (PipelineRasterizationStateStreamCreateInfoEXT) #endif deriving instance Show PipelineRasterizationStateStreamCreateInfoEXT instance ToCStruct PipelineRasterizationStateStreamCreateInfoEXT where withCStruct :: forall b. PipelineRasterizationStateStreamCreateInfoEXT -> (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b) -> IO b withCStruct PipelineRasterizationStateStreamCreateInfoEXT x Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b f = Int -> (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 24 ((Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b) -> IO b) -> (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr PipelineRasterizationStateStreamCreateInfoEXT p -> Ptr PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b forall b. Ptr PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PipelineRasterizationStateStreamCreateInfoEXT p PipelineRasterizationStateStreamCreateInfoEXT x (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b f Ptr PipelineRasterizationStateStreamCreateInfoEXT p) pokeCStruct :: forall b. Ptr PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b pokeCStruct Ptr PipelineRasterizationStateStreamCreateInfoEXT p PipelineRasterizationStateStreamCreateInfoEXT{"firstBinding" ::: Word32 PipelineRasterizationStateStreamCreateFlagsEXT flags :: PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateFlagsEXT rasterizationStream :: PipelineRasterizationStateStreamCreateInfoEXT -> "firstBinding" ::: Word32 flags :: PipelineRasterizationStateStreamCreateFlagsEXT rasterizationStream :: "firstBinding" ::: Word32 ..} IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr PipelineRasterizationStateStreamCreateFlagsEXT forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT)) (PipelineRasterizationStateStreamCreateFlagsEXT flags) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) ("firstBinding" ::: Word32 rasterizationStream) IO b f cStructSize :: Int cStructSize = Int 24 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b pokeZeroCStruct Ptr PipelineRasterizationStateStreamCreateInfoEXT p IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr ("firstBinding" ::: Word32) -> ("firstBinding" ::: Word32) -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr ("firstBinding" ::: Word32) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) ("firstBinding" ::: Word32 forall a. Zero a => a zero) IO b f instance FromCStruct PipelineRasterizationStateStreamCreateInfoEXT where peekCStruct :: Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO PipelineRasterizationStateStreamCreateInfoEXT peekCStruct Ptr PipelineRasterizationStateStreamCreateInfoEXT p = do flags <- forall a. Storable a => Ptr a -> IO a peek @PipelineRasterizationStateStreamCreateFlagsEXT ((Ptr PipelineRasterizationStateStreamCreateInfoEXT p Ptr PipelineRasterizationStateStreamCreateInfoEXT -> Int -> Ptr PipelineRasterizationStateStreamCreateFlagsEXT forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT)) rasterizationStream <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32)) pure $ PipelineRasterizationStateStreamCreateInfoEXT flags rasterizationStream instance Storable PipelineRasterizationStateStreamCreateInfoEXT where sizeOf :: PipelineRasterizationStateStreamCreateInfoEXT -> Int sizeOf ~PipelineRasterizationStateStreamCreateInfoEXT _ = Int 24 alignment :: PipelineRasterizationStateStreamCreateInfoEXT -> Int alignment ~PipelineRasterizationStateStreamCreateInfoEXT _ = Int 8 peek :: Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO PipelineRasterizationStateStreamCreateInfoEXT peek = Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO PipelineRasterizationStateStreamCreateInfoEXT forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> IO () poke Ptr PipelineRasterizationStateStreamCreateInfoEXT ptr PipelineRasterizationStateStreamCreateInfoEXT poked = Ptr PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> IO () -> IO () forall b. Ptr PipelineRasterizationStateStreamCreateInfoEXT -> PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PipelineRasterizationStateStreamCreateInfoEXT ptr PipelineRasterizationStateStreamCreateInfoEXT poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero PipelineRasterizationStateStreamCreateInfoEXT where zero :: PipelineRasterizationStateStreamCreateInfoEXT zero = PipelineRasterizationStateStreamCreateFlagsEXT -> ("firstBinding" ::: Word32) -> PipelineRasterizationStateStreamCreateInfoEXT PipelineRasterizationStateStreamCreateInfoEXT PipelineRasterizationStateStreamCreateFlagsEXT forall a. Zero a => a zero "firstBinding" ::: Word32 forall a. Zero a => a zero -- | VkPipelineRasterizationStateStreamCreateFlagsEXT - Reserved for future -- use -- -- = Description -- -- 'PipelineRasterizationStateStreamCreateFlagsEXT' is a bitmask type for -- setting a mask, but is currently reserved for future use. -- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>, -- 'Vulkan.Core10.FundamentalTypes.Flags', -- 'PipelineRasterizationStateStreamCreateInfoEXT' newtype PipelineRasterizationStateStreamCreateFlagsEXT = PipelineRasterizationStateStreamCreateFlagsEXT Flags deriving newtype (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool) -> Eq PipelineRasterizationStateStreamCreateFlagsEXT forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool == :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool $c/= :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool /= :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool Eq, Eq PipelineRasterizationStateStreamCreateFlagsEXT Eq PipelineRasterizationStateStreamCreateFlagsEXT => (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT) -> Ord PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering compare :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering $c< :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool < :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool $c<= :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool <= :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool $c> :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool > :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool $c>= :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool >= :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool $cmax :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT max :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT $cmin :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT min :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT Ord, Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> IO PipelineRasterizationStateStreamCreateFlagsEXT Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () PipelineRasterizationStateStreamCreateFlagsEXT -> Int (PipelineRasterizationStateStreamCreateFlagsEXT -> Int) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int) -> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT) -> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()) -> (forall b. Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT) -> (forall b. Ptr b -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()) -> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> IO PipelineRasterizationStateStreamCreateFlagsEXT) -> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()) -> Storable PipelineRasterizationStateStreamCreateFlagsEXT forall b. Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT forall b. Ptr b -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () forall a. (a -> Int) -> (a -> Int) -> (Ptr a -> Int -> IO a) -> (Ptr a -> Int -> a -> IO ()) -> (forall b. Ptr b -> Int -> IO a) -> (forall b. Ptr b -> Int -> a -> IO ()) -> (Ptr a -> IO a) -> (Ptr a -> a -> IO ()) -> Storable a $csizeOf :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int sizeOf :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int $calignment :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int alignment :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int $cpeekElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT peekElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT $cpokeElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () pokeElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () $cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT peekByteOff :: forall b. Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT $cpokeByteOff :: forall b. Ptr b -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () pokeByteOff :: forall b. Ptr b -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () $cpeek :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> IO PipelineRasterizationStateStreamCreateFlagsEXT peek :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> IO PipelineRasterizationStateStreamCreateFlagsEXT $cpoke :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () poke :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO () Storable, PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT -> Zero PipelineRasterizationStateStreamCreateFlagsEXT forall a. a -> Zero a $czero :: PipelineRasterizationStateStreamCreateFlagsEXT zero :: PipelineRasterizationStateStreamCreateFlagsEXT Zero, Eq PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT Eq PipelineRasterizationStateStreamCreateFlagsEXT => (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> PipelineRasterizationStateStreamCreateFlagsEXT -> (Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Bool) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int) -> Bits PipelineRasterizationStateStreamCreateFlagsEXT Int -> PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT -> Bool PipelineRasterizationStateStreamCreateFlagsEXT -> Int PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT forall a. Eq a => (a -> a -> a) -> (a -> a -> a) -> (a -> a -> a) -> (a -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> a -> (Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> Bool) -> (a -> Maybe Int) -> (a -> Int) -> (a -> Bool) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int) -> Bits a $c.&. :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT .&. :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT $c.|. :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT .|. :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT $cxor :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT xor :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT $ccomplement :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT complement :: PipelineRasterizationStateStreamCreateFlagsEXT -> PipelineRasterizationStateStreamCreateFlagsEXT $cshift :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT shift :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $crotate :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT rotate :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $czeroBits :: PipelineRasterizationStateStreamCreateFlagsEXT zeroBits :: PipelineRasterizationStateStreamCreateFlagsEXT $cbit :: Int -> PipelineRasterizationStateStreamCreateFlagsEXT bit :: Int -> PipelineRasterizationStateStreamCreateFlagsEXT $csetBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT setBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $cclearBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT clearBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $ccomplementBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT complementBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $ctestBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool testBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool $cbitSizeMaybe :: PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int bitSizeMaybe :: PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int $cbitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int bitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int $cisSigned :: PipelineRasterizationStateStreamCreateFlagsEXT -> Bool isSigned :: PipelineRasterizationStateStreamCreateFlagsEXT -> Bool $cshiftL :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT shiftL :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $cunsafeShiftL :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT unsafeShiftL :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $cshiftR :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT shiftR :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $cunsafeShiftR :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT unsafeShiftR :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $crotateL :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT rotateL :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $crotateR :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT rotateR :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT $cpopCount :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int popCount :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int Bits, Bits PipelineRasterizationStateStreamCreateFlagsEXT Bits PipelineRasterizationStateStreamCreateFlagsEXT => (PipelineRasterizationStateStreamCreateFlagsEXT -> Int) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int) -> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int) -> FiniteBits PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT -> Int forall b. Bits b => (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b $cfiniteBitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int finiteBitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int $ccountLeadingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int countLeadingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int $ccountTrailingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int countTrailingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int FiniteBits) conNamePipelineRasterizationStateStreamCreateFlagsEXT :: String conNamePipelineRasterizationStateStreamCreateFlagsEXT :: String conNamePipelineRasterizationStateStreamCreateFlagsEXT = String "PipelineRasterizationStateStreamCreateFlagsEXT" enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT :: String enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT :: String enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT = String "" showTablePipelineRasterizationStateStreamCreateFlagsEXT :: [(PipelineRasterizationStateStreamCreateFlagsEXT, String)] showTablePipelineRasterizationStateStreamCreateFlagsEXT :: [(PipelineRasterizationStateStreamCreateFlagsEXT, String)] showTablePipelineRasterizationStateStreamCreateFlagsEXT = [] instance Show PipelineRasterizationStateStreamCreateFlagsEXT where showsPrec :: Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> ShowS showsPrec = String -> [(PipelineRasterizationStateStreamCreateFlagsEXT, String)] -> String -> (PipelineRasterizationStateStreamCreateFlagsEXT -> "firstBinding" ::: Word32) -> (("firstBinding" ::: Word32) -> ShowS) -> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> ShowS forall a i. Eq a => String -> [(a, String)] -> String -> (a -> i) -> (i -> ShowS) -> Int -> a -> ShowS enumShowsPrec String enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT [(PipelineRasterizationStateStreamCreateFlagsEXT, String)] showTablePipelineRasterizationStateStreamCreateFlagsEXT String conNamePipelineRasterizationStateStreamCreateFlagsEXT (\(PipelineRasterizationStateStreamCreateFlagsEXT "firstBinding" ::: Word32 x) -> "firstBinding" ::: Word32 x) (\"firstBinding" ::: Word32 x -> String -> ShowS showString String "0x" ShowS -> ShowS -> ShowS forall b c a. (b -> c) -> (a -> b) -> a -> c . ("firstBinding" ::: Word32) -> ShowS forall a. Integral a => a -> ShowS showHex "firstBinding" ::: Word32 x) instance Read PipelineRasterizationStateStreamCreateFlagsEXT where readPrec :: ReadPrec PipelineRasterizationStateStreamCreateFlagsEXT readPrec = String -> [(PipelineRasterizationStateStreamCreateFlagsEXT, String)] -> String -> (("firstBinding" ::: Word32) -> PipelineRasterizationStateStreamCreateFlagsEXT) -> ReadPrec PipelineRasterizationStateStreamCreateFlagsEXT forall i a. Read i => String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a enumReadPrec String enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT [(PipelineRasterizationStateStreamCreateFlagsEXT, String)] showTablePipelineRasterizationStateStreamCreateFlagsEXT String conNamePipelineRasterizationStateStreamCreateFlagsEXT ("firstBinding" ::: Word32) -> PipelineRasterizationStateStreamCreateFlagsEXT PipelineRasterizationStateStreamCreateFlagsEXT type EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION" pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall a . Integral a => a pattern $mEXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall {r} {a}. Integral a => a -> ((# #) -> r) -> ((# #) -> r) -> r $bEXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall a. Integral a => a EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 type EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" -- No documentation found for TopLevel "VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME" pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a pattern $mEXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall {r} {a}. (Eq a, IsString a) => a -> ((# #) -> r) -> ((# #) -> r) -> r $bEXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback"