| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands
Synopsis
- cmdProcessCommandsNVX :: forall io. MonadIO io => CommandBuffer -> CmdProcessCommandsInfoNVX -> io ()
- cmdReserveSpaceForCommandsNVX :: forall io. MonadIO io => CommandBuffer -> ("reserveSpaceInfo" ::: CmdReserveSpaceForCommandsInfoNVX) -> io ()
- createIndirectCommandsLayoutNVX :: forall io. MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io IndirectCommandsLayoutNVX
- withIndirectCommandsLayoutNVX :: forall r. Device -> IndirectCommandsLayoutCreateInfoNVX -> Maybe AllocationCallbacks -> (IndirectCommandsLayoutNVX -> IO r) -> IO r
- destroyIndirectCommandsLayoutNVX :: forall io. MonadIO io => Device -> IndirectCommandsLayoutNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- createObjectTableNVX :: forall io. MonadIO io => Device -> ObjectTableCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io ObjectTableNVX
- withObjectTableNVX :: forall r. Device -> ObjectTableCreateInfoNVX -> Maybe AllocationCallbacks -> (ObjectTableNVX -> IO r) -> IO r
- destroyObjectTableNVX :: forall io. MonadIO io => Device -> ObjectTableNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- registerObjectsNVX :: forall io. MonadIO io => Device -> ObjectTableNVX -> ("objectTableEntries" ::: Vector ObjectTableEntryNVX) -> ("objectIndices" ::: Vector Word32) -> io ()
- withRegisteredObjectsNVX :: forall r. Device -> ObjectTableNVX -> Vector ObjectTableEntryNVX -> Vector Word32 -> Vector ObjectEntryTypeNVX -> IO r -> IO r
- unregisterObjectsNVX :: forall io. MonadIO io => Device -> ObjectTableNVX -> ("objectEntryTypes" ::: Vector ObjectEntryTypeNVX) -> ("objectIndices" ::: Vector Word32) -> io ()
- getPhysicalDeviceGeneratedCommandsPropertiesNVX :: forall io. MonadIO io => 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 :: forall io. MonadIO io => CommandBuffer -> CmdProcessCommandsInfoNVX -> io () Source #
vkCmdProcessCommandsNVX - Performs the generation of commands on the device
Parameters
commandBufferis the primary command buffer in which the generation process takes space.
pProcessCommandsInfois a pointer to aCmdProcessCommandsInfoNVXstructure containing parameters affecting the processing of commands.
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pProcessCommandsInfomust be a valid pointer to a validCmdProcessCommandsInfoNVXstructurecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas 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
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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 :: forall io. MonadIO io => CommandBuffer -> ("reserveSpaceInfo" ::: CmdReserveSpaceForCommandsInfoNVX) -> io () Source #
vkCmdReserveSpaceForCommandsNVX - Perform a reservation of command buffer space
Parameters
commandBufferis the secondary command buffer in which the space for device-generated commands is reserved.
pProcessCommandsInfois a pointer to aCmdReserveSpaceForCommandsInfoNVXstructure containing parameters affecting the reservation of command buffer space.
Valid Usage
- The provided
commandBuffermust not have had a prior space reservation since its creation or the last reset.
- The state of the
commandBuffermust be legal to execute all commands within the sequence provided by theindirectCommandsLayoutmember ofpProcessCommandsInfo.
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pReserveSpaceInfomust be a valid pointer to a validCmdReserveSpaceForCommandsInfoNVXstructurecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - This command must only be called inside of a render pass instance
commandBuffermust be a secondaryCommandBuffer
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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 :: forall io. MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io IndirectCommandsLayoutNVX Source #
vkCreateIndirectCommandsLayoutNVX - Create an indirect command layout object
Parameters
deviceis the logical device that creates the indirect command layout.
pCreateInfois a pointer to aIndirectCommandsLayoutCreateInfoNVXstructure containing parameters affecting creation of the indirect command layout.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.pIndirectCommandsLayoutis a pointer to aIndirectCommandsLayoutNVXhandle in which the resulting indirect command layout is returned.
Valid Usage (Implicit)
devicemust be a validDevicehandle
pCreateInfomust be a valid pointer to a validIndirectCommandsLayoutCreateInfoNVXstructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pIndirectCommandsLayoutmust be a valid pointer to aIndirectCommandsLayoutNVXhandle
Return Codes
See Also
AllocationCallbacks,
Device,
IndirectCommandsLayoutCreateInfoNVX,
IndirectCommandsLayoutNVX
withIndirectCommandsLayoutNVX :: forall r. 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 :: forall io. MonadIO io => Device -> IndirectCommandsLayoutNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io () Source #
vkDestroyIndirectCommandsLayoutNVX - Destroy an object table
Parameters
deviceis the logical device that destroys the layout.
indirectCommandsLayoutis the table to destroy.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- All submitted commands that refer to
indirectCommandsLayoutmust have completed execution
- If
AllocationCallbackswere provided whenobjectTablewas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whenobjectTablewas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validDevicehandle
indirectCommandsLayoutmust be a validIndirectCommandsLayoutNVXhandle- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure indirectCommandsLayoutmust have been created, allocated, or retrieved fromdevice
See Also
createObjectTableNVX :: forall io. MonadIO io => Device -> ObjectTableCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io ObjectTableNVX Source #
vkCreateObjectTableNVX - Create an object table
Parameters
deviceis the logical device that creates the object table.
pCreateInfois a pointer to aObjectTableCreateInfoNVXstructure containing parameters affecting creation of the table.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.pObjectTableis a pointer to aObjectTableNVXhandle in which the resulting object table is returned.
Valid Usage (Implicit)
devicemust be a validDevicehandle
pCreateInfomust be a valid pointer to a validObjectTableCreateInfoNVXstructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pObjectTablemust be a valid pointer to aObjectTableNVXhandle
Return Codes
See Also
AllocationCallbacks,
Device, ObjectTableCreateInfoNVX,
ObjectTableNVX
withObjectTableNVX :: forall r. 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 :: forall io. MonadIO io => Device -> ObjectTableNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io () Source #
vkDestroyObjectTableNVX - Destroy an object table
Parameters
deviceis the logical device that destroys the table.
objectTableis the table to destroy.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- All submitted commands that refer to
objectTablemust have completed execution.
- If
AllocationCallbackswere provided whenobjectTablewas created, a compatible set of callbacks must be provided here. - If no
AllocationCallbackswere provided whenobjectTablewas created,pAllocatormust beNULL.
Valid Usage (Implicit)
devicemust be a validDevicehandle
objectTablemust be a validObjectTableNVXhandle- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure objectTablemust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
objectTablemust be externally synchronized
See Also
registerObjectsNVX :: forall io. MonadIO io => Device -> ObjectTableNVX -> ("objectTableEntries" ::: Vector ObjectTableEntryNVX) -> ("objectIndices" ::: Vector Word32) -> io () Source #
vkRegisterObjectsNVX - Register resource bindings in an object table
Parameters
deviceis the logical device that creates the object table.
objectTableis the table for which the resources are registered.objectCountis the number of resources to register.ppObjectTableEntriesprovides an array for detailed binding informations. Each array element is a pointer to a structure of typeObjectTablePipelineEntryNVX,ObjectTableDescriptorSetEntryNVX,ObjectTableVertexBufferEntryNVX,ObjectTableIndexBufferEntryNVXorObjectTablePushConstantEntryNVX(see below for details).pObjectIndicesare the indices at which each resource is registered.
Valid Usage
- The contents of
pObjectTableEntrymust yield plausible bindings supported by the device.
- At any
pObjectIndicesthere must not be a registered resource already. - Any value inside
pObjectIndicesmust be below the appropriateObjectTableCreateInfoNVX::pObjectEntryCountslimits provided atobjectTablecreation time.
Valid Usage (Implicit)
devicemust be a validDevicehandle
objectTablemust be a validObjectTableNVXhandleppObjectTableEntriesmust be a valid pointer to an array ofobjectCountvalidObjectTableEntryNVXstructurespObjectIndicesmust be a valid pointer to an array ofobjectCountuint32_tvaluesobjectCountmust be greater than0objectTablemust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
objectTablemust be externally synchronized
Return Codes
See Also
withRegisteredObjectsNVX :: forall r. Device -> ObjectTableNVX -> Vector ObjectTableEntryNVX -> Vector Word32 -> Vector ObjectEntryTypeNVX -> IO r -> IO r Source #
A safe wrapper for registerObjectsNVX and unregisterObjectsNVX using
bracket_
unregisterObjectsNVX :: forall io. MonadIO io => Device -> ObjectTableNVX -> ("objectEntryTypes" ::: Vector ObjectEntryTypeNVX) -> ("objectIndices" ::: Vector Word32) -> io () Source #
vkUnregisterObjectsNVX - Unregister resource bindings in an object table
Parameters
deviceis the logical device that creates the object table.
objectTableis the table from which the resources are unregistered.objectCountis the number of resources being removed from the object table.pObjectEntryTypeprovides an array ofObjectEntryTypeNVXfor the resources being removed.pObjectIndicesprovides the array of object indices to be removed.
Valid Usage
- At any
pObjectIndicesthere must be a registered resource already.
- The
pObjectEntryTypesof the resource atpObjectIndicesmust match. - All operations on the device using the registered resource must have been completed.
Valid Usage (Implicit)
devicemust be a validDevicehandle
objectTablemust be a validObjectTableNVXhandlepObjectEntryTypesmust be a valid pointer to an array ofobjectCountvalidObjectEntryTypeNVXvaluespObjectIndicesmust be a valid pointer to an array ofobjectCountuint32_tvaluesobjectCountmust be greater than0objectTablemust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
objectTablemust be externally synchronized
Return Codes
See Also
getPhysicalDeviceGeneratedCommandsPropertiesNVX :: forall io. MonadIO io => PhysicalDevice -> io (DeviceGeneratedCommandsFeaturesNVX, DeviceGeneratedCommandsLimitsNVX) Source #
vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX - Returns device-generated commands related properties of a physical device
Parameters
physicalDeviceis the handle to the physical device whose properties will be queried.
pFeaturesis a pointer to aDeviceGeneratedCommandsFeaturesNVXstructure in which features are returned.pLimitsis a pointer to aDeviceGeneratedCommandsLimitsNVXstructure 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
Constructors
| DeviceGeneratedCommandsFeaturesNVX | |
Fields
| |
Instances
data DeviceGeneratedCommandsLimitsNVX Source #
VkDeviceGeneratedCommandsLimitsNVX - Structure specifying physical device limits
Valid Usage (Implicit)
See Also
StructureType,
getPhysicalDeviceGeneratedCommandsPropertiesNVX
Constructors
| DeviceGeneratedCommandsLimitsNVX | |
Fields
| |
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_BITbit set.
- The
offsetmust be aligned toDeviceGeneratedCommandsLimitsNVX::minCommandsTokenBufferOffsetAlignment.
Valid Usage (Implicit)
tokenTypemust be a validIndirectCommandsTokenTypeNVXvalue
buffermust be a validBufferhandle
See Also
Buffer, CmdProcessCommandsInfoNVX,
DeviceSize,
IndirectCommandsTokenTypeNVX
Constructors
| IndirectCommandsTokenNVX | |
Fields
| |
Instances
data IndirectCommandsLayoutTokenNVX Source #
VkIndirectCommandsLayoutTokenNVX - Struct specifying the details of an indirect command layout token
Valid Usage (Implicit)
See Also
IndirectCommandsLayoutCreateInfoNVX, IndirectCommandsTokenTypeNVX
Constructors
| IndirectCommandsLayoutTokenNVX | |
Fields
| |
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
tokenCountmust be greater than0and belowDeviceGeneratedCommandsLimitsNVX::maxIndirectCommandsLayoutTokenCount
- If the
DeviceGeneratedCommandsFeaturesNVX::computeBindingPointSupportfeature is not enabled, thenpipelineBindPointmust not bePIPELINE_BIND_POINT_COMPUTE - If
pTokenscontains an entry ofINDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVXit 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
pTokensmust 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
pTokensmust include one single work provoking token that is compatible with thepipelineBindPoint.
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX
pNextmust beNULLpipelineBindPointmust be a validPipelineBindPointvalueflagsmust be a valid combination ofIndirectCommandsLayoutUsageFlagBitsNVXvaluesflagsmust not be0pTokensmust be a valid pointer to an array oftokenCountvalidIndirectCommandsLayoutTokenNVXstructurestokenCountmust be greater than0
See Also
IndirectCommandsLayoutTokenNVX, IndirectCommandsLayoutUsageFlagsNVX,
PipelineBindPoint,
StructureType,
createIndirectCommandsLayoutNVX
Constructors
| IndirectCommandsLayoutCreateInfoNVX | |
Fields
| |
Instances
data CmdProcessCommandsInfoNVX Source #
VkCmdProcessCommandsInfoNVX - Structure specifying parameters for the generation of commands
Valid Usage
- The provided
objectTablemust include all objects referenced by the generation process
indirectCommandsTokenCountmust match theindirectCommandsLayout’stokenCount- The
tokenTypemember of each entry in thepIndirectCommandsTokensarray must match the values used at creation time ofindirectCommandsLayout - If
targetCommandBufferis provided, it must have reserved command space - If
targetCommandBufferis provided, theobjectTablemust match the reservation’sobjectTableand must have had all referenced objects registered at reservation time - If
targetCommandBufferis provided, theindirectCommandsLayoutmust match the reservation’sindirectCommandsLayout - If
targetCommandBufferis provided, themaxSequencesCountmust not exceed the reservation’smaxSequencesCount - If
sequencesCountBufferis used, its usage flag must have theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set - If
sequencesCountBufferis used,sequencesCountOffsetmust be aligned toDeviceGeneratedCommandsLimitsNVX::minSequenceCountBufferOffsetAlignment - If
sequencesIndexBufferis used, its usage flag must have theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set - If
sequencesIndexBufferis used,sequencesIndexOffsetmust be aligned toDeviceGeneratedCommandsLimitsNVX::minSequenceIndexBufferOffsetAlignment
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX
pNextmust beNULLobjectTablemust be a validObjectTableNVXhandleindirectCommandsLayoutmust be a validIndirectCommandsLayoutNVXhandlepIndirectCommandsTokensmust be a valid pointer to an array ofindirectCommandsTokenCountvalidIndirectCommandsTokenNVXstructures- If
targetCommandBufferis notNULL,targetCommandBuffermust be a validCommandBufferhandle - If
sequencesCountBufferis notNULL_HANDLE,sequencesCountBuffermust be a validBufferhandle - If
sequencesIndexBufferis notNULL_HANDLE,sequencesIndexBuffermust be a validBufferhandle indirectCommandsTokenCountmust be greater than0- Each of
indirectCommandsLayout,objectTable,sequencesCountBuffer,sequencesIndexBuffer, andtargetCommandBufferthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
objectTablemust be externally synchronized
- Host access to
targetCommandBuffermust be externally synchronized
See Also
Buffer,
CommandBuffer,
DeviceSize,
IndirectCommandsLayoutNVX,
IndirectCommandsTokenNVX,
ObjectTableNVX,
StructureType,
cmdProcessCommandsNVX
Constructors
| CmdProcessCommandsInfoNVX | |
Fields
| |
Instances
| Show CmdProcessCommandsInfoNVX Source # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands Methods 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 Methods 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 # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands Methods | |
data CmdReserveSpaceForCommandsInfoNVX Source #
VkCmdReserveSpaceForCommandsInfoNVX - Structure specifying parameters for the reservation of command buffer space
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX
pNextmust beNULLobjectTablemust be a validObjectTableNVXhandleindirectCommandsLayoutmust be a validIndirectCommandsLayoutNVXhandle- Both of
indirectCommandsLayout, andobjectTablemust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
objectTablemust be externally synchronized
See Also
IndirectCommandsLayoutNVX,
ObjectTableNVX,
StructureType,
cmdReserveSpaceForCommandsNVX
Constructors
| CmdReserveSpaceForCommandsInfoNVX | |
Fields
| |
Instances
data ObjectTableCreateInfoNVX Source #
VkObjectTableCreateInfoNVX - Structure specifying the parameters of a newly created object table
Valid Usage
- If the
DeviceGeneratedCommandsFeaturesNVX::computeBindingPointSupportfeature is not enabled,pObjectEntryUsageFlagsmust not containOBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
- Any value within
pObjectEntryCountsmust not exceedDeviceGeneratedCommandsLimitsNVX::maxObjectEntryCounts maxUniformBuffersPerDescriptormust be within the limits supported by the device.maxStorageBuffersPerDescriptormust be within the limits supported by the device.maxStorageImagesPerDescriptormust be within the limits supported by the device.maxSampledImagesPerDescriptormust be within the limits supported by the device.
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX
pNextmust beNULLpObjectEntryTypesmust be a valid pointer to an array ofobjectCountvalidObjectEntryTypeNVXvaluespObjectEntryCountsmust be a valid pointer to an array ofobjectCountuint32_tvaluespObjectEntryUsageFlagsmust be a valid pointer to an array ofobjectCountvalid combinations ofObjectEntryUsageFlagBitsNVXvalues- Each element of
pObjectEntryUsageFlagsmust not be0 objectCountmust be greater than0
See Also
ObjectEntryTypeNVX, ObjectEntryUsageFlagsNVX,
StructureType,
createObjectTableNVX
Constructors
| ObjectTableCreateInfoNVX | |
Fields
| |
Instances
| Show ObjectTableCreateInfoNVX Source # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands Methods 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 Methods 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 # | |
Defined in Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands Methods | |
data ObjectTableEntryNVX Source #
VkObjectTableEntryNVX - Common parameters of an object table resource entry
Valid Usage
- If the
DeviceGeneratedCommandsFeaturesNVX::computeBindingPointSupportfeature is not enabled,flagsmust not containOBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
Valid Usage (Implicit)
typemust be a validObjectEntryTypeNVXvalue
flagsmust be a valid combination ofObjectEntryUsageFlagBitsNVXvaluesflagsmust not be0
See Also
ObjectEntryTypeNVX, ObjectEntryUsageFlagsNVX, registerObjectsNVX
Constructors
| ObjectTableEntryNVX | |
Fields
| |
Instances
data ObjectTablePipelineEntryNVX Source #
VkObjectTablePipelineEntryNVX - Parameters of an object table pipeline entry
Valid Usage (Implicit)
See Also
Constructors
| ObjectTablePipelineEntryNVX | |
Fields
| |
Instances
data ObjectTableDescriptorSetEntryNVX Source #
VkObjectTableDescriptorSetEntryNVX - Parameters of an object table descriptor set entry
Valid Usage
typemust beOBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX
Valid Usage (Implicit)
typemust be a validObjectEntryTypeNVXvalue
flagsmust be a valid combination ofObjectEntryUsageFlagBitsNVXvaluesflagsmust not be0pipelineLayoutmust be a validPipelineLayouthandledescriptorSetmust be a validDescriptorSethandle- Both of
descriptorSet, andpipelineLayoutmust have been created, allocated, or retrieved from the sameDevice
See Also
DescriptorSet, ObjectEntryTypeNVX,
ObjectEntryUsageFlagsNVX,
PipelineLayout
Constructors
| ObjectTableDescriptorSetEntryNVX | |
Fields
| |
Instances
data ObjectTableVertexBufferEntryNVX Source #
VkObjectTableVertexBufferEntryNVX - Parameters of an object table vertex buffer entry
Valid Usage (Implicit)
See Also
Constructors
| ObjectTableVertexBufferEntryNVX | |
Fields
| |
Instances
data ObjectTableIndexBufferEntryNVX Source #
VkObjectTableIndexBufferEntryNVX - Parameters of an object table index buffer entry
Valid Usage (Implicit)
See Also
Buffer,
IndexType,
ObjectEntryTypeNVX, ObjectEntryUsageFlagsNVX
Constructors
| ObjectTableIndexBufferEntryNVX | |
Fields
| |
Instances
data ObjectTablePushConstantEntryNVX Source #
VkObjectTablePushConstantEntryNVX - Parameters of an object table push constant entry
Valid Usage (Implicit)
See Also
ObjectEntryTypeNVX, ObjectEntryUsageFlagsNVX,
PipelineLayout,
ShaderStageFlags
Constructors
| ObjectTablePushConstantEntryNVX | |
Fields
| |
Instances
newtype IndirectCommandsLayoutUsageFlagBitsNVX Source #
VkIndirectCommandsLayoutUsageFlagBitsNVX - Bitmask specifying allowed usage of an indirect commands layout
See Also
Constructors
| IndirectCommandsLayoutUsageFlagBitsNVX Flags |
Bundled Patterns
Instances
newtype ObjectEntryUsageFlagBitsNVX Source #
VkObjectEntryUsageFlagBitsNVX - Bitmask specifying allowed usage of an object entry
See Also
Constructors
| ObjectEntryUsageFlagBitsNVX Flags |
Bundled Patterns
| 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
Constructors
| IndirectCommandsTokenTypeNVX Int32 |
Bundled Patterns
Instances
newtype ObjectEntryTypeNVX Source #
VkObjectEntryTypeNVX - Enum specifying object table entry type
See Also
ObjectTableCreateInfoNVX, ObjectTableDescriptorSetEntryNVX,
ObjectTableEntryNVX, ObjectTableIndexBufferEntryNVX,
ObjectTablePipelineEntryNVX, ObjectTablePushConstantEntryNVX,
ObjectTableVertexBufferEntryNVX, unregisterObjectsNVX
Constructors
| ObjectEntryTypeNVX Int32 |
Bundled Patterns
| 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
Constructors
| ObjectTableNVX Word64 |
Instances
newtype IndirectCommandsLayoutNVX Source #
VkIndirectCommandsLayoutNVX - Opaque handle to an indirect commands layout object
See Also
CmdProcessCommandsInfoNVX,
CmdReserveSpaceForCommandsInfoNVX,
createIndirectCommandsLayoutNVX,
destroyIndirectCommandsLayoutNVX
Constructors
| IndirectCommandsLayoutNVX Word64 |