Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_NV_device_generated_commands_compute - device extension
VK_NV_device_generated_commands_compute
- Name String
VK_NV_device_generated_commands_compute
- Extension Type
- Device extension
- Registered Extension Number
- 429
- Revision
- 2
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_NV_device_generated_commands
- Contact
Other Extension Metadata
- Last Modified Date
- 2023-07-21
- Contributors
- Vikram Kushwaha, NVIDIA
- Jeff Bolz, NVIDIA
- Christoph Kubisch, NVIDIA
- Piers Daniell, NVIDIA
- Daniel Koch, NVIDIA
- Hans-Kristian Arntzen, Valve
- Mike Blumenkrantz, VALVE
Description
This extension allows the device to generate commands for binding compute pipelines, setting push constants and launching compute dispatches.
New Commands
New Structures
ComputePipelineIndirectBufferInfoNV
PipelineIndirectDeviceAddressInfoNV
Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:
New Enum Constants
NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION
Extending
DescriptorSetLayoutCreateFlagBits
:Extending
IndirectCommandsTokenTypeNV
:Extending
StructureType
:
Version History
Revision 2, 2023-07-21 (Vikram Kushwaha)
- Rename vkCmdUpdatePipelineIndirectBuffer to vkCmdUpdatePipelineIndirectBufferNV
Revision 1, 2023-06-09 (Vikram Kushwaha)
- First Revision
See Also
BindPipelineIndirectCommandNV
, ComputePipelineIndirectBufferInfoNV
,
PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
,
PipelineIndirectDeviceAddressInfoNV
,
cmdUpdatePipelineIndirectBufferNV
,
getPipelineIndirectDeviceAddressNV
,
getPipelineIndirectMemoryRequirementsNV
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- cmdUpdatePipelineIndirectBufferNV :: forall io. MonadIO io => CommandBuffer -> PipelineBindPoint -> Pipeline -> io ()
- getPipelineIndirectMemoryRequirementsNV :: forall a b io. (Extendss ComputePipelineCreateInfo a, PokeChain a, Extendss MemoryRequirements2 b, PokeChain b, PeekChain b, MonadIO io) => Device -> ComputePipelineCreateInfo a -> io (MemoryRequirements2 b)
- getPipelineIndirectDeviceAddressNV :: forall io. MonadIO io => Device -> PipelineIndirectDeviceAddressInfoNV -> io DeviceAddress
- data ComputePipelineIndirectBufferInfoNV = ComputePipelineIndirectBufferInfoNV {}
- data PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
- data PipelineIndirectDeviceAddressInfoNV = PipelineIndirectDeviceAddressInfoNV {}
- data BindPipelineIndirectCommandNV = BindPipelineIndirectCommandNV {}
- type NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION = 2
- pattern NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION :: forall a. Integral a => a
- type NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute"
- pattern NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype IndirectCommandsTokenTypeNV where
- IndirectCommandsTokenTypeNV Int32
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV :: IndirectCommandsTokenTypeNV
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV :: IndirectCommandsTokenTypeNV
Documentation
cmdUpdatePipelineIndirectBufferNV Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> PipelineBindPoint |
|
-> Pipeline |
|
-> io () |
vkCmdUpdatePipelineIndirectBufferNV - Update the indirect compute pipeline’s metadata
Description
cmdUpdatePipelineIndirectBufferNV
is only allowed outside of a render
pass. This command is treated as a “transfer” operation for the purposes
of synchronization barriers. The writes to the address must be
synchronized using stages
PIPELINE_STAGE_2_COPY_BIT
and
PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
and with access masks
ACCESS_MEMORY_WRITE_BIT
and
ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
respectively before using the results in preprocessing.
Valid Usage
-
pipelineBindPoint
must bePIPELINE_BIND_POINT_COMPUTE
-
pipeline
must have been created withPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
flag set -
pipeline
must have been created withComputePipelineIndirectBufferInfoNV
structure specifying a valid address where its metadata will be saved - The ::deviceGeneratedComputePipelines feature must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pipelineBindPoint
must be a validPipelineBindPoint
value -
pipeline
must be a validPipeline
handle -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support transfer, graphics, or compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
- Both of
commandBuffer
, andpipeline
must have been created, allocated, or retrieved from the sameDevice
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 | Video Coding Scope | Supported Queue Types | Command Type |
---|---|---|---|---|
Primary Secondary | Outside | Outside | Transfer Graphics Compute | Action |
See Also
VK_NV_device_generated_commands_compute,
CommandBuffer
, Pipeline
,
PipelineBindPoint
getPipelineIndirectMemoryRequirementsNV Source #
:: forall a b io. (Extendss ComputePipelineCreateInfo a, PokeChain a, Extendss MemoryRequirements2 b, PokeChain b, PeekChain b, MonadIO io) | |
=> Device |
|
-> ComputePipelineCreateInfo a |
|
-> io (MemoryRequirements2 b) |
vkGetPipelineIndirectMemoryRequirementsNV - Get the memory requirements for the compute indirect pipeline
Description
If pCreateInfo
::pNext
chain includes a pointer to a
ComputePipelineIndirectBufferInfoNV
structure, then the contents of
that structure are ignored.
Valid Usage
- The ::deviceGeneratedComputePipelines feature must be enabled
-
pCreateInfo
::flags
must includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
Valid Usage (Implicit)
-
device
must be a validDevice
handle
-
pCreateInfo
must be a valid pointer to a validComputePipelineCreateInfo
structure -
pMemoryRequirements
must be a valid pointer to aMemoryRequirements2
structure
See Also
VK_NV_device_generated_commands_compute,
ComputePipelineCreateInfo
,
Device
,
MemoryRequirements2
getPipelineIndirectDeviceAddressNV Source #
:: forall io. MonadIO io | |
=> Device | |
-> PipelineIndirectDeviceAddressInfoNV | |
-> io DeviceAddress |
vkGetPipelineIndirectDeviceAddressNV - Get pipeline’s 64-bit device address
Valid Usage
- The ::deviceGeneratedComputePipelines feature must be enabled
Valid Usage (Implicit)
See Also
VK_NV_device_generated_commands_compute,
Device
, PipelineIndirectDeviceAddressInfoNV
data ComputePipelineIndirectBufferInfoNV Source #
VkComputePipelineIndirectBufferInfoNV - Structure describing the device address where pipeline’s metadata will be saved
Members
If pipelineDeviceAddressCaptureReplay
is zero, no specific address is
requested. If pipelineDeviceAddressCaptureReplay
is not zero, then it
must be an address retrieved from an identically created pipeline on
the same implementation. The pipeline metadata must also be placed on
an identically created buffer and at the same offset using the
cmdUpdatePipelineIndirectBufferNV
command.
Valid Usage
- The ::deviceGeneratedComputePipelines feature must be enabled
- The
pipeline creation flags in
ComputePipelineCreateInfo
::flags
must includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
-
deviceAddress
must be aligned to theMemoryRequirements2
::alignment
, as returned bygetPipelineIndirectMemoryRequirementsNV
-
deviceAddress
must have been allocated from a buffer that was created with usageBUFFER_USAGE_TRANSFER_DST_BIT
andBUFFER_USAGE_INDIRECT_BUFFER_BIT
-
size
must be greater than or equal to theMemoryRequirements2
::size
, as returned bygetPipelineIndirectMemoryRequirementsNV
-
If
pipelineDeviceAddressCaptureReplay
is non-zero then the ::deviceGeneratedComputeCaptureReplay feature must be enabled -
If
pipelineDeviceAddressCaptureReplay
is non-zero then that address must have been allocated with flagMEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
set -
If
pipelineDeviceAddressCaptureReplay
is non-zero, thepipeline
must have been recreated for replay -
pipelineDeviceAddressCaptureReplay
must satisfy thealignment
andsize
requirements similar todeviceAddress
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
See Also
VK_NV_device_generated_commands_compute,
DeviceAddress
,
DeviceSize
,
StructureType
Instances
data PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV Source #
VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV - Structure describing the device-generated compute features that can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
structure is included in the pNext
chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2
,
it is filled in to indicate whether each corresponding feature is
supported. PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
can also be used in the pNext
chain of
DeviceCreateInfo
to selectively enable these
features.
Valid Usage (Implicit)
See Also
VK_NV_device_generated_commands_compute,
Bool32
,
StructureType
PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV | |
|
Instances
data PipelineIndirectDeviceAddressInfoNV Source #
VkPipelineIndirectDeviceAddressInfoNV - Structure specifying the pipeline to query an address for
Valid Usage
-
The provided
pipelineBindPoint
must be of typePIPELINE_BIND_POINT_COMPUTE
-
pipeline
must have been created with flagPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
set -
pipeline
must have been created with aComputePipelineIndirectBufferInfoNV
structure specifying a valid address where its metadata will be saved
Valid Usage (Implicit)
See Also
VK_NV_device_generated_commands_compute,
Pipeline
,
PipelineBindPoint
,
StructureType
,
getPipelineIndirectDeviceAddressNV
PipelineIndirectDeviceAddressInfoNV | |
|
Instances
data BindPipelineIndirectCommandNV Source #
VkBindPipelineIndirectCommandNV - Structure specifying input data for the compute pipeline dispatch token
Valid Usage
- The ::deviceGeneratedComputePipelines feature must be enabled
- The referenced
pipeline must have been created with
PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
- The referenced
pipeline must have been updated with
cmdUpdatePipelineIndirectBufferNV
- The referenced
pipeline’s address must have been queried with
getPipelineIndirectDeviceAddressNV
See Also
BindPipelineIndirectCommandNV | |
|
Instances
pattern NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME = "VK_NV_device_generated_commands_compute" Source #
pattern NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
newtype IndirectCommandsTokenTypeNV Source #
VkIndirectCommandsTokenTypeNV - Enum specifying token commands
Description
'
Supported indirect command tokens
See Also
VK_NV_device_generated_commands,
IndirectCommandsLayoutTokenNV