Class NVDeviceGeneratedCommandsCompute
- Name String
VK_NV_device_generated_commands_compute- Extension Type
- Device extension
- Registered Extension Number
- 429
- Revision
- 2
- Extension and Version Dependencies
VK_NV_device_generated_commands- Contact
- Vikram Kushwaha vkushwaha-nv
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
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intExtendsVkDescriptorSetLayoutCreateFlagBits.static final intExtendsVkIndirectCommandsTokenTypeNV.static final intExtendsVkIndirectCommandsTokenTypeNV.static final StringThe extension name.static final intThe extension specification version.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType. -
Method Summary
Modifier and TypeMethodDescriptionstatic longnvkGetPipelineIndirectDeviceAddressNV(org.lwjgl.vulkan.VkDevice device, long pInfo) Unsafe version of:GetPipelineIndirectDeviceAddressNVstatic voidnvkGetPipelineIndirectMemoryRequirementsNV(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pMemoryRequirements) Unsafe version of:GetPipelineIndirectMemoryRequirementsNVstatic voidvkCmdUpdatePipelineIndirectBufferNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, int pipelineBindPoint, long pipeline) Update the indirect compute pipeline’s metadata.static longvkGetPipelineIndirectDeviceAddressNV(org.lwjgl.vulkan.VkDevice device, VkPipelineIndirectDeviceAddressInfoNV pInfo) Get pipeline’s 64-bit device address.static voidvkGetPipelineIndirectMemoryRequirementsNV(org.lwjgl.vulkan.VkDevice device, VkComputePipelineCreateInfo pCreateInfo, VkMemoryRequirements2 pMemoryRequirements) Get the memory requirements for the compute indirect pipeline.
-
Field Details
-
VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION
public static final int VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME
The extension name.- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NVExtendsVkStructureType.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
public static final int VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NVExtendsVkStructureType.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
public static final int VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NVExtendsVkStructureType.Enum values:
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVExtendsVkIndirectCommandsTokenTypeNV.Enum values:
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVExtendsVkIndirectCommandsTokenTypeNV.Enum values:
- See Also:
-
VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV
public static final int VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NVExtendsVkDescriptorSetLayoutCreateFlagBits.- See Also:
-
-
Method Details
-
nvkGetPipelineIndirectMemoryRequirementsNV
public static void nvkGetPipelineIndirectMemoryRequirementsNV(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pMemoryRequirements) Unsafe version of:GetPipelineIndirectMemoryRequirementsNV -
vkGetPipelineIndirectMemoryRequirementsNV
public static void vkGetPipelineIndirectMemoryRequirementsNV(org.lwjgl.vulkan.VkDevice device, VkComputePipelineCreateInfo pCreateInfo, VkMemoryRequirements2 pMemoryRequirements) Get the memory requirements for the compute indirect pipeline.C Specification
To determine the memory requirements for a compute pipeline’s metadata, call:
void vkGetPipelineIndirectMemoryRequirementsNV( VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkMemoryRequirements2* pMemoryRequirements);Description
If
pCreateInfo→pNextchain includes a pointer to aVkComputePipelineIndirectBufferInfoNVstructure, then the contents of that structure are ignored.Valid Usage
- The
VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV::deviceGeneratedComputePipelinesfeature must be enabled pCreateInfo→flagsmust includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
Valid Usage (Implicit)
devicemust be a validVkDevicehandlepCreateInfomust be a valid pointer to a validVkComputePipelineCreateInfostructurepMemoryRequirementsmust be a valid pointer to aVkMemoryRequirements2structure
See Also
- Parameters:
device- the logical device that owns the buffer.pCreateInfo- aVkComputePipelineCreateInfostructure specifying the creation parameters of the compute pipeline whose memory requirements are being queried.pMemoryRequirements- a pointer to aVkMemoryRequirements2structure in which the requested pipeline’s memory requirements are returned.
- The
-
vkCmdUpdatePipelineIndirectBufferNV
public static void vkCmdUpdatePipelineIndirectBufferNV(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, int pipelineBindPoint, long pipeline) Update the indirect compute pipeline’s metadata.C Specification
To save a compute pipeline’s metadata at a device address call:
void vkCmdUpdatePipelineIndirectBufferNV( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);Description
vkCmdUpdatePipelineIndirectBufferNVis 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 stagesPIPELINE_STAGE_2_COPY_BITandPIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NVand with access masksACCESS_MEMORY_WRITE_BITandACCESS_COMMAND_PREPROCESS_READ_BIT_NVrespectively before using the results in preprocessing.Valid Usage
pipelineBindPointmust bePIPELINE_BIND_POINT_COMPUTEpipelinemust have been created withPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NVflag setpipelinemust have been created withVkComputePipelineIndirectBufferInfoNVstructure specifying a valid address where its metadata will be saved- The
VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV::deviceGeneratedComputePipelinesfeature must be enabled
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandlepipelineBindPointmust be a validVkPipelineBindPointvaluepipelinemust be a validVkPipelinehandlecommandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas 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, andpipelinemust have been created, allocated, or retrieved from the sameVkDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas 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 - Parameters:
commandBuffer- the command buffer into which the command will be recorded.pipelineBindPoint- aVkPipelineBindPointvalue specifying the type of pipeline whose metadata will be saved.pipeline- the pipeline whose metadata will be saved.
-
nvkGetPipelineIndirectDeviceAddressNV
public static long nvkGetPipelineIndirectDeviceAddressNV(org.lwjgl.vulkan.VkDevice device, long pInfo) Unsafe version of:GetPipelineIndirectDeviceAddressNV -
vkGetPipelineIndirectDeviceAddressNV
public static long vkGetPipelineIndirectDeviceAddressNV(org.lwjgl.vulkan.VkDevice device, VkPipelineIndirectDeviceAddressInfoNV pInfo) Get pipeline’s 64-bit device address.C Specification
To query a compute pipeline’s 64-bit device address, call:
VkDeviceAddress vkGetPipelineIndirectDeviceAddressNV( VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo);Valid Usage
- The
VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV::deviceGeneratedComputePipelinesfeature must be enabled
Valid Usage (Implicit)
devicemust be a validVkDevicehandlepInfomust be a valid pointer to a validVkPipelineIndirectDeviceAddressInfoNVstructure
See Also
- Parameters:
device- the logical device on which the pipeline was created.pInfo- a pointer to aVkPipelineIndirectDeviceAddressInfoNVstructure specifying the pipeline to retrieve the address for.
- The
-