Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- cmdProcessCommandsNVX :: CommandBuffer -> CmdProcessCommandsInfoNVX -> IO ()
- cmdReserveSpaceForCommandsNVX :: CommandBuffer -> ("reserveSpaceInfo" ::: CmdReserveSpaceForCommandsInfoNVX) -> IO ()
- createIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO IndirectCommandsLayoutNVX
- withIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutCreateInfoNVX -> Maybe AllocationCallbacks -> (IndirectCommandsLayoutNVX -> IO r) -> IO r
- destroyIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()
- createObjectTableNVX :: Device -> ObjectTableCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ObjectTableNVX
- withObjectTableNVX :: Device -> ObjectTableCreateInfoNVX -> Maybe AllocationCallbacks -> (ObjectTableNVX -> IO r) -> IO r
- destroyObjectTableNVX :: Device -> ObjectTableNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()
- registerObjectsNVX :: Device -> ObjectTableNVX -> ("objectTableEntries" ::: Vector ObjectTableEntryNVX) -> ("objectIndices" ::: Vector Word32) -> IO ()
- withRegisteredObjectsNVX :: Device -> ObjectTableNVX -> Vector ObjectTableEntryNVX -> Vector Word32 -> Vector ObjectEntryTypeNVX -> IO r -> IO r
- unregisterObjectsNVX :: Device -> ObjectTableNVX -> ("objectEntryTypes" ::: Vector ObjectEntryTypeNVX) -> ("objectIndices" ::: Vector Word32) -> IO ()
- getPhysicalDeviceGeneratedCommandsPropertiesNVX :: PhysicalDevice -> IO (DeviceGeneratedCommandsFeaturesNVX, DeviceGeneratedCommandsLimitsNVX)
- data DeviceGeneratedCommandsFeaturesNVX = DeviceGeneratedCommandsFeaturesNVX {}
- data DeviceGeneratedCommandsLimitsNVX = DeviceGeneratedCommandsLimitsNVX {}
- data IndirectCommandsTokenNVX = IndirectCommandsTokenNVX {}
- data IndirectCommandsLayoutTokenNVX = IndirectCommandsLayoutTokenNVX {}
- data IndirectCommandsLayoutCreateInfoNVX = IndirectCommandsLayoutCreateInfoNVX {}
- data CmdProcessCommandsInfoNVX = CmdProcessCommandsInfoNVX {
- objectTable :: ObjectTableNVX
- indirectCommandsLayout :: IndirectCommandsLayoutNVX
- indirectCommandsTokens :: Vector IndirectCommandsTokenNVX
- maxSequencesCount :: Word32
- targetCommandBuffer :: Ptr CommandBuffer_T
- sequencesCountBuffer :: Buffer
- sequencesCountOffset :: DeviceSize
- sequencesIndexBuffer :: Buffer
- sequencesIndexOffset :: DeviceSize
- data CmdReserveSpaceForCommandsInfoNVX = CmdReserveSpaceForCommandsInfoNVX {}
- data ObjectTableCreateInfoNVX = ObjectTableCreateInfoNVX {
- objectEntryTypes :: Vector ObjectEntryTypeNVX
- objectEntryCounts :: Vector Word32
- objectEntryUsageFlags :: Vector ObjectEntryUsageFlagsNVX
- maxUniformBuffersPerDescriptor :: Word32
- maxStorageBuffersPerDescriptor :: Word32
- maxStorageImagesPerDescriptor :: Word32
- maxSampledImagesPerDescriptor :: Word32
- maxPipelineLayouts :: Word32
- data ObjectTableEntryNVX = ObjectTableEntryNVX {}
- data ObjectTablePipelineEntryNVX = ObjectTablePipelineEntryNVX {}
- data ObjectTableDescriptorSetEntryNVX = ObjectTableDescriptorSetEntryNVX {}
- data ObjectTableVertexBufferEntryNVX = ObjectTableVertexBufferEntryNVX {}
- data ObjectTableIndexBufferEntryNVX = ObjectTableIndexBufferEntryNVX {}
- data ObjectTablePushConstantEntryNVX = ObjectTablePushConstantEntryNVX {}
- newtype IndirectCommandsLayoutUsageFlagBitsNVX where
- IndirectCommandsLayoutUsageFlagBitsNVX Flags
- pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX :: IndirectCommandsLayoutUsageFlagBitsNVX
- pattern INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX :: IndirectCommandsLayoutUsageFlagBitsNVX
- pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX :: IndirectCommandsLayoutUsageFlagBitsNVX
- pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX :: IndirectCommandsLayoutUsageFlagBitsNVX
- type IndirectCommandsLayoutUsageFlagsNVX = IndirectCommandsLayoutUsageFlagBitsNVX
- newtype ObjectEntryUsageFlagBitsNVX where
- type ObjectEntryUsageFlagsNVX = ObjectEntryUsageFlagBitsNVX
- newtype IndirectCommandsTokenTypeNVX where
- IndirectCommandsTokenTypeNVX Int32
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX :: IndirectCommandsTokenTypeNVX
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX :: IndirectCommandsTokenTypeNVX
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX :: IndirectCommandsTokenTypeNVX
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX :: IndirectCommandsTokenTypeNVX
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX :: IndirectCommandsTokenTypeNVX
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX :: IndirectCommandsTokenTypeNVX
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX :: IndirectCommandsTokenTypeNVX
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX :: IndirectCommandsTokenTypeNVX
- newtype ObjectEntryTypeNVX where
- ObjectEntryTypeNVX Int32
- pattern OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX :: ObjectEntryTypeNVX
- pattern OBJECT_ENTRY_TYPE_PIPELINE_NVX :: ObjectEntryTypeNVX
- pattern OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX :: ObjectEntryTypeNVX
- pattern OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX :: ObjectEntryTypeNVX
- pattern OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX :: ObjectEntryTypeNVX
- type NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3
- pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall a. Integral a => a
- type NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands"
- pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype ObjectTableNVX = ObjectTableNVX Word64
- newtype IndirectCommandsLayoutNVX = IndirectCommandsLayoutNVX Word64
Documentation
cmdProcessCommandsNVX :: CommandBuffer -> CmdProcessCommandsInfoNVX -> IO () Source #
vkCmdProcessCommandsNVX - Performs the generation of commands on the device
Parameters
CommandBuffer
is the primary command buffer in which the generation process takes space.
pProcessCommandsInfo
is a pointer to aCmdProcessCommandsInfoNVX
structure containing parameters affecting the processing of commands.
Valid Usage (Implicit)
CommandBuffer
must be a validCommandBuffer
handle
pProcessCommandsInfo
must be a valid pointer to a validCmdProcessCommandsInfoNVX
structureCommandBuffer
must be in the recording state- The
CommandPool
thatCommandBuffer
was allocated from must support graphics, or compute operations - This command must only be called inside of a render pass instance
Host Synchronization
- Host access to
CommandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatCommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Inside | Graphics Compute |
See Also
cmdReserveSpaceForCommandsNVX :: CommandBuffer -> ("reserveSpaceInfo" ::: CmdReserveSpaceForCommandsInfoNVX) -> IO () Source #
vkCmdReserveSpaceForCommandsNVX - Perform a reservation of command buffer space
Parameters
CommandBuffer
is the secondary command buffer in which the space for device-generated commands is reserved.
pProcessCommandsInfo
is a pointer to aCmdReserveSpaceForCommandsInfoNVX
structure containing parameters affecting the reservation of command buffer space.
Valid Usage
- The provided
CommandBuffer
must not have had a prior space reservation since its creation or the last reset.
- The state of the
CommandBuffer
must be legal to execute all commands within the sequence provided by theindirectCommandsLayout
member ofpProcessCommandsInfo
.
Valid Usage (Implicit)
CommandBuffer
must be a validCommandBuffer
handle
pReserveSpaceInfo
must be a valid pointer to a validCmdReserveSpaceForCommandsInfoNVX
structureCommandBuffer
must be in the recording state- The
CommandPool
thatCommandBuffer
was allocated from must support graphics, or compute operations - This command must only be called inside of a render pass instance
CommandBuffer
must be a secondaryCommandBuffer
Host Synchronization
- Host access to
CommandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatCommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Secondary | Inside | Graphics Compute |
See Also
createIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO IndirectCommandsLayoutNVX Source #
vkCreateIndirectCommandsLayoutNVX - Create an indirect command layout object
Parameters
Device
is the logical device that creates the indirect command layout.
pCreateInfo
is a pointer to aIndirectCommandsLayoutCreateInfoNVX
structure containing parameters affecting creation of the indirect command layout.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pIndirectCommandsLayout
is a pointer to aIndirectCommandsLayoutNVX
handle in which the resulting indirect command layout is returned.
Valid Usage (Implicit)
pCreateInfo
must be a valid pointer to a validIndirectCommandsLayoutCreateInfoNVX
structure- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure pIndirectCommandsLayout
must be a valid pointer to aIndirectCommandsLayoutNVX
handle
Return Codes
See Also
AllocationCallbacks
,
Device
,
IndirectCommandsLayoutCreateInfoNVX
,
IndirectCommandsLayoutNVX
withIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutCreateInfoNVX -> Maybe AllocationCallbacks -> (IndirectCommandsLayoutNVX -> IO r) -> IO r Source #
A safe wrapper for createIndirectCommandsLayoutNVX
and
destroyIndirectCommandsLayoutNVX
using bracket
The allocated value must not be returned from the provided computation
destroyIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO () Source #
vkDestroyIndirectCommandsLayoutNVX - Destroy an object table
Parameters
Device
is the logical device that destroys the layout.
indirectCommandsLayout
is the table to destroy.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- All submitted commands that refer to
indirectCommandsLayout
must have completed execution
- If
AllocationCallbacks
were provided whenobjectTable
was created, a compatible set of callbacks must be provided here - If no
AllocationCallbacks
were provided whenobjectTable
was created,pAllocator
must beNULL
Valid Usage (Implicit)
indirectCommandsLayout
must be a validIndirectCommandsLayoutNVX
handle- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure indirectCommandsLayout
must have been created, allocated, or retrieved fromDevice
See Also
createObjectTableNVX :: Device -> ObjectTableCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ObjectTableNVX Source #
vkCreateObjectTableNVX - Create an object table
Parameters
Device
is the logical device that creates the object table.
pCreateInfo
is a pointer to aObjectTableCreateInfoNVX
structure containing parameters affecting creation of the table.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pObjectTable
is a pointer to aObjectTableNVX
handle in which the resulting object table is returned.
Valid Usage (Implicit)
pCreateInfo
must be a valid pointer to a validObjectTableCreateInfoNVX
structure- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure pObjectTable
must be a valid pointer to aObjectTableNVX
handle
Return Codes
See Also
AllocationCallbacks
,
Device
, ObjectTableCreateInfoNVX
,
ObjectTableNVX
withObjectTableNVX :: Device -> ObjectTableCreateInfoNVX -> Maybe AllocationCallbacks -> (ObjectTableNVX -> IO r) -> IO r Source #
A safe wrapper for createObjectTableNVX
and destroyObjectTableNVX
using bracket
The allocated value must not be returned from the provided computation
destroyObjectTableNVX :: Device -> ObjectTableNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO () Source #
vkDestroyObjectTableNVX - Destroy an object table
Parameters
Device
is the logical device that destroys the table.
objectTable
is the table to destroy.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- All submitted commands that refer to
objectTable
must have completed execution.
- If
AllocationCallbacks
were provided whenobjectTable
was created, a compatible set of callbacks must be provided here. - If no
AllocationCallbacks
were provided whenobjectTable
was created,pAllocator
must beNULL
.
Valid Usage (Implicit)
objectTable
must be a validObjectTableNVX
handle- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure objectTable
must have been created, allocated, or retrieved fromDevice
Host Synchronization
- Host access to
objectTable
must be externally synchronized
See Also
registerObjectsNVX :: Device -> ObjectTableNVX -> ("objectTableEntries" ::: Vector ObjectTableEntryNVX) -> ("objectIndices" ::: Vector Word32) -> IO () Source #
vkRegisterObjectsNVX - Register resource bindings in an object table
Parameters
Device
is the logical device that creates the object table.
objectTable
is the table for which the resources are registered.objectCount
is the number of resources to register.ppObjectTableEntries
provides an array for detailed binding informations. Each array element is a pointer to a structure of typeObjectTablePipelineEntryNVX
,ObjectTableDescriptorSetEntryNVX
,ObjectTableVertexBufferEntryNVX
,ObjectTableIndexBufferEntryNVX
orObjectTablePushConstantEntryNVX
(see below for details).pObjectIndices
are the indices at which each resource is registered.
Valid Usage
- The contents of
pObjectTableEntry
must yield plausible bindings supported by the device.
- At any
pObjectIndices
there must not be a registered resource already. - Any value inside
pObjectIndices
must be below the appropriateObjectTableCreateInfoNVX
::pObjectEntryCounts
limits provided atobjectTable
creation time.
Valid Usage (Implicit)
objectTable
must be a validObjectTableNVX
handleppObjectTableEntries
must be a valid pointer to an array ofobjectCount
validObjectTableEntryNVX
structurespObjectIndices
must be a valid pointer to an array ofobjectCount
uint32_t
valuesobjectCount
must be greater than0
objectTable
must have been created, allocated, or retrieved fromDevice
Host Synchronization
- Host access to
objectTable
must be externally synchronized
Return Codes
See Also
withRegisteredObjectsNVX :: Device -> ObjectTableNVX -> Vector ObjectTableEntryNVX -> Vector Word32 -> Vector ObjectEntryTypeNVX -> IO r -> IO r Source #
A safe wrapper for registerObjectsNVX
and unregisterObjectsNVX
using
bracket_
The allocated value must not be returned from the provided computation
unregisterObjectsNVX :: Device -> ObjectTableNVX -> ("objectEntryTypes" ::: Vector ObjectEntryTypeNVX) -> ("objectIndices" ::: Vector Word32) -> IO () Source #
vkUnregisterObjectsNVX - Unregister resource bindings in an object table
Parameters
Device
is the logical device that creates the object table.
objectTable
is the table from which the resources are unregistered.objectCount
is the number of resources being removed from the object table.pObjectEntryType
provides an array ofObjectEntryTypeNVX
for the resources being removed.pObjectIndices
provides the array of object indices to be removed.
Valid Usage
- At any
pObjectIndices
there must be a registered resource already.
- The
pObjectEntryTypes
of the resource atpObjectIndices
must match. - All operations on the device using the registered resource must have been completed.
Valid Usage (Implicit)
objectTable
must be a validObjectTableNVX
handlepObjectEntryTypes
must be a valid pointer to an array ofobjectCount
validObjectEntryTypeNVX
valuespObjectIndices
must be a valid pointer to an array ofobjectCount
uint32_t
valuesobjectCount
must be greater than0
objectTable
must have been created, allocated, or retrieved fromDevice
Host Synchronization
- Host access to
objectTable
must be externally synchronized
Return Codes
See Also
getPhysicalDeviceGeneratedCommandsPropertiesNVX :: PhysicalDevice -> IO (DeviceGeneratedCommandsFeaturesNVX, DeviceGeneratedCommandsLimitsNVX) Source #
vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX - Returns device-generated commands related properties of a physical device
Parameters
PhysicalDevice
is the handle to the physical device whose properties will be queried.
pFeatures
is a pointer to aDeviceGeneratedCommandsFeaturesNVX
structure in which features are returned.pLimits
is a pointer to aDeviceGeneratedCommandsLimitsNVX
structure in which limitations are returned.
Valid Usage (Implicit)
See Also
DeviceGeneratedCommandsFeaturesNVX
,
DeviceGeneratedCommandsLimitsNVX
,
PhysicalDevice
data DeviceGeneratedCommandsFeaturesNVX Source #
VkDeviceGeneratedCommandsFeaturesNVX - Structure specifying physical device support
Valid Usage (Implicit)
See Also
Bool32
,
StructureType
,
getPhysicalDeviceGeneratedCommandsPropertiesNVX
DeviceGeneratedCommandsFeaturesNVX | |
|
Instances
data DeviceGeneratedCommandsLimitsNVX Source #
VkDeviceGeneratedCommandsLimitsNVX - Structure specifying physical device limits
Valid Usage (Implicit)
See Also
StructureType
,
getPhysicalDeviceGeneratedCommandsPropertiesNVX
DeviceGeneratedCommandsLimitsNVX | |
|
Instances
data IndirectCommandsTokenNVX Source #
VkIndirectCommandsTokenNVX - Structure specifying parameters for the reservation of command buffer space
Valid Usage
- The
Buffer
’s usage flag must have theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set.
- The
offset
must be aligned toDeviceGeneratedCommandsLimitsNVX
::minCommandsTokenBufferOffsetAlignment
.
Valid Usage (Implicit)
tokenType
must be a validIndirectCommandsTokenTypeNVX
value
See Also
Buffer
, CmdProcessCommandsInfoNVX
,
DeviceSize
,
IndirectCommandsTokenTypeNVX
IndirectCommandsTokenNVX | |
|
Instances
data IndirectCommandsLayoutTokenNVX Source #
VkIndirectCommandsLayoutTokenNVX - Struct specifying the details of an indirect command layout token
Valid Usage (Implicit)
See Also
IndirectCommandsLayoutCreateInfoNVX
, IndirectCommandsTokenTypeNVX
IndirectCommandsLayoutTokenNVX | |
|
Instances
data IndirectCommandsLayoutCreateInfoNVX Source #
VkIndirectCommandsLayoutCreateInfoNVX - Structure specifying the parameters of a newly created indirect commands layout object
Description
The following code illustrates some of the key flags:
void cmdProcessAllSequences(cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferoffset) { for (s = 0; s < sequencesCount; s++) { sequence = s; if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX) { sequence = incoherent_implementation_dependent_permutation[ sequence ]; } if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX) { sequence = indexbuffer.load_uint32( sequence * sizeof(uint32_t) + indexbufferoffset); } cmdProcessSequence( cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequence ); } }
Valid Usage
tokenCount
must be greater than0
and belowDeviceGeneratedCommandsLimitsNVX
::maxIndirectCommandsLayoutTokenCount
- If the
DeviceGeneratedCommandsFeaturesNVX
::computeBindingPointSupport
feature is not enabled, thenPipelineBindPoint
must not bePIPELINE_BIND_POINT_COMPUTE
- If
pTokens
contains an entry ofINDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX
it must be the first element of the array and there must be only a single element of such token type. - All state binding tokens in
pTokens
must occur prior work provoking tokens (INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX
,INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX
,INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
). - The content of
pTokens
must include one single work provoking token that is compatible with thePipelineBindPoint
.
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX
pNext
must beNULL
PipelineBindPoint
must be a validPipelineBindPoint
valueFlags
must be a valid combination ofIndirectCommandsLayoutUsageFlagBitsNVX
valuesFlags
must not be0
pTokens
must be a valid pointer to an array oftokenCount
validIndirectCommandsLayoutTokenNVX
structurestokenCount
must be greater than0
See Also
IndirectCommandsLayoutTokenNVX
, IndirectCommandsLayoutUsageFlagsNVX
,
PipelineBindPoint
,
StructureType
,
createIndirectCommandsLayoutNVX
IndirectCommandsLayoutCreateInfoNVX | |
|
Instances
data CmdProcessCommandsInfoNVX Source #
VkCmdProcessCommandsInfoNVX - Structure specifying parameters for the generation of commands
Valid Usage
- The provided
objectTable
must include all objects referenced by the generation process
indirectCommandsTokenCount
must match theindirectCommandsLayout
’stokenCount
- The
tokenType
member of each entry in thepIndirectCommandsTokens
array must match the values used at creation time ofindirectCommandsLayout
- If
targetCommandBuffer
is provided, it must have reserved command space - If
targetCommandBuffer
is provided, theobjectTable
must match the reservation’sobjectTable
and must have had all referenced objects registered at reservation time - If
targetCommandBuffer
is provided, theindirectCommandsLayout
must match the reservation’sindirectCommandsLayout
- If
targetCommandBuffer
is provided, themaxSequencesCount
must not exceed the reservation’smaxSequencesCount
- If
sequencesCountBuffer
is used, its usage flag must have theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set - If
sequencesCountBuffer
is used,sequencesCountOffset
must be aligned toDeviceGeneratedCommandsLimitsNVX
::minSequenceCountBufferOffsetAlignment
- If
sequencesIndexBuffer
is used, its usage flag must have theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set - If
sequencesIndexBuffer
is used,sequencesIndexOffset
must be aligned toDeviceGeneratedCommandsLimitsNVX
::minSequenceIndexBufferOffsetAlignment
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX
pNext
must beNULL
objectTable
must be a validObjectTableNVX
handleindirectCommandsLayout
must be a validIndirectCommandsLayoutNVX
handlepIndirectCommandsTokens
must be a valid pointer to an array ofindirectCommandsTokenCount
validIndirectCommandsTokenNVX
structures- If
targetCommandBuffer
is notNULL
,targetCommandBuffer
must be a validCommandBuffer
handle - If
sequencesCountBuffer
is notNULL_HANDLE
,sequencesCountBuffer
must be a validBuffer
handle - If
sequencesIndexBuffer
is notNULL_HANDLE
,sequencesIndexBuffer
must be a validBuffer
handle indirectCommandsTokenCount
must be greater than0
- Each of
indirectCommandsLayout
,objectTable
,sequencesCountBuffer
,sequencesIndexBuffer
, andtargetCommandBuffer
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
objectTable
must be externally synchronized
- Host access to
targetCommandBuffer
must be externally synchronized
See Also
Buffer
,
CommandBuffer
,
DeviceSize
,
IndirectCommandsLayoutNVX
,
IndirectCommandsTokenNVX
,
ObjectTableNVX
,
StructureType
,
cmdProcessCommandsNVX
CmdProcessCommandsInfoNVX | |
|
Instances
Show CmdProcessCommandsInfoNVX Source # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands showsPrec :: Int -> CmdProcessCommandsInfoNVX -> ShowS # show :: CmdProcessCommandsInfoNVX -> String # showList :: [CmdProcessCommandsInfoNVX] -> ShowS # | |
FromCStruct CmdProcessCommandsInfoNVX Source # | |
ToCStruct CmdProcessCommandsInfoNVX Source # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands withCStruct :: CmdProcessCommandsInfoNVX -> (Ptr CmdProcessCommandsInfoNVX -> IO b) -> IO b Source # pokeCStruct :: Ptr CmdProcessCommandsInfoNVX -> CmdProcessCommandsInfoNVX -> IO b -> IO b Source # withZeroCStruct :: (Ptr CmdProcessCommandsInfoNVX -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr CmdProcessCommandsInfoNVX -> IO b -> IO b Source # cStructSize :: Int Source # | |
Zero CmdProcessCommandsInfoNVX Source # | |
data CmdReserveSpaceForCommandsInfoNVX Source #
VkCmdReserveSpaceForCommandsInfoNVX - Structure specifying parameters for the reservation of command buffer space
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX
pNext
must beNULL
objectTable
must be a validObjectTableNVX
handleindirectCommandsLayout
must be a validIndirectCommandsLayoutNVX
handle- Both of
indirectCommandsLayout
, andobjectTable
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
objectTable
must be externally synchronized
See Also
IndirectCommandsLayoutNVX
,
ObjectTableNVX
,
StructureType
,
cmdReserveSpaceForCommandsNVX
CmdReserveSpaceForCommandsInfoNVX | |
|
Instances
data ObjectTableCreateInfoNVX Source #
VkObjectTableCreateInfoNVX - Structure specifying the parameters of a newly created object table
Valid Usage
- If the
DeviceGeneratedCommandsFeaturesNVX
::computeBindingPointSupport
feature is not enabled,pObjectEntryUsageFlags
must not containOBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
- Any value within
pObjectEntryCounts
must not exceedDeviceGeneratedCommandsLimitsNVX
::maxObjectEntryCounts
maxUniformBuffersPerDescriptor
must be within the limits supported by the device.maxStorageBuffersPerDescriptor
must be within the limits supported by the device.maxStorageImagesPerDescriptor
must be within the limits supported by the device.maxSampledImagesPerDescriptor
must be within the limits supported by the device.
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX
pNext
must beNULL
pObjectEntryTypes
must be a valid pointer to an array ofobjectCount
validObjectEntryTypeNVX
valuespObjectEntryCounts
must be a valid pointer to an array ofobjectCount
uint32_t
valuespObjectEntryUsageFlags
must be a valid pointer to an array ofobjectCount
valid combinations ofObjectEntryUsageFlagBitsNVX
values- Each element of
pObjectEntryUsageFlags
must not be0
objectCount
must be greater than0
See Also
ObjectEntryTypeNVX
, ObjectEntryUsageFlagsNVX
,
StructureType
,
createObjectTableNVX
ObjectTableCreateInfoNVX | |
|
Instances
Show ObjectTableCreateInfoNVX Source # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands showsPrec :: Int -> ObjectTableCreateInfoNVX -> ShowS # show :: ObjectTableCreateInfoNVX -> String # showList :: [ObjectTableCreateInfoNVX] -> ShowS # | |
FromCStruct ObjectTableCreateInfoNVX Source # | |
ToCStruct ObjectTableCreateInfoNVX Source # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands withCStruct :: ObjectTableCreateInfoNVX -> (Ptr ObjectTableCreateInfoNVX -> IO b) -> IO b Source # pokeCStruct :: Ptr ObjectTableCreateInfoNVX -> ObjectTableCreateInfoNVX -> IO b -> IO b Source # withZeroCStruct :: (Ptr ObjectTableCreateInfoNVX -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr ObjectTableCreateInfoNVX -> IO b -> IO b Source # cStructSize :: Int Source # | |
Zero ObjectTableCreateInfoNVX Source # | |
data ObjectTableEntryNVX Source #
VkObjectTableEntryNVX - Common parameters of an object table resource entry
Valid Usage
- If the
DeviceGeneratedCommandsFeaturesNVX
::computeBindingPointSupport
feature is not enabled,Flags
must not containOBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
Valid Usage (Implicit)
type
must be a validObjectEntryTypeNVX
value
Flags
must be a valid combination ofObjectEntryUsageFlagBitsNVX
valuesFlags
must not be0
See Also
ObjectEntryTypeNVX
, ObjectEntryUsageFlagsNVX
, registerObjectsNVX
ObjectTableEntryNVX | |
|
Instances
data ObjectTablePipelineEntryNVX Source #
VkObjectTablePipelineEntryNVX - Parameters of an object table pipeline entry
Valid Usage (Implicit)
See Also
ObjectTablePipelineEntryNVX | |
|
Instances
data ObjectTableDescriptorSetEntryNVX Source #
VkObjectTableDescriptorSetEntryNVX - Parameters of an object table descriptor set entry
Valid Usage
type
must beOBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX
Valid Usage (Implicit)
type
must be a validObjectEntryTypeNVX
value
Flags
must be a valid combination ofObjectEntryUsageFlagBitsNVX
valuesFlags
must not be0
PipelineLayout
must be a validPipelineLayout
handleDescriptorSet
must be a validDescriptorSet
handle- Both of
DescriptorSet
, andPipelineLayout
must have been created, allocated, or retrieved from the sameDevice
See Also
DescriptorSet
, ObjectEntryTypeNVX
,
ObjectEntryUsageFlagsNVX
,
PipelineLayout
ObjectTableDescriptorSetEntryNVX | |
|
Instances
data ObjectTableVertexBufferEntryNVX Source #
VkObjectTableVertexBufferEntryNVX - Parameters of an object table vertex buffer entry
Valid Usage (Implicit)
See Also
ObjectTableVertexBufferEntryNVX | |
|
Instances
data ObjectTableIndexBufferEntryNVX Source #
VkObjectTableIndexBufferEntryNVX - Parameters of an object table index buffer entry
Valid Usage (Implicit)
See Also
Buffer
,
IndexType
,
ObjectEntryTypeNVX
, ObjectEntryUsageFlagsNVX
ObjectTableIndexBufferEntryNVX | |
|
Instances
data ObjectTablePushConstantEntryNVX Source #
VkObjectTablePushConstantEntryNVX - Parameters of an object table push constant entry
Valid Usage (Implicit)
See Also
ObjectEntryTypeNVX
, ObjectEntryUsageFlagsNVX
,
PipelineLayout
,
ShaderStageFlags
ObjectTablePushConstantEntryNVX | |
|
Instances
newtype IndirectCommandsLayoutUsageFlagBitsNVX Source #
VkIndirectCommandsLayoutUsageFlagBitsNVX - Bitmask specifying allowed usage of an indirect commands layout
See Also
Instances
newtype ObjectEntryUsageFlagBitsNVX Source #
VkObjectEntryUsageFlagBitsNVX - Bitmask specifying allowed usage of an object entry
See Also
pattern OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX :: ObjectEntryUsageFlagBitsNVX |
|
pattern OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX :: ObjectEntryUsageFlagBitsNVX |
|
Instances
newtype IndirectCommandsTokenTypeNVX Source #
VkIndirectCommandsTokenTypeNVX - Enum specifying
Description
'
Supported indirect command tokens
See Also
Instances
newtype ObjectEntryTypeNVX Source #
VkObjectEntryTypeNVX - Enum specifying object table entry type
See Also
ObjectTableCreateInfoNVX
, ObjectTableDescriptorSetEntryNVX
,
ObjectTableEntryNVX
, ObjectTableIndexBufferEntryNVX
,
ObjectTablePipelineEntryNVX
, ObjectTablePushConstantEntryNVX
,
ObjectTableVertexBufferEntryNVX
, unregisterObjectsNVX
pattern OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX :: ObjectEntryTypeNVX |
|
pattern OBJECT_ENTRY_TYPE_PIPELINE_NVX :: ObjectEntryTypeNVX |
|
pattern OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX :: ObjectEntryTypeNVX |
|
pattern OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX :: ObjectEntryTypeNVX |
|
pattern OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX :: ObjectEntryTypeNVX |
|
Instances
pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall a. Integral a => a Source #
type NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands" Source #
pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
newtype ObjectTableNVX Source #
VkObjectTableNVX - Opaque handle to an object table
See Also
CmdProcessCommandsInfoNVX
,
CmdReserveSpaceForCommandsInfoNVX
,
createObjectTableNVX
,
destroyObjectTableNVX
,
registerObjectsNVX
,
unregisterObjectsNVX
Instances
newtype IndirectCommandsLayoutNVX Source #
VkIndirectCommandsLayoutNVX - Opaque handle to an indirect commands layout object
See Also
CmdProcessCommandsInfoNVX
,
CmdReserveSpaceForCommandsInfoNVX
,
createIndirectCommandsLayoutNVX
,
destroyIndirectCommandsLayoutNVX