Function Prototype

vkCmdUpdatePipelineIndirectBufferNV

Update the indirect compute pipeline's metadata
primary / secondary
outside
transfer / graphics / compute
action

To save a compute pipeline’s metadata at a device address call:

void vkCmdUpdatePipelineIndirectBufferNV(
    VkCommandBuffer commandBuffer,
    VkPipelineBindPoint           pipelineBindPoint,
    VkPipeline                    pipeline);
  • commandBuffer is the command buffer into which the command will be recorded.
  • pipelineBindPoint is a VkPipelineBindPoint value specifying the type of pipeline whose metadata will be saved.
  • pipeline is the pipeline whose metadata will be saved.

vkCmdUpdatePipelineIndirectBufferNV 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 VK_PIPELINE_STAGE_2_COPY_BIT and VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV and with access masks VK_ACCESS_MEMORY_WRITE_BIT and VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV respectively before using the results in preprocessing.

Valid Usage

VUID-vkCmdUpdatePipelineIndirectBufferNV-pipelineBindPoint-09018

pipelineBindPoint must be VK_PIPELINE_BIND_POINT_COMPUTE

VUID-vkCmdUpdatePipelineIndirectBufferNV-pipeline-09019

pipeline must have been created with VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV flag set

VUID-vkCmdUpdatePipelineIndirectBufferNV-pipeline-09020

pipeline must have been created with VkComputePipelineIndirectBufferInfoNV structure specifying a valid address where its metadata will be saved

Valid Usage (Implicit)

VUID-vkCmdUpdatePipelineIndirectBufferNV-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations

VUID-vkCmdUpdatePipelineIndirectBufferNV-renderpass

This command must only be called outside of a render pass instance

VUID-vkCmdUpdatePipelineIndirectBufferNV-videocoding

This command must only be called outside of a video coding scope

VUID-vkCmdUpdatePipelineIndirectBufferNV-commonparent

Both of commandBuffer, and pipeline must have been created, allocated, or retrieved from the same VkDevice

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized ::