# VkComputePipelineIndirectBufferInfoNV(3) Manual Page

## Name

VkComputePipelineIndirectBufferInfoNV - Structure describing the device address where pipeline's metadata will be saved

Loading… please wait.

## C Specification

The `VkComputePipelineIndirectBufferInfoNV` structure is defined as:

    // Provided by VK_NV_device_generated_commands_compute
    typedef struct VkComputePipelineIndirectBufferInfoNV {
        VkStructureType    sType;
        const void*        pNext;
        VkDeviceAddress    deviceAddress;
        VkDeviceSize       size;
        VkDeviceAddress    pipelineDeviceAddressCaptureReplay;
    } VkComputePipelineIndirectBufferInfoNV;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `deviceAddress` is the address where the pipeline’s metadata will be stored.

- `size` is the size of pipeline’s metadata that was queried using vkGetPipelineIndirectMemoryRequirementsNV.

- `pipelineDeviceAddressCaptureReplay` is the device address where pipeline’s metadata was originally saved and can now be used to re-populate `deviceAddress` for replay.

## Description

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 vkCmdUpdatePipelineIndirectBufferNV command.

Valid Usage

- VUID-VkComputePipelineIndirectBufferInfoNV-deviceGeneratedComputePipelines-09009
  The `VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV`::`deviceGeneratedComputePipelines` feature must be enabled

- VUID-VkComputePipelineIndirectBufferInfoNV-flags-09010
  The pipeline creation flags in VkComputePipelineCreateInfo::`flags` must include `VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV`

- VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09011
  `deviceAddress` must be aligned to the VkMemoryRequirements2::`alignment`, as returned by vkGetPipelineIndirectMemoryRequirementsNV

- VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09012
  `deviceAddress` must have been allocated from a buffer that was created with usage `VK_BUFFER_USAGE_TRANSFER_DST_BIT` and `VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT`

- VUID-VkComputePipelineIndirectBufferInfoNV-size-09013
  `size` must be greater than or equal to the VkMemoryRequirements2::`size`, as returned by vkGetPipelineIndirectMemoryRequirementsNV

- VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09014
  If `pipelineDeviceAddressCaptureReplay` is non-zero then the `VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV`::`deviceGeneratedComputeCaptureReplay` feature must be enabled

- VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09015
  If `pipelineDeviceAddressCaptureReplay` is non-zero then that address must have been allocated with flag `VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT` set

- VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09016
  If `pipelineDeviceAddressCaptureReplay` is non-zero, the `pipeline` must have been recreated for replay

- VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09017
  `pipelineDeviceAddressCaptureReplay` must satisfy the `alignment` and `size` requirements similar to `deviceAddress`

Valid Usage (Implicit)

- VUID-VkComputePipelineIndirectBufferInfoNV-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV`

## See Also

VK_NV_device_generated_commands_compute, VkDeviceAddress, VkDeviceSize, VkStructureType

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0