VkComputePipelineIndirectBufferInfoNV
The VkComputePipelineIndirectBufferInfoNV
structure is defined as:
typedef struct VkComputePipelineIndirectBufferInfoNV {
VkStructureType sType;
const void* pNext;
VkDeviceAddress deviceAddress;
VkDeviceSize size;
VkDeviceAddress pipelineDeviceAddressCaptureReplay;
} VkComputePipelineIndirectBufferInfoNV;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
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-populatedeviceAddress
for replay.
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