| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_AMDX_shader_enqueue
Description
Name
VK_AMDX_shader_enqueue - device extension
VK_AMDX_shader_enqueue
- Name String
VK_AMDX_shader_enqueue
- Extension Type
- Device extension
- Registered Extension Number
- 135
- Revision
- 2
- Ratification Status
- Not ratified
- Extension and Version Dependencies
VK_KHR_spirv_1_4 and
VK_EXT_extended_dynamic_state or
Vulkan Version 1.3 and VK_KHR_maintenance5 and VK_KHR_pipeline_library
- __This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.__
- API Interactions
- Interacts with VK_VERSION_1_4
- Interacts with VK_EXT_mesh_shader
- Interacts with VK_KHR_maintenance5
- Contact
- Extension Proposal
- VK_AMDX_shader_enqueue
Other Extension Metadata
- Last Modified Date
- 2024-07-17
- Provisional
- __This extension is provisional and should not be used in production applications. The functionality may change in ways that break backwards compatibility between revisions, and before final release.__
- Contributors
- Tobias Hector, AMD
- Matthaeus Chajdas, AMD
- Maciej Jesionowski, AMD
- Robert Martin, AMD
- Qun Lin, AMD
- Rex Xu, AMD
- Dominik Witczak, AMD
- Karthik Srinivasan, AMD
- Nicolai Haehnle, AMD
- Stuart Smith, AMD
Description
This extension adds the ability for developers to enqueue mesh and compute shader workgroups from other compute shaders.
New Commands
cmdDispatchGraphIndirectAMDXcmdDispatchGraphIndirectCountAMDXcmdInitializeGraphScratchMemoryAMDXcreateExecutionGraphPipelinesAMDXgetExecutionGraphPipelineNodeIndexAMDXgetExecutionGraphPipelineScratchSizeAMDX
New Structures
DispatchGraphInfoAMDXExecutionGraphPipelineCreateInfoAMDXExecutionGraphPipelineScratchSizeAMDXExtending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:Extending
PipelineShaderStageCreateInfo:
New Unions
New Enum Constants
AMDX_SHADER_ENQUEUE_SPEC_VERSIONSHADER_INDEX_UNUSED_AMDXExtending
BufferUsageFlagBits:Extending
PipelineBindPoint:Extending
StructureType:
If VK_KHR_maintenance5 or Vulkan Version 1.4 is supported:
Extending
BufferUsageFlagBits2:Extending
PipelineCreateFlagBits2:
Version History
Revision 2, 2024-07-17 (Tobias Hector)
- Add mesh nodes
Revision 1, 2021-07-22 (Tobias Hector)
- Initial revision
See Also
No cross-references are available
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
- getExecutionGraphPipelineScratchSizeAMDX :: MonadIO io => Device -> ("executionGraph" ::: Pipeline) -> io ("sizeInfo" ::: ExecutionGraphPipelineScratchSizeAMDX)
- getExecutionGraphPipelineNodeIndexAMDX :: MonadIO io => Device -> ("executionGraph" ::: Pipeline) -> ("nodeInfo" ::: PipelineShaderStageNodeCreateInfoAMDX) -> io ("nodeIndex" ::: Word32)
- createExecutionGraphPipelinesAMDX :: MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct ExecutionGraphPipelineCreateInfoAMDX)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- cmdInitializeGraphScratchMemoryAMDX :: MonadIO io => CommandBuffer -> ("executionGraph" ::: Pipeline) -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> io ()
- cmdDispatchGraphAMDX :: MonadIO io => CommandBuffer -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> DispatchGraphCountInfoAMDX -> io ()
- cmdDispatchGraphIndirectAMDX :: MonadIO io => CommandBuffer -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> DispatchGraphCountInfoAMDX -> io ()
- cmdDispatchGraphIndirectCountAMDX :: MonadIO io => CommandBuffer -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> ("countInfo" ::: DeviceAddress) -> io ()
- data PhysicalDeviceShaderEnqueuePropertiesAMDX = PhysicalDeviceShaderEnqueuePropertiesAMDX {
- maxExecutionGraphDepth :: Word32
- maxExecutionGraphShaderOutputNodes :: Word32
- maxExecutionGraphShaderPayloadSize :: Word32
- maxExecutionGraphShaderPayloadCount :: Word32
- executionGraphDispatchAddressAlignment :: Word32
- maxExecutionGraphWorkgroupCount :: (Word32, Word32, Word32)
- maxExecutionGraphWorkgroups :: Word32
- data PhysicalDeviceShaderEnqueueFeaturesAMDX = PhysicalDeviceShaderEnqueueFeaturesAMDX {}
- data ExecutionGraphPipelineCreateInfoAMDX (es :: [Type]) = ExecutionGraphPipelineCreateInfoAMDX {}
- data PipelineShaderStageNodeCreateInfoAMDX = PipelineShaderStageNodeCreateInfoAMDX {
- name :: Maybe ByteString
- index :: Word32
- data ExecutionGraphPipelineScratchSizeAMDX = ExecutionGraphPipelineScratchSizeAMDX {}
- data DispatchGraphInfoAMDX = DispatchGraphInfoAMDX {}
- data DispatchGraphCountInfoAMDX = DispatchGraphCountInfoAMDX {}
- data DeviceOrHostAddressConstAMDX
- type AMDX_SHADER_ENQUEUE_SPEC_VERSION = 2
- pattern AMDX_SHADER_ENQUEUE_SPEC_VERSION :: Integral a => a
- type AMDX_SHADER_ENQUEUE_EXTENSION_NAME = "VK_AMDX_shader_enqueue"
- pattern AMDX_SHADER_ENQUEUE_EXTENSION_NAME :: (Eq a, IsString a) => a
- data PipelineLibraryCreateInfoKHR = PipelineLibraryCreateInfoKHR {}
- type SHADER_INDEX_UNUSED_AMDX = 4294967295
- pattern SHADER_INDEX_UNUSED_AMDX :: Word32
Documentation
getExecutionGraphPipelineScratchSizeAMDX Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ("executionGraph" ::: Pipeline) |
|
| -> io ("sizeInfo" ::: ExecutionGraphPipelineScratchSizeAMDX) |
vkGetExecutionGraphPipelineScratchSizeAMDX - Query scratch space required to dispatch an execution graph
Description
After this function returns, information about the scratch space
required will be returned in pSizeInfo.
Return Codes
See Also
VK_AMDX_shader_enqueue,
Device, ExecutionGraphPipelineScratchSizeAMDX,
Pipeline
getExecutionGraphPipelineNodeIndexAMDX Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ("executionGraph" ::: Pipeline) |
|
| -> ("nodeInfo" ::: PipelineShaderStageNodeCreateInfoAMDX) |
|
| -> io ("nodeIndex" ::: Word32) |
vkGetExecutionGraphPipelineNodeIndexAMDX - Query internal id of a node in an execution graph
Description
Once this function returns, the contents of pNodeIndex contain the
internal node index of the identified node.
Valid Usage
-
pNodeInfo->indexmust not beSHADER_INDEX_UNUSED_AMDX -
There must be a node in
executionGraphwith a shader name and index equal topNodeInfo->pNameandpNodeInfo->index
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
executionGraphmust be a validPipelinehandle -
pNodeInfomust be a valid pointer to a validPipelineShaderStageNodeCreateInfoAMDXstructure -
pNodeIndexmust be a valid pointer to auint32_tvalue -
executionGraphmust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
VK_AMDX_shader_enqueue,
Device, Pipeline,
PipelineShaderStageNodeCreateInfoAMDX
createExecutionGraphPipelinesAMDX Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> PipelineCache |
|
| -> ("createInfos" ::: Vector (SomeStruct ExecutionGraphPipelineCreateInfoAMDX)) |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io (Result, "pipelines" ::: Vector Pipeline) |
vkCreateExecutionGraphPipelinesAMDX - Creates a new execution graph pipeline object
Description
Pipelines are created and returned as described for Multiple Pipeline Creation.
Valid Usage
- The shaderEnqueue feature must be enabled
- If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, and thebasePipelineIndexmember of that same element is not-1,basePipelineIndexmust be less than the index intopCreateInfosthat corresponds to that element - If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, the base pipeline must have been created with thePIPELINE_CREATE_ALLOW_DERIVATIVES_BITflag set - If
pipelineCachewas created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, host access topipelineCachemust be externally synchronized - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,pipelineCachemust beNULL_HANDLE - If a
PipelineCreateFlags2CreateInfoKHRstructure with thePIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHRflag set is included in thepNextchain of any element ofpCreateInfos,pipelineCachemust beNULL_HANDLE - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BITmust not be set in theflagsof that element - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BITmust not be set in theflagsof that element - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXTmust not be set in theflagsof that element - If any
element of
pCreateInfossetsPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTand includes embedded sampler mappings, there must be less than (maxSamplerAllocationCount - (minSamplerHeapReservedRangeWithEmbedded
/
samplerDescriptorSize))
Samplerobjects currently created on the device - If any
element of
pCreateInfossetsPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTand includes embedded sampler mappings, this command must not cause the total number of unique embedded samplers in pipelines and shaders on this device to exceed maxDescriptorHeapEmbeddedSamplers
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
If
pipelineCacheis notNULL_HANDLE,pipelineCachemust be a validPipelineCachehandle -
pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidExecutionGraphPipelineCreateInfoAMDXstructures - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pPipelinesmust be a valid pointer to an array ofcreateInfoCountPipelinehandles -
createInfoCountmust be greater than0 - If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
VK_AMDX_shader_enqueue,
AllocationCallbacks,
Device, ExecutionGraphPipelineCreateInfoAMDX,
Pipeline, PipelineCache
cmdInitializeGraphScratchMemoryAMDX Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("executionGraph" ::: Pipeline) |
|
| -> ("scratch" ::: DeviceAddress) |
|
| -> ("scratchSize" ::: DeviceSize) |
|
| -> io () |
vkCmdInitializeGraphScratchMemoryAMDX - Initialize scratch memory for an execution graph
Description
This command must be called before using scratch to dispatch the
bound execution graph pipeline.
Execution of this command may modify any memory locations in the range
[scratch,scratch + scratchSize). Accesses to this memory range are
performed in the
PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
pipeline stage with the
ACCESS_2_SHADER_STORAGE_READ_BIT and
ACCESS_2_SHADER_STORAGE_WRITE_BIT
access flags.
If any portion of scratch is modified by any command other than
cmdDispatchGraphAMDX, cmdDispatchGraphIndirectAMDX,
cmdDispatchGraphIndirectCountAMDX, or
cmdInitializeGraphScratchMemoryAMDX with the same execution graph, it
must be reinitialized for the execution graph again before dispatching
against it.
Valid Usage
-
scratchSizemust be greater than or equal toExecutionGraphPipelineScratchSizeAMDX::minSizereturned bygetExecutionGraphPipelineScratchSizeAMDXfor the bound execution graph pipeline -
scratchmust be a multiple of 64
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
executionGraphmust be a validPipelinehandle -
scratchmust be a validDeviceAddressvalue -
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
-
commandBuffermust be a primaryCommandBuffer - Both of
commandBuffer, andexecutionGraphmust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT | Action |
Conditional Rendering
vkCmdInitializeGraphScratchMemoryAMDX is not affected by conditional rendering
See Also
VK_AMDX_shader_enqueue,
CommandBuffer,
DeviceAddress,
DeviceSize,
Pipeline
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("scratch" ::: DeviceAddress) |
|
| -> ("scratchSize" ::: DeviceSize) |
|
| -> DispatchGraphCountInfoAMDX |
|
| -> io () |
vkCmdDispatchGraphAMDX - Dispatch an execution graph
Description
When this command is executed, the nodes specified in pCountInfo are
executed. Nodes executed as part of this command are not implicitly
synchronized in any way against each other once they are dispatched.
There are no rasterization order guarantees between separately
dispatched graphics nodes, though individual primitives within a single
dispatch do adhere to rasterization order. Draw calls executed before or
after the execution graph also execute relative to each graphics node
with respect to rasterization order.
For this command, all device/host pointers in substructures are treated as host pointers and read only during host execution of this command. Once this command returns, no reference to the original pointers is retained.
Execution of this command may modify any memory locations in the range
[scratch,scratch + scratchSize). Accesses to this memory range are
performed in the
PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
pipeline stage with the
ACCESS_2_SHADER_STORAGE_READ_BIT and
ACCESS_2_SHADER_STORAGE_WRITE_BIT
access flags.
This command captures command buffer state for mesh nodes similarly to draw commands.
Valid Usage
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’slevelCountandlayerCountmust be 1 - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’sviewTypemust beIMAGE_VIEW_TYPE_1DorIMAGE_VIEW_TYPE_2D - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values - If a
ImageViewis sampled with depth comparison, the image view’s format features must containFORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT - If a
ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT - If a
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERdescriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s format features must containFORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT - If a
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - If the
VK_EXT_filter_cubic
extension is not enabled and any
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, it must not have aImageViewTypeofIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE, orIMAGE_VIEW_TYPE_CUBE_ARRAY - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2 - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2 - If the
cubicRangeClamp
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must not have aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM - Any
ImageViewbeing sampled with aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOMas a result of this command must sample withFILTER_CUBIC_EXT - If the
selectableCubicWeights
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must haveSamplerCubicWeightsCreateInfoQCOM::cubicWeightsequal toCUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM - Any
Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - For any
ImageViewbeing written as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - For any
ImageViewbeing read as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - For any
BufferViewbeing written as a storage texel buffer where the image format field of theOpTypeImageisUnknown, the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - Any
BufferViewbeing read as a storage texel buffer where the image format field of theOpTypeImageisUnknownthen the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a set n, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT - For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command
- If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutandPushConstantRangearrays used to create the currentShaderEXT - Descriptors in each bound
descriptor set, specified via
cmdBindDescriptorSets, must be valid if they are accessed as described by descriptor validity by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If an image
descriptor is accessed by a shader, the
ImageLayoutmust match the subresource accessible from theImageViewas defined by the image layout matching rules - If the descriptors used by
the
Pipelinebound to the pipeline bind point were specified viacmdBindDescriptorSets, the boundPipelinemust have been created withoutPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command - If the descriptors used by
the
Pipelinebound to the pipeline bind point were specified viacmdSetDescriptorBufferOffsetsEXT, the boundPipelinemust have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If a descriptor is
dynamically used with a
Pipelinecreated withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If a descriptor is
dynamically used with a
ShaderEXTcreated with aDescriptorSetLayoutthat was created withDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command
- If a pipeline is bound to
the pipeline bind point used by this command, there must not have
been any calls to dynamic state setting commands for any state
specified statically in the
Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound - If any stage of
the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If any stage of
the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
commandBufferis an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource - If a
ImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in ??? - If a
ImageVieworBufferViewis accessed as a result of this command, then the numeric type of the view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
ImageViewcreated with a format other thanFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format - If a
ImageViewcreated with the formatFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have four components - If a
BufferViewis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the buffer view’s format - If a
ImageViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
ImageViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If a
BufferViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
BufferViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If the
sparseImageInt64Atomics
feature is not enabled,
Imageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command - If the
sparseImageInt64Atomics
feature is not enabled,
Bufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command - If
OpImageSampleWeightedQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM - If
OpImageSampleWeightedQCOMuses aImageViewas a sample weight image as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM - If
OpImageBoxFilterQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM - If
OpImageBlockMatchSSDQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If
OpImageBlockMatchSADQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If
OpImageBlockMatchSADQCOMor OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - If
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM - If any
command other than
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must not have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format must be a single-component format - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMread from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - Any shader invocation executed by this command must terminate
- If a descriptor with type
equal to any of
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENTis accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written - The
DeviceMemoryobject allocated from aMemoryHeapwith theMEMORY_HEAP_TILE_MEMORY_BIT_QCOMproperty that is bound to a resource accessed as a result of this command must be the active bound bound tile memory object incommandBuffer - If this command is recorded
inside a
tile shading render pass
instance, the stages corresponding to the pipeline bind point used
by this command must only include
SHADER_STAGE_VERTEX_BIT,SHADER_STAGE_FRAGMENT_BIT, and/orSHADER_STAGE_COMPUTE_BIT - If this command is recorded
where
per-tile execution model
is enabled, there must be no access to any image while the image
was be transitioned to the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTlayout - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the underlyingTensorARMobject must have been created with theTENSOR_USAGE_SHADER_BIT_ARMusage flag set - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then theRankof theOpTypeTensorARMof the tensor resource variable must be equal to thedimensionCountprovided viaTensorCreateInfoARM::pDescriptionwhen creating the underlyingTensorARMobject - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the element type of theOpTypeTensorARMof the tensor resource variable must be compatible with theFormatof theTensorViewARMused for the access - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses aOpTypeStructdecorated withBlockorBufferBlockusing that mapping, the calculated offset for the resource heap must be a multiple of bufferDescriptorAlignment - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeImageorOpTypeSampledImageusing that mapping, the calculated offset for the resource heap must be a multiple of imageDescriptorAlignment - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeSamplerorOpTypeSampledImageusing that mapping, the calculated offset for the sampler heap must be a multiple of samplerDescriptorAlignment - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeTensorARMusing that mapping, the calculated offset for the resource heap must be a multiple of tensorDescriptorAlignment - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 4 - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddress - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 8 - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address pointed to by the address in push data must be a validDeviceAddress - For each descriptor heap that is statically used by a bound shader, either directly or via a descriptor mapping, a valid descriptor heap must be bound
- If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, execution of this command must not result in any descriptor read accessing data outside of the user range of the respective heap bound byvkCmdBind*HeapEXTcommands - If any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer or uniform texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified viaDeviceAddressRangeEXTwhen the descriptor was written - If any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer or storage texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified byDeviceAddressRangeEXTwhen the descriptor was written - If the
robustBufferAccess2
feature is not enabled, the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, uniform texel buffer, storage buffer, or storage texel buffer, that shader must not access values outside of the range of the buffer as specified byDeviceAddressRangeEXTwhen the descriptor was written - If any
bound shader
uses an embedded sampler via a
descriptor mapping,
the value of
pBindInfo->reservedRangeSizeset forcmdBindSamplerHeapEXTmust be greater than or equal to minSamplerHeapReservedRangeWithEmbedded - If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set bycmdPushDataEXT - If a
bound shader
was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the access must not be out of bounds - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the buffer from which the address in push data was queried must have been created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must be aligned to minUniformBufferOffsetAlignment - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_STORAGE_BUFFER_BITusage flag set - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must be aligned to minStorageBufferOffsetAlignment - If a pipeline is bound to
the pipeline bind point used by this command, or shader is bound to
a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses an acceleration structure using that mapping, the address that the acceleration structure is mapped to must be an acceleration structure address retrieved from aAccelerationStructureKHRobject viagetAccelerationStructureDeviceAddressKHRor handle retrieved from aAccelerationStructureNVobject viagetAccelerationStructureHandleNV - If a shader uses a sampler
descriptor to sample an image as a result of this command, and that
sampler descriptor uses a custom border color with an index defined
by
SamplerCustomBorderColorIndexCreateInfoEXT, the value ofSamplerCustomBorderColorIndexCreateInfoEXT::indexmust have been registered before this command was recorded, and still be registered during the sampling operation, with an identically defined color - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, the address that the resource is mapped to must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, the address of the indirect memory must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set -
commandBuffermust not be a protected command buffer -
commandBuffermust be a primary command buffer -
scratchmust be the device address of an allocated memory range at least as large asscratchSize -
scratchSizemust be greater than or equal toExecutionGraphPipelineScratchSizeAMDX::minSizereturned bygetExecutionGraphPipelineScratchSizeAMDXfor the bound execution graph pipeline -
scratchmust be a device address within aBuffercreated with theBUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDXorBUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDXusage flags set - The device memory range
[
scratch,scratchscratchSize] must have been initialized withcmdInitializeGraphScratchMemoryAMDXusing the bound execution graph pipeline, and not modified after that by anything other than another execution graph dispatch command -
Execution of this command must not cause a node to be dispatched
with a larger number of workgroups than that specified by either a
MaxNumWorkgroupsAMDXdecoration in the dispatched node or maxComputeWorkGroupCount - Execution of this command must not cause any shader to initialize more than maxExecutionGraphShaderPayloadCount output payloads
- Execution of
this command must not cause any shader that declares
NodeMaxPayloadsAMDXto initialize more output payloads than specified by the max number of payloads for that decoration. This requirement applies to eachNodeMaxPayloadsAMDXdecoration separately - If the bound execution graph pipeline includes draw nodes, this command must be called within a render pass instance that is compatible with the graphics pipeline used to create each of those nodes
-
pCountInfo->infosmust be a host pointer to a memory allocation at least as large as the product ofcountandstride - Host memory locations at
indexes in the range [
infos,infos+ (count*stride)), at a granularity ofstridemust contain validDispatchGraphInfoAMDXstructures in the first 24 bytes - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos,payloadsmust be a host pointer to a memory allocation at least as large as the product ofpayloadCountandpayloadStride - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos,nodeIndexmust be a valid node index in the bound execution graph pipeline, as returned bygetExecutionGraphPipelineNodeIndexAMDX - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos, host memory locations at indexes in the range [payloads,payloads+ (payloadCount*payloadStride)), at a granularity ofpayloadStridemust contain a payload matching the size of the input payload expected by the node innodeIndexin the first bytes
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
scratchmust be a validDeviceAddressvalue -
pCountInfomust be a valid pointer to a validDispatchGraphCountInfoAMDXstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
-
commandBuffermust be a primaryCommandBuffer
Host Synchronization
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT | Action |
Conditional Rendering
vkCmdDispatchGraphAMDX is affected by conditional rendering
See Also
VK_AMDX_shader_enqueue,
CommandBuffer,
DeviceAddress,
DeviceSize,
DispatchGraphCountInfoAMDX
cmdDispatchGraphIndirectAMDX Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("scratch" ::: DeviceAddress) |
|
| -> ("scratchSize" ::: DeviceSize) |
|
| -> DispatchGraphCountInfoAMDX |
|
| -> io () |
vkCmdDispatchGraphIndirectAMDX - Dispatch an execution graph with node and payload parameters read on the device
Description
When this command is executed, the nodes specified in pCountInfo are
executed. Nodes executed as part of this command are not implicitly
synchronized in any way against each other once they are dispatched.
There are no rasterization order guarantees between separately
dispatched graphics nodes, though individual primitives within a single
dispatch do adhere to rasterization order. Draw calls executed before or
after the execution graph also execute relative to each graphics node
with respect to rasterization order.
For this command, all device/host pointers in substructures are treated
as device pointers and read during device execution of this command. The
allocation and contents of these pointers only needs to be valid during
device execution. All of these addresses will be read in the
PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
pipeline stage with the
ACCESS_2_SHADER_STORAGE_READ_BIT
access flag.
Execution of this command may modify any memory locations in the range
[scratch,scratch + scratchSize). Accesses to this memory range are
performed in the
PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
pipeline stage with the
ACCESS_2_SHADER_STORAGE_READ_BIT and
ACCESS_2_SHADER_STORAGE_WRITE_BIT
access flags.
This command captures command buffer state for mesh nodes similarly to draw commands.
Valid Usage
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT -
If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’slevelCountandlayerCountmust be 1 - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’sviewTypemust beIMAGE_VIEW_TYPE_1DorIMAGE_VIEW_TYPE_2D - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values - If a
ImageViewis sampled with depth comparison, the image view’s format features must containFORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT - If a
ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT - If a
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERdescriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s format features must containFORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT - If a
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - If the
VK_EXT_filter_cubic
extension is not enabled and any
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, it must not have aImageViewTypeofIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE, orIMAGE_VIEW_TYPE_CUBE_ARRAY - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2 - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2 - If the
cubicRangeClamp
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must not have aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM - Any
ImageViewbeing sampled with aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOMas a result of this command must sample withFILTER_CUBIC_EXT -
If the
selectableCubicWeights
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must haveSamplerCubicWeightsCreateInfoQCOM::cubicWeightsequal toCUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM - Any
Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - For any
ImageViewbeing written as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - For any
ImageViewbeing read as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - For any
BufferViewbeing written as a storage texel buffer where the image format field of theOpTypeImageisUnknown, the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - Any
BufferViewbeing read as a storage texel buffer where the image format field of theOpTypeImageisUnknownthen the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a set n, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT - For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command
- If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutandPushConstantRangearrays used to create the currentShaderEXT - Descriptors in each
bound descriptor set, specified via
cmdBindDescriptorSets, must be valid if they are accessed as described by descriptor validity by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If an image
descriptor is accessed by a shader, the
ImageLayoutmust match the subresource accessible from theImageViewas defined by the image layout matching rules - If the descriptors
used by the
Pipelinebound to the pipeline bind point were specified viacmdBindDescriptorSets, the boundPipelinemust have been created withoutPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in
bound descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in
bound descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command - If the descriptors
used by the
Pipelinebound to the pipeline bind point were specified viacmdSetDescriptorBufferOffsetsEXT, the boundPipelinemust have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If a descriptor is
dynamically used with a
Pipelinecreated withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If a descriptor is
dynamically used with a
ShaderEXTcreated with aDescriptorSetLayoutthat was created withDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command
- If a pipeline is
bound to the pipeline bind point used by this command, there must
not have been any calls to dynamic state setting commands for any
state specified statically in the
Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound - If any
stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If any
stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
commandBufferis an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource - If a
ImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in ??? - If a
ImageVieworBufferViewis accessed as a result of this command, then the numeric type of the view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
ImageViewcreated with a format other thanFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format - If a
ImageViewcreated with the formatFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have four components - If a
BufferViewis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the buffer view’s format - If a
ImageViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
ImageViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If a
BufferViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
BufferViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 -
If the
sparseImageInt64Atomics
feature is not enabled,
Imageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command -
If the
sparseImageInt64Atomics
feature is not enabled,
Bufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command -
If
OpImageSampleWeightedQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM -
If
OpImageSampleWeightedQCOMuses aImageViewas a sample weight image as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM - If
OpImageBoxFilterQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM -
If
OpImageBlockMatchSSDQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM -
If
OpImageBlockMatchSADQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM -
If
OpImageBlockMatchSADQCOMor OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation -
If
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM -
If any command other than
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must not have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM -
If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM -
If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format must be a single-component format -
If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMread from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - Any shader invocation executed by this command must terminate
- If a descriptor
with type equal to any of
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENTis accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written - The
DeviceMemoryobject allocated from aMemoryHeapwith theMEMORY_HEAP_TILE_MEMORY_BIT_QCOMproperty that is bound to a resource accessed as a result of this command must be the active bound bound tile memory object incommandBuffer - If this command is
recorded inside a
tile shading render pass
instance, the stages corresponding to the pipeline bind point used
by this command must only include
SHADER_STAGE_VERTEX_BIT,SHADER_STAGE_FRAGMENT_BIT, and/orSHADER_STAGE_COMPUTE_BIT - If this command is
recorded where
per-tile execution model
is enabled, there must be no access to any image while the image
was be transitioned to the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTlayout - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the underlyingTensorARMobject must have been created with theTENSOR_USAGE_SHADER_BIT_ARMusage flag set - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then theRankof theOpTypeTensorARMof the tensor resource variable must be equal to thedimensionCountprovided viaTensorCreateInfoARM::pDescriptionwhen creating the underlyingTensorARMobject - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the element type of theOpTypeTensorARMof the tensor resource variable must be compatible with theFormatof theTensorViewARMused for the access - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses aOpTypeStructdecorated withBlockorBufferBlockusing that mapping, the calculated offset for the resource heap must be a multiple of bufferDescriptorAlignment - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeImageorOpTypeSampledImageusing that mapping, the calculated offset for the resource heap must be a multiple of imageDescriptorAlignment - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeSamplerorOpTypeSampledImageusing that mapping, the calculated offset for the sampler heap must be a multiple of samplerDescriptorAlignment - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeTensorARMusing that mapping, the calculated offset for the resource heap must be a multiple of tensorDescriptorAlignment - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 4 - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddress - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 8 - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address pointed to by the address in push data must be a validDeviceAddress - For each descriptor heap that is statically used by a bound shader, either directly or via a descriptor mapping, a valid descriptor heap must be bound
- If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, execution of this command must not result in any descriptor read accessing data outside of the user range of the respective heap bound byvkCmdBind*HeapEXTcommands - If any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer or uniform texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified viaDeviceAddressRangeEXTwhen the descriptor was written - If any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer or storage texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified byDeviceAddressRangeEXTwhen the descriptor was written - If the
robustBufferAccess2
feature is not enabled, the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, uniform texel buffer, storage buffer, or storage texel buffer, that shader must not access values outside of the range of the buffer as specified byDeviceAddressRangeEXTwhen the descriptor was written - If any
bound shader
uses an embedded sampler via a
descriptor mapping,
the value of
pBindInfo->reservedRangeSizeset forcmdBindSamplerHeapEXTmust be greater than or equal to minSamplerHeapReservedRangeWithEmbedded - If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set bycmdPushDataEXT - If a
bound shader
was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the access must not be out of bounds - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the buffer from which the address in push data was queried must have been created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must be aligned to minUniformBufferOffsetAlignment - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_STORAGE_BUFFER_BITusage flag set - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must be aligned to minStorageBufferOffsetAlignment - If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses an acceleration structure using that mapping, the address that the acceleration structure is mapped to must be an acceleration structure address retrieved from aAccelerationStructureKHRobject viagetAccelerationStructureDeviceAddressKHRor handle retrieved from aAccelerationStructureNVobject viagetAccelerationStructureHandleNV - If a shader uses a
sampler descriptor to sample an image as a result of this command,
and that sampler descriptor uses a custom border color with an index
defined by
SamplerCustomBorderColorIndexCreateInfoEXT, the value ofSamplerCustomBorderColorIndexCreateInfoEXT::indexmust have been registered before this command was recorded, and still be registered during the sampling operation, with an identically defined color - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, the address that the resource is mapped to must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, the address of the indirect memory must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set -
commandBuffermust not be a protected command buffer -
commandBuffermust be a primary command buffer -
scratchmust be the device address of an allocated memory range at least as large asscratchSize -
scratchSizemust be greater than or equal toExecutionGraphPipelineScratchSizeAMDX::minSizereturned bygetExecutionGraphPipelineScratchSizeAMDXfor the bound execution graph pipeline -
scratchmust be a device address within aBuffercreated with theBUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDXorBUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDXusage flags set - The device
memory range [
scratch,scratchscratchSize] must have been initialized withcmdInitializeGraphScratchMemoryAMDXusing the bound execution graph pipeline, and not modified after that by anything other than another execution graph dispatch command -
Execution of this command must not cause a node to be dispatched
with a larger number of workgroups than that specified by either a
MaxNumWorkgroupsAMDXdecoration in the dispatched node or maxComputeWorkGroupCount - Execution of this command must not cause any shader to initialize more than maxExecutionGraphShaderPayloadCount output payloads
-
Execution of this command must not cause any shader that declares
NodeMaxPayloadsAMDXto initialize more output payloads than specified by the max number of payloads for that decoration. This requirement applies to eachNodeMaxPayloadsAMDXdecoration separately - If the bound execution graph pipeline includes draw nodes, this command must be called within a render pass instance that is compatible with the graphics pipeline used to create each of those nodes
-
pCountInfo->infosmust be a device pointer to a memory allocation at least as large as the product ofcountandstridewhen this command is executed on the device -
pCountInfo->infosmust be a device address within aBuffercreated with theBUFFER_USAGE_INDIRECT_BUFFER_BITusage flag set -
pCountInfo->infosmust be a multiple of executionGraphDispatchAddressAlignment - Device memory
locations at indexes in the range [
infos,infos+ (count*stride)), at a granularity ofstridemust contain validDispatchGraphInfoAMDXstructures in the first 24 bytes when this command is executed on the device - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos,payloadsmust be a device pointer to a memory allocation at least as large as the product ofpayloadCountandpayloadStridewhen this command is executed on the device - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos,payloadsmust be a device address within aBuffercreated with theBUFFER_USAGE_INDIRECT_BUFFER_BITusage flag set - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos,payloadsmust be a multiple of executionGraphDispatchAddressAlignment - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos,nodeIndexmust be a valid node index in the bound execution graph pipeline, as returned bygetExecutionGraphPipelineNodeIndexAMDXwhen this command is executed on the device - For each
DispatchGraphInfoAMDXstructure inpCountInfo->infos, device memory locations at indexes in the range [payloads,payloads+ (payloadCount*payloadStride)), at a granularity ofpayloadStridemust contain a payload matching the size of the input payload expected by the node innodeIndexin the first bytes when this command is executed on the device
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
scratchmust be a validDeviceAddressvalue -
pCountInfomust be a valid pointer to a validDispatchGraphCountInfoAMDXstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
-
commandBuffermust be a primaryCommandBuffer
Host Synchronization
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT | Action |
Conditional Rendering
vkCmdDispatchGraphIndirectAMDX is affected by conditional rendering
See Also
VK_AMDX_shader_enqueue,
CommandBuffer,
DeviceAddress,
DeviceSize,
DispatchGraphCountInfoAMDX
cmdDispatchGraphIndirectCountAMDX Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("scratch" ::: DeviceAddress) |
|
| -> ("scratchSize" ::: DeviceSize) |
|
| -> ("countInfo" ::: DeviceAddress) |
|
| -> io () |
vkCmdDispatchGraphIndirectCountAMDX - Dispatch an execution graph with all parameters read on the device
Description
When this command is executed, the nodes specified in countInfo are
executed. Nodes executed as part of this command are not implicitly
synchronized in any way against each other once they are dispatched.
For this command, all pointers in substructures are treated as device
pointers and read during device execution of this command. The
allocation and contents of these pointers only needs to be valid during
device execution. All of these addresses will be read in the
PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
pipeline stage with the
ACCESS_2_SHADER_STORAGE_READ_BIT
access flag.
Execution of this command may modify any memory locations in the range
[scratch,scratch + scratchSize). Accesses to this memory range are
performed in the
PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
pipeline stage with the
ACCESS_2_SHADER_STORAGE_READ_BIT and
ACCESS_2_SHADER_STORAGE_WRITE_BIT
access flags.
Valid Usage
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT -
If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’slevelCountandlayerCountmust be 1 - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’sviewTypemust beIMAGE_VIEW_TYPE_1DorIMAGE_VIEW_TYPE_2D - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values - If a
ImageViewis sampled with depth comparison, the image view’s format features must containFORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT - If a
ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT - If a
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERdescriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s format features must containFORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT - If a
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - If the
VK_EXT_filter_cubic
extension is not enabled and any
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, it must not have aImageViewTypeofIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE, orIMAGE_VIEW_TYPE_CUBE_ARRAY - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2 -
Any
ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2 - If
the
cubicRangeClamp
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must not have aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM - Any
ImageViewbeing sampled with aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOMas a result of this command must sample withFILTER_CUBIC_EXT -
If the
selectableCubicWeights
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must haveSamplerCubicWeightsCreateInfoQCOM::cubicWeightsequal toCUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM - Any
Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - For any
ImageViewbeing written as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - For any
ImageViewbeing read as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - For any
BufferViewbeing written as a storage texel buffer where the image format field of theOpTypeImageisUnknown, the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - Any
BufferViewbeing read as a storage texel buffer where the image format field of theOpTypeImageisUnknownthen the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a set n, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT - For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command
- If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutandPushConstantRangearrays used to create the currentShaderEXT - Descriptors in
each bound descriptor set, specified via
cmdBindDescriptorSets, must be valid if they are accessed as described by descriptor validity by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If an
image descriptor is accessed by a shader, the
ImageLayoutmust match the subresource accessible from theImageViewas defined by the image layout matching rules - If the
descriptors used by the
Pipelinebound to the pipeline bind point were specified viacmdBindDescriptorSets, the boundPipelinemust have been created withoutPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in
bound descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in
bound descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command - If the
descriptors used by the
Pipelinebound to the pipeline bind point were specified viacmdSetDescriptorBufferOffsetsEXT, the boundPipelinemust have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If a
descriptor is dynamically used with a
Pipelinecreated withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If a
descriptor is dynamically used with a
ShaderEXTcreated with aDescriptorSetLayoutthat was created withDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command
- If a pipeline
is bound to the pipeline bind point used by this command, there
must not have been any calls to dynamic state setting commands for
any state specified statically in the
Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound - If
any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
commandBufferis an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource - If a
ImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in ??? - If a
ImageVieworBufferViewis accessed as a result of this command, then the numeric type of the view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
ImageViewcreated with a format other thanFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format - If a
ImageViewcreated with the formatFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have four components - If a
BufferViewis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the buffer view’s format - If a
ImageViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
ImageViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If a
BufferViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
BufferViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 -
If the
sparseImageInt64Atomics
feature is not enabled,
Imageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command -
If the
sparseImageInt64Atomics
feature is not enabled,
Bufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command -
If
OpImageSampleWeightedQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM -
If
OpImageSampleWeightedQCOMuses aImageViewas a sample weight image as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM -
If
OpImageBoxFilterQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM -
If
OpImageBlockMatchSSDQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM -
If
OpImageBlockMatchSADQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM -
If
OpImageBlockMatchSADQCOMor OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation -
If
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM -
If any command other than
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must not have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM -
If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM -
If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format must be a single-component format -
If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMread from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - Any shader invocation executed by this command must terminate
- If a
descriptor with type equal to any of
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENTis accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written - The
DeviceMemoryobject allocated from aMemoryHeapwith theMEMORY_HEAP_TILE_MEMORY_BIT_QCOMproperty that is bound to a resource accessed as a result of this command must be the active bound bound tile memory object incommandBuffer - If this
command is recorded inside a
tile shading render pass
instance, the stages corresponding to the pipeline bind point used
by this command must only include
SHADER_STAGE_VERTEX_BIT,SHADER_STAGE_FRAGMENT_BIT, and/orSHADER_STAGE_COMPUTE_BIT - If this
command is recorded where
per-tile execution model
is enabled, there must be no access to any image while the image
was be transitioned to the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTlayout - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the underlyingTensorARMobject must have been created with theTENSOR_USAGE_SHADER_BIT_ARMusage flag set - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then theRankof theOpTypeTensorARMof the tensor resource variable must be equal to thedimensionCountprovided viaTensorCreateInfoARM::pDescriptionwhen creating the underlyingTensorARMobject - If
a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the element type of theOpTypeTensorARMof the tensor resource variable must be compatible with theFormatof theTensorViewARMused for the access - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses aOpTypeStructdecorated withBlockorBufferBlockusing that mapping, the calculated offset for the resource heap must be a multiple of bufferDescriptorAlignment - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeImageorOpTypeSampledImageusing that mapping, the calculated offset for the resource heap must be a multiple of imageDescriptorAlignment - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeSamplerorOpTypeSampledImageusing that mapping, the calculated offset for the sampler heap must be a multiple of samplerDescriptorAlignment - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeTensorARMusing that mapping, the calculated offset for the resource heap must be a multiple of tensorDescriptorAlignment - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 4 - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddress - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 8 - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address pointed to by the address in push data must be a validDeviceAddress - For each descriptor heap that is statically used by a bound shader, either directly or via a descriptor mapping, a valid descriptor heap must be bound
- If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, execution of this command must not result in any descriptor read accessing data outside of the user range of the respective heap bound byvkCmdBind*HeapEXTcommands - If any stage
of the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer or uniform texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified viaDeviceAddressRangeEXTwhen the descriptor was written - If any stage
of the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer or storage texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified byDeviceAddressRangeEXTwhen the descriptor was written - If the
robustBufferAccess2
feature is not enabled, the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, uniform texel buffer, storage buffer, or storage texel buffer, that shader must not access values outside of the range of the buffer as specified byDeviceAddressRangeEXTwhen the descriptor was written - If any
bound shader
uses an embedded sampler via a
descriptor mapping,
the value of
pBindInfo->reservedRangeSizeset forcmdBindSamplerHeapEXTmust be greater than or equal to minSamplerHeapReservedRangeWithEmbedded - If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set bycmdPushDataEXT - If a
bound shader
was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the access must not be out of bounds - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the buffer from which the address in push data was queried must have been created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must be aligned to minUniformBufferOffsetAlignment - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_STORAGE_BUFFER_BITusage flag set - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must be aligned to minStorageBufferOffsetAlignment - If a pipeline
is bound to the pipeline bind point used by this command, or shader
is bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses an acceleration structure using that mapping, the address that the acceleration structure is mapped to must be an acceleration structure address retrieved from aAccelerationStructureKHRobject viagetAccelerationStructureDeviceAddressKHRor handle retrieved from aAccelerationStructureNVobject viagetAccelerationStructureHandleNV - If a shader
uses a sampler descriptor to sample an image as a result of this
command, and that sampler descriptor uses a custom border color with
an index defined by
SamplerCustomBorderColorIndexCreateInfoEXT, the value ofSamplerCustomBorderColorIndexCreateInfoEXT::indexmust have been registered before this command was recorded, and still be registered during the sampling operation, with an identically defined color - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, the address that the resource is mapped to must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, the address of the indirect memory must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set -
commandBuffermust not be a protected command buffer -
commandBuffermust be a primary command buffer -
scratchmust be the device address of an allocated memory range at least as large asscratchSize -
scratchSizemust be greater than or equal toExecutionGraphPipelineScratchSizeAMDX::minSizereturned bygetExecutionGraphPipelineScratchSizeAMDXfor the bound execution graph pipeline -
scratchmust be a device address within aBuffercreated with theBUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDXorBUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDXusage flags set - The device
memory range [
scratch,scratchscratchSize] must have been initialized withcmdInitializeGraphScratchMemoryAMDXusing the bound execution graph pipeline, and not modified after that by anything other than another execution graph dispatch command -
Execution of this command must not cause a node to be dispatched
with a larger number of workgroups than that specified by either a
MaxNumWorkgroupsAMDXdecoration in the dispatched node or maxComputeWorkGroupCount - Execution of this command must not cause any shader to initialize more than maxExecutionGraphShaderPayloadCount output payloads
-
Execution of this command must not cause any shader that declares
NodeMaxPayloadsAMDXto initialize more output payloads than specified by the max number of payloads for that decoration. This requirement applies to eachNodeMaxPayloadsAMDXdecoration separately - If the bound execution graph pipeline includes draw nodes, this command must be called within a render pass instance that is compatible with the graphics pipeline used to create each of those nodes
-
countInfomust be a device pointer to a memory allocation containing a validDispatchGraphCountInfoAMDXstructure when this command is executed on the device -
countInfomust be a device address within aBuffercreated with theBUFFER_USAGE_INDIRECT_BUFFER_BITusage flag set -
countInfomust be a multiple of executionGraphDispatchAddressAlignment -
countInfo->infosmust be a device pointer to a memory allocation at least as large as the product ofcountandstridewhen this command is executed on the device -
countInfo->infosmust be a device address within aBuffercreated with theBUFFER_USAGE_INDIRECT_BUFFER_BITusage flag set -
countInfo->infosmust be a multiple of executionGraphDispatchAddressAlignment - Device memory
locations at indexes in the range [
infos,infos+ (count*stride)), at a granularity ofstridemust contain validDispatchGraphInfoAMDXstructures in the first 24 bytes when this command is executed on the device - For each
DispatchGraphInfoAMDXstructure incountInfo->infos,payloadsmust be a device pointer to a memory allocation at least as large as the product ofpayloadCountandpayloadStridewhen this command is executed on the device - For each
DispatchGraphInfoAMDXstructure incountInfo->infos,payloadsmust be a device address within aBuffercreated with theBUFFER_USAGE_INDIRECT_BUFFER_BITusage flag set - For each
DispatchGraphInfoAMDXstructure incountInfo->infos,payloadsmust be a multiple of executionGraphDispatchAddressAlignment - For each
DispatchGraphInfoAMDXstructure incountInfo->infos,nodeIndexmust be a valid node index in the bound execution graph pipeline, as returned bygetExecutionGraphPipelineNodeIndexAMDXwhen this command is executed on the device - For each
DispatchGraphInfoAMDXstructure incountInfo->infos, device memory locations at indexes in the range [payloads,payloads+ (payloadCount*payloadStride)), at a granularity ofpayloadStridemust contain a payload matching the size of the input payload expected by the node innodeIndexin the first bytes when this command is executed on the device
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
scratchmust be a validDeviceAddressvalue -
countInfomust be a validDeviceAddressvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
-
commandBuffermust be a primaryCommandBuffer
Host Synchronization
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT | Action |
Conditional Rendering
vkCmdDispatchGraphIndirectCountAMDX is affected by conditional rendering
See Also
VK_AMDX_shader_enqueue,
CommandBuffer,
DeviceAddress,
DeviceSize
data PhysicalDeviceShaderEnqueuePropertiesAMDX Source #
VkPhysicalDeviceShaderEnqueuePropertiesAMDX - Structure describing shader enqueue limits of an implementation
Members
The members of the PhysicalDeviceShaderEnqueuePropertiesAMDX structure
describe the following limits:
Description
If the PhysicalDeviceShaderEnqueuePropertiesAMDX structure is included
in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceShaderEnqueuePropertiesAMDX | |
Fields
| |
Instances
data PhysicalDeviceShaderEnqueueFeaturesAMDX Source #
VkPhysicalDeviceShaderEnqueueFeaturesAMDX - Structure describing whether shader enqueue within execution graphs are supported by the implementation
Members
This structure describes the following feature:
Description
If the PhysicalDeviceShaderEnqueueFeaturesAMDX 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. If the application wishes to use a
Device with any features described by
PhysicalDeviceShaderEnqueueFeaturesAMDX, it must add an instance of
the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceShaderEnqueueFeaturesAMDX | |
Fields
| |
Instances
data ExecutionGraphPipelineCreateInfoAMDX (es :: [Type]) Source #
VkExecutionGraphPipelineCreateInfoAMDX - Structure specifying parameters of a newly created execution graph pipeline
Description
The parameters basePipelineHandle and basePipelineIndex are
described in more detail in
Pipeline Derivatives.
Each shader stage provided when creating an execution graph pipeline
(including those in libraries) is associated with a name and an index,
determined by the inclusion or omission of a
PipelineShaderStageNodeCreateInfoAMDX structure in its pNext chain.
For any graphics pipeline libraries, only the name and index of the
vertex or mesh shader stage is linked directly to the graph as a node -
other shader stages in the pipeline will be executed after those shader
stages as normal. Task shaders cannot be included in a graphics pipeline
used for a draw node.
In addition to the shader name and index, an internal “node index” is
also generated for each node, which can be queried with
getExecutionGraphPipelineNodeIndexAMDX, and is used exclusively for
initial dispatch of an execution graph.
Valid Usage
- If the
pNextchain does not include aPipelineCreateFlags2CreateInfostructure,flagsmust be a valid combination ofPipelineCreateFlagBitsvalues
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis -1,basePipelineHandlemust be a valid execution graphPipelinehandle - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleisNULL_HANDLE,basePipelineIndexmust be a valid index into the calling command’spCreateInfosparameter - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag,basePipelineIndexmust be -1 orbasePipelineHandlemust beNULL_HANDLE - If a push
constant block is declared in a shader and
layoutis notNULL_HANDLE, a push constant range inlayoutmust match the shader stage - If a push
constant block is declared in a shader and
layoutis notNULL_HANDLE, the block must be contained inside the push constant range inlayoutthat matches the stage - If a
resource variable
is declared in a shader and
layoutis notNULL_HANDLE, the corresponding descriptor set inlayoutmust match the shader stage - If a
resource variable
is declared in a shader,
layoutis notNULL_HANDLE, and the descriptor type is notDESCRIPTOR_TYPE_MUTABLE_EXT, the corresponding descriptor set inlayoutmust match the descriptor type - If a
resource variable
is declared in a shader as an array and
layoutis notNULL_HANDLE, the corresponding descriptor binding used to createlayoutmust have adescriptorCountthat is greater than or equal to the length of the array - If a
resource variables
is declared in a shader as an array of descriptors, then the
descriptor type of that variable must not be
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK - If
shader64BitIndexing
feature is not enabled,
flagsmust not containPIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT -
If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BITnorPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT -
If the
pipelineProtectedAccess
feature is not enabled,
flagsmust not includePIPELINE_CREATE_NO_PROTECTED_ACCESS_BITnorPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT -
flagsmust not include bothPIPELINE_CREATE_NO_PROTECTED_ACCESS_BITandPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT - If
PipelineCreateFlags2CreateInfoKHR::flagsincludesPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,layoutmust beNULL_HANDLE - If
PipelineCreateFlags2CreateInfoKHR::flagsincludesPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all shader variables in the shader resource interface with aDescriptorSetandBindingdecoration must have a mapping declared inShaderDescriptorSetAndBindingMappingInfoEXT::pMappings -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV - If the
::deviceGeneratedComputePipelines
feature is not enabled,
flagsmust not includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV - If
flagsincludesPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then thepNextchain must include a pointer to a valid instance ofComputePipelineIndirectBufferInfoNVspecifying the address where the pipeline’s metadata will be saved - If
flagsincludesPIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT, then the ::deviceGeneratedCommands feature must be enabled - The
stagemember of any element ofpStagesmust beSHADER_STAGE_COMPUTE_BIT - The
shader code for the entry point identified by each element of
pStagesand the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter - If
layoutis notNULL_HANDLE, it must be consistent with the layout of the shaders specified inpStages - If
pLibraryInfois notNULLandlayoutis notNULL_HANDLE, each element ofpLibraryInfo->pLibrariesmust have been created with alayoutthat is compatible with thelayoutin this pipeline - If
layoutis notNULL_HANDLE, the number of resources inlayoutaccessible to each shader stage that is used by the pipeline must be less than or equal toPhysicalDeviceLimits::maxPerStageResources - If
pLibraryInfois notNULL, each element ofpLibraryInfo->pLibrariesmust be either a compute pipeline, an execution graph pipeline, or a graphics pipeline - If
pLibraryInfois notNULL, each element ofpLibraryInfo->pLibrariesthat is a compute pipeline or a graphics pipeline must have been created withPIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDXset -
If the
shaderMeshEnqueue
feature is not enabled, and
pLibraryInfo->pLibrariesis notNULL,pLibraryInfo->pLibrariesmust not contain any graphics pipelines - Any
element of
pLibraryInfo->pLibrariesidentifying a graphics pipeline must have been created with all possible state subsets - There
must be no two nodes in the pipeline that share both the same
shader name and index, as specified by
PipelineShaderStageNodeCreateInfoAMDX - There must be no two nodes in the pipeline that share the same shader name and have input payload declarations with different sizes
- There must be no two nodes in the pipeline that share the same name but have different execution models
-
There must be no two nodes in the pipeline that share the same
name where one includes
CoalescedInputCountAMDXand the other does not -
There must be no two nodes in the pipeline that share the same
name where one includes
StaticNumWorkgroupsAMDXand the other does not -
If an output payload declared in any shader in the pipeline has a
PayloadNodeNameAMDXdecoration with aNodeNamethat matches the shader name of any other node in the graph, the size of the output payload must match the size of the input payload in the matching node - If
flagsdoes not includePIPELINE_CREATE_LIBRARY_BIT_KHR, and an output payload declared in any shader in the pipeline does not have aPayloadNodeSparseArrayAMDXdecoration, there must be a node in the graph corresponding to every index from 0 to itsPayloadNodeArraySizeAMDXdecoration -
flagsmust not includePIPELINE_CREATE_NO_PROTECTED_ACCESS_BITnorPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT - If
PipelineCreateFlags2CreateInfoKHR::flagsincludesPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all libraries linked to this pipeline must also have that flag set - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all libraries linked to this pipeline must also not have that flag set - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,layoutmust not beNULL_HANDLE
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineCompilerControlCreateInfoAMDorPipelineCreationFeedbackCreateInfo - The
sTypevalue of each structure in thepNextchain must be unique - If
stageCountis not0, andpStagesis notNULL,pStagesmust be a valid pointer to an array ofstageCountvalidPipelineShaderStageCreateInfostructures -
If
pLibraryInfois notNULL,pLibraryInfomust be a valid pointer to a validPipelineLibraryCreateInfoKHRstructure - If
layoutis notNULL_HANDLE,layoutmust be a validPipelineLayouthandle - Both of
basePipelineHandle, andlayoutthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
VK_AMDX_shader_enqueue,
Pipeline,
PipelineCreateFlags,
PipelineLayout,
PipelineLibraryCreateInfoKHR,
PipelineShaderStageCreateInfo,
StructureType,
createExecutionGraphPipelinesAMDX
Constructors
| ExecutionGraphPipelineCreateInfoAMDX | |
Fields
| |
Instances
data PipelineShaderStageNodeCreateInfoAMDX Source #
VkPipelineShaderStageNodeCreateInfoAMDX - Structure specifying the shader name and index with an execution graph
Description
When included in the pNext chain of a
PipelineShaderStageCreateInfo structure,
this structure specifies the shader name and shader index of a node when
creating an execution graph pipeline. If this structure is omitted, the
shader name is set to the name of the entry point in SPIR-V and the
shader index is set to 0.
When dispatching a node from another shader, the name is fixed at pipeline creation, but the index can be set dynamically. By associating multiple shaders with the same name but different indexes, applications can dynamically select different nodes to execute. Applications must ensure each node has a unique name and index.
Shaders with the same name must be of the same type - e.g. a compute and graphics shader, or even two compute shaders where one is coalescing and the other is not, cannot share the same name.
Valid Usage (Implicit)
See Also
VK_AMDX_shader_enqueue,
StructureType,
getExecutionGraphPipelineNodeIndexAMDX
Constructors
| PipelineShaderStageNodeCreateInfoAMDX | |
Fields
| |
Instances
data ExecutionGraphPipelineScratchSizeAMDX Source #
VkExecutionGraphPipelineScratchSizeAMDX - Structure describing the scratch space required to dispatch an execution graph
Description
Applications can use any amount of scratch memory greater than
minSize for dispatching a graph, however only the values equal to
minSize + an integer multiple of sizeGranularity will be used.
Greater values may result in higher performance, up to maxSize which
indicates the most memory that an implementation can use effectively.
Valid Usage (Implicit)
See Also
VK_AMDX_shader_enqueue,
DeviceSize,
StructureType,
getExecutionGraphPipelineScratchSizeAMDX
Constructors
| ExecutionGraphPipelineScratchSizeAMDX | |
Fields
| |
Instances
data DispatchGraphInfoAMDX Source #
VkDispatchGraphInfoAMDX - Structure specifying node parameters for execution graph dispatch
Description
Whether payloads is consumed as a device or host pointer is defined by
the command this structure is used in.
Valid Usage
See Also
VK_AMDX_shader_enqueue,
DeviceOrHostAddressConstAMDX, DispatchGraphCountInfoAMDX
Constructors
| DispatchGraphInfoAMDX | |
Fields
| |
Instances
| Show DispatchGraphInfoAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods showsPrec :: Int -> DispatchGraphInfoAMDX -> ShowS # show :: DispatchGraphInfoAMDX -> String # showList :: [DispatchGraphInfoAMDX] -> ShowS # | |
| ToCStruct DispatchGraphInfoAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods withCStruct :: DispatchGraphInfoAMDX -> (Ptr DispatchGraphInfoAMDX -> IO b) -> IO b Source # pokeCStruct :: Ptr DispatchGraphInfoAMDX -> DispatchGraphInfoAMDX -> IO b -> IO b Source # withZeroCStruct :: (Ptr DispatchGraphInfoAMDX -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DispatchGraphInfoAMDX -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DispatchGraphInfoAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods | |
data DispatchGraphCountInfoAMDX Source #
VkDispatchGraphCountInfoAMDX - Structure specifying count parameters for execution graph dispatch
Description
Whether infos is consumed as a device or host pointer is defined by
the command this structure is used in.
See Also
VK_AMDX_shader_enqueue,
DeviceOrHostAddressConstAMDX, cmdDispatchGraphAMDX,
cmdDispatchGraphIndirectAMDX, cmdDispatchGraphIndirectCountAMDX
Constructors
| DispatchGraphCountInfoAMDX | |
Fields
| |
Instances
| Show DispatchGraphCountInfoAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods showsPrec :: Int -> DispatchGraphCountInfoAMDX -> ShowS # show :: DispatchGraphCountInfoAMDX -> String # showList :: [DispatchGraphCountInfoAMDX] -> ShowS # | |
| ToCStruct DispatchGraphCountInfoAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods withCStruct :: DispatchGraphCountInfoAMDX -> (Ptr DispatchGraphCountInfoAMDX -> IO b) -> IO b Source # pokeCStruct :: Ptr DispatchGraphCountInfoAMDX -> DispatchGraphCountInfoAMDX -> IO b -> IO b Source # withZeroCStruct :: (Ptr DispatchGraphCountInfoAMDX -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DispatchGraphCountInfoAMDX -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DispatchGraphCountInfoAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods | |
data DeviceOrHostAddressConstAMDX Source #
Constructors
| DeviceAddressConstAMDX DeviceAddress | |
| HostAddressConstAMDX (Ptr ()) |
Instances
| Show DeviceOrHostAddressConstAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods showsPrec :: Int -> DeviceOrHostAddressConstAMDX -> ShowS # show :: DeviceOrHostAddressConstAMDX -> String # showList :: [DeviceOrHostAddressConstAMDX] -> ShowS # | |
| ToCStruct DeviceOrHostAddressConstAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods withCStruct :: DeviceOrHostAddressConstAMDX -> (Ptr DeviceOrHostAddressConstAMDX -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceOrHostAddressConstAMDX -> DeviceOrHostAddressConstAMDX -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceOrHostAddressConstAMDX -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceOrHostAddressConstAMDX -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DeviceOrHostAddressConstAMDX Source # | |
Defined in Vulkan.Extensions.VK_AMDX_shader_enqueue Methods | |
type AMDX_SHADER_ENQUEUE_SPEC_VERSION = 2 Source #
pattern AMDX_SHADER_ENQUEUE_SPEC_VERSION :: Integral a => a Source #
type AMDX_SHADER_ENQUEUE_EXTENSION_NAME = "VK_AMDX_shader_enqueue" Source #
pattern AMDX_SHADER_ENQUEUE_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
data PipelineLibraryCreateInfoKHR Source #
VkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries to use when creating a pipeline
Valid Usage
- Each element
of
pLibrariesmust have been created withPIPELINE_CREATE_LIBRARY_BIT_KHR
- If any
library in
pLibrarieswas created with a shader stage withPipelineShaderStageModuleIdentifierCreateInfoEXTandidentifierSizenot equal to 0, the pipeline must be created with thePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BITflag set
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
- If
libraryCountis not0,pLibrariesmust be a valid pointer to an array oflibraryCountvalidPipelinehandles
See Also
VK_KHR_pipeline_library,
ExecutionGraphPipelineCreateInfoAMDX,
Pipeline,
RayTracingPipelineCreateInfoKHR,
StructureType
Constructors
| PipelineLibraryCreateInfoKHR | |
Instances
| Show PipelineLibraryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_library Methods showsPrec :: Int -> PipelineLibraryCreateInfoKHR -> ShowS # show :: PipelineLibraryCreateInfoKHR -> String # showList :: [PipelineLibraryCreateInfoKHR] -> ShowS # | |
| FromCStruct PipelineLibraryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_library | |
| ToCStruct PipelineLibraryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_library Methods withCStruct :: PipelineLibraryCreateInfoKHR -> (Ptr PipelineLibraryCreateInfoKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr PipelineLibraryCreateInfoKHR -> PipelineLibraryCreateInfoKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr PipelineLibraryCreateInfoKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PipelineLibraryCreateInfoKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PipelineLibraryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_library Methods | |
type SHADER_INDEX_UNUSED_AMDX = 4294967295 Source #
pattern SHADER_INDEX_UNUSED_AMDX :: Word32 Source #