| Safe Haskell | Safe-Inferred |
|---|---|
| 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_EXT_mesh_shader
- Interacts with VK_KHR_maintenance5
- SPIR-V Dependencies
- 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 is supported:
Extending
BufferUsageFlagBits2KHR:Extending
PipelineCreateFlagBits2KHR:
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 :: forall io. MonadIO io => Device -> ("executionGraph" ::: Pipeline) -> io ("sizeInfo" ::: ExecutionGraphPipelineScratchSizeAMDX)
- getExecutionGraphPipelineNodeIndexAMDX :: forall io. MonadIO io => Device -> ("executionGraph" ::: Pipeline) -> ("nodeInfo" ::: PipelineShaderStageNodeCreateInfoAMDX) -> io ("nodeIndex" ::: Word32)
- createExecutionGraphPipelinesAMDX :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct ExecutionGraphPipelineCreateInfoAMDX)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- cmdInitializeGraphScratchMemoryAMDX :: forall io. MonadIO io => CommandBuffer -> ("executionGraph" ::: Pipeline) -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> io ()
- cmdDispatchGraphAMDX :: forall io. MonadIO io => CommandBuffer -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> DispatchGraphCountInfoAMDX -> io ()
- cmdDispatchGraphIndirectAMDX :: forall io. MonadIO io => CommandBuffer -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> DispatchGraphCountInfoAMDX -> io ()
- cmdDispatchGraphIndirectCountAMDX :: forall io. 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 :: forall a. Integral a => a
- type AMDX_SHADER_ENQUEUE_EXTENSION_NAME = "VK_AMDX_shader_enqueue"
- pattern AMDX_SHADER_ENQUEUE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- data PipelineLibraryCreateInfoKHR = PipelineLibraryCreateInfoKHR {}
- newtype BufferUsageFlagBits2KHR where
- BufferUsageFlagBits2KHR Flags64
- pattern BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT :: BufferUsageFlagBits2KHR
- pattern BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX :: BufferUsageFlagBits2KHR
- type BufferUsageFlags2KHR = BufferUsageFlagBits2KHR
- newtype PipelineCreateFlagBits2KHR where
- PipelineCreateFlagBits2KHR Flags64
- pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_LIBRARY_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT :: PipelineCreateFlagBits2KHR
- pattern PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX :: PipelineCreateFlagBits2KHR
- type PipelineCreateFlags2KHR = PipelineCreateFlagBits2KHR
- type SHADER_INDEX_UNUSED_AMDX = 4294967295
- pattern SHADER_INDEX_UNUSED_AMDX :: Word32
Documentation
getExecutionGraphPipelineScratchSizeAMDX Source #
Arguments
| :: forall io. 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
| :: forall io. 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
| :: forall io. 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
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
| :: forall io. 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 -
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - 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 | Graphics Compute | Action |
See Also
VK_AMDX_shader_enqueue,
CommandBuffer,
DeviceAddress,
DeviceSize,
Pipeline
Arguments
| :: forall io. 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
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 - For each set n that is
statically used by
a bound shader,
a descriptor set must have been bound to n at the same pipeline
bind point, with a
PipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - For each push constant that
is statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - 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 the
maintenance4
feature is not enabled, then for each push constant that is
statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutandPushConstantRangearrays used to create the currentShaderEXT, as described in ??? - Descriptors in each bound
descriptor set, specified via
cmdBindDescriptorSets, must be valid as described by descriptor validity if they are statically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - 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 the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values, in any shader stage - If the
shaderObject
feature is enabled, either a valid pipeline must be bound to the
pipeline bind point used by this command, or a valid combination of
valid and
NULL_HANDLEshader objects must be bound to every supported shader stage corresponding to the pipeline bind point used by this command - 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_ACCESS_EXTorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXTforuniformBuffers, 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_ACCESS_EXTorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXTforstorageBuffers, 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 bound shader
accesses a
SamplerorImageViewobject that enables sampler Y′CBCR conversion, that object must only be used withOpImageSample*orOpImageSparseSample*instructions - If
a bound shader
accesses a
SamplerorImageViewobject that enables sampler Y′CBCR conversion, that object must not use theConstOffsetandOffsetoperands - If a
ImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in ??? - If a
ImageViewis accessed as a result of this command, then the numeric type of the image view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
ImageViewcreated with a format other thanFORMAT_A8_UNORM_KHRis 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_UNORM_KHRis 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
OpImageWeightedSampleQCOMis 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
OpImageWeightedSampleQCOMuses 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
OpImageWeightedSampleQCOM,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
OpImageWeightedSampleQCOM,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, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written -
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_AMDXflag - 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
-
pCountInfomust be a valid pointer to a validDispatchGraphCountInfoAMDXstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - 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 | Graphics Compute | Action |
See Also
VK_AMDX_shader_enqueue,
CommandBuffer,
DeviceAddress,
DeviceSize,
DispatchGraphCountInfoAMDX
cmdDispatchGraphIndirectAMDX Source #
Arguments
| :: forall io. 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
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 - For each set n
that is statically used by
a bound shader,
a descriptor set must have been bound to n at the same pipeline
bind point, with a
PipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - For each push
constant that is statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - 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 the
maintenance4
feature is not enabled, then for each push constant that is
statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutandPushConstantRangearrays used to create the currentShaderEXT, as described in ??? - Descriptors in each
bound descriptor set, specified via
cmdBindDescriptorSets, must be valid as described by descriptor validity if they are statically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - 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 the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values, in any shader stage - If the
shaderObject
feature is enabled, either a valid pipeline must be bound to the
pipeline bind point used by this command, or a valid combination of
valid and
NULL_HANDLEshader objects must be bound to every supported shader stage corresponding to the pipeline bind point used by this command - 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_ACCESS_EXTorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXTforuniformBuffers, 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_ACCESS_EXTorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXTforstorageBuffers, 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 bound shader
accesses a
SamplerorImageViewobject that enables sampler Y′CBCR conversion, that object must only be used withOpImageSample*orOpImageSparseSample*instructions - If
a bound shader
accesses a
SamplerorImageViewobject that enables sampler Y′CBCR conversion, that object must not use theConstOffsetandOffsetoperands - If a
ImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in ??? - If a
ImageViewis accessed as a result of this command, then the numeric type of the image view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
ImageViewcreated with a format other thanFORMAT_A8_UNORM_KHRis 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_UNORM_KHRis 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
OpImageWeightedSampleQCOMis 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
OpImageWeightedSampleQCOMuses 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
OpImageWeightedSampleQCOM,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
OpImageWeightedSampleQCOM,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, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written -
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_AMDXflag - 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_BITflag -
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_BITflag - 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
-
pCountInfomust be a valid pointer to a validDispatchGraphCountInfoAMDXstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - 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 | Graphics Compute | Action |
See Also
VK_AMDX_shader_enqueue,
CommandBuffer,
DeviceAddress,
DeviceSize,
DispatchGraphCountInfoAMDX
cmdDispatchGraphIndirectCountAMDX Source #
Arguments
| :: forall io. 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
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 - For each set
n that is statically used by
a bound shader,
a descriptor set must have been bound to n at the same pipeline
bind point, with a
PipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - For each push
constant that is statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - 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 the
maintenance4
feature is not enabled, then for each push constant that is
statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutandPushConstantRangearrays used to create the currentShaderEXT, as described in ??? - Descriptors in
each bound descriptor set, specified via
cmdBindDescriptorSets, must be valid as described by descriptor validity if they are statically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - 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 the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command or anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values, in any shader stage - If the
shaderObject
feature is enabled, either a valid pipeline must be bound to the
pipeline bind point used by this command, or a valid combination of
valid and
NULL_HANDLEshader objects must be bound to every supported shader stage corresponding to the pipeline bind point used by this command - 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_ACCESS_EXTorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXTforuniformBuffers, 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_ACCESS_EXTorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXTforstorageBuffers, 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 bound shader
accesses a
SamplerorImageViewobject that enables sampler Y′CBCR conversion, that object must only be used withOpImageSample*orOpImageSparseSample*instructions - If
a bound shader
accesses a
SamplerorImageViewobject that enables sampler Y′CBCR conversion, that object must not use theConstOffsetandOffsetoperands - If a
ImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in ??? - If a
ImageViewis accessed as a result of this command, then the numeric type of the image view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
ImageViewcreated with a format other thanFORMAT_A8_UNORM_KHRis 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_UNORM_KHRis 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
OpImageWeightedSampleQCOMis 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
OpImageWeightedSampleQCOMuses 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
OpImageWeightedSampleQCOM,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
OpImageWeightedSampleQCOM,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, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written -
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_AMDXflag - 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_BITflag -
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_BITflag -
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_BITflag - 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
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - 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 | Graphics Compute | Action |
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. PhysicalDeviceShaderEnqueueFeaturesAMDX can also be used
in the pNext chain of DeviceCreateInfo to
selectively enable these features.
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 aPipelineCreateFlags2CreateInfoKHRstructure,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, a push constant range in
layoutmust match the shader stage - If a push
constant block is declared in a shader, the block must be contained
inside the push constant range in
layoutthat matches the stage - If a
resource variables
is declared in a shader, a descriptor slot in
layoutmust match the shader stage - If a
resource variables
is declared in a shader, and the descriptor type is not
DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot inlayoutmust match the descriptor type - If a
resource variables
is declared in a shader as an array, a descriptor slot in
layoutmust match the descriptor count -
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 -
If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BITorPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT - 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 -
layoutmust be consistent with the layout of the shaders specified inpStages - If
pLibraryInfois notNULL, each element of itspLibrariesmember must have been created with alayoutthat is compatible with thelayoutin this pipeline - The
number of resources in
layoutaccessible 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
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 struct 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 -
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 :: forall a. Integral a => a Source #
type AMDX_SHADER_ENQUEUE_EXTENSION_NAME = "VK_AMDX_shader_enqueue" Source #
pattern AMDX_SHADER_ENQUEUE_EXTENSION_NAME :: forall a. (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 - If any
element of
pLibrarieswas created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, all elements must have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If
pipelineis being created withPIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT, every element ofpLibrariesmust have been created withPIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT - If
pipelineis being created withoutPIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT, every element ofpLibrariesmust have been created withoutPIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT - If
pipelineis being created withPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT, every element ofpLibrariesmust have been created withPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT - If
pipelineis being created withoutPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT, every element ofpLibrariesmust have been created withoutPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
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 | |
newtype BufferUsageFlagBits2KHR Source #
VkBufferUsageFlagBits2KHR - Bitmask controlling how a pipeline is created
See Also
Constructors
| BufferUsageFlagBits2KHR Flags64 |
Bundled Patterns
Instances
newtype PipelineCreateFlagBits2KHR Source #
VkPipelineCreateFlagBits2KHR - Bitmask controlling how a pipeline is created
Description
PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHRspecifies that the created pipeline will not be optimized. Using this flag may reduce the time taken to create the pipeline.
PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHRspecifies that the pipeline to be created is allowed to be the parent of a pipeline that will be created in a subsequent pipeline creation call.PIPELINE_CREATE_2_DERIVATIVE_BIT_KHRspecifies that the pipeline to be created will be a child of a previously created parent pipeline.PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHRspecifies that any shader input variables decorated asViewIndexwill be assigned values as if they were decorated asDeviceIndex.PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHRspecifies that a compute pipeline can be used withcmdDispatchBasewith a non-zero base workgroup.PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NVspecifies that a pipeline is created with all shaders in the deferred state. Before using the pipeline the application must callcompileDeferredNVexactly once on each shader in the pipeline before using the pipeline.PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHRspecifies that the shader compiler should capture statistics for the pipeline executables produced by the compile process which can later be retrieved by callinggetPipelineExecutableStatisticsKHR. Enabling this flag must not affect the final compiled pipeline but may disable pipeline caching or otherwise affect pipeline creation time.PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHRspecifies that the shader compiler should capture the internal representations of pipeline executables produced by the compile process which can later be retrieved by callinggetPipelineExecutableInternalRepresentationsKHR. Enabling this flag must not affect the final compiled pipeline but may disable pipeline caching or otherwise affect pipeline creation time. When capturing IR from pipelines created with pipeline libraries, there is no guarantee that IR from libraries can be retrieved from the linked pipeline. Applications should retrieve IR from each library, and any linked pipelines, separately.PIPELINE_CREATE_2_LIBRARY_BIT_KHRspecifies that the pipeline cannot be used directly, and instead defines a pipeline library that can be combined with other pipelines using thePipelineLibraryCreateInfoKHRstructure. This is available in ray tracing and graphics pipelines.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHRspecifies that an any-hit shader will always be present when an any-hit shader would be executed. A NULL any-hit shader is an any-hit shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHRspecifies that a closest hit shader will always be present when a closest hit shader would be executed. A NULL closest hit shader is a closest hit shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHRspecifies that a miss shader will always be present when a miss shader would be executed. A NULL miss shader is a miss shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHRspecifies that an intersection shader will always be present when an intersection shader would be executed. A NULL intersection shader is an intersection shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHRspecifies that triangle primitives will be skipped during traversal using pipeline trace ray instructions.PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHRspecifies that AABB primitives will be skipped during traversal using pipeline trace ray instructions.PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHRspecifies that the shader group handles can be saved and reused on a subsequent run (e.g. for trace capture and replay).PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NVspecifies that the pipeline can be used in combination with https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXTspecifies that the pipeline can be used in aIndirectExecutionSetEXT.PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHRspecifies that pipeline creation will fail if a compile is required for creation of a validPipelineobject;PIPELINE_COMPILE_REQUIREDwill be returned by pipeline creation, and thePipelinewill beNULL_HANDLE.- When creating multiple pipelines,
PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHRspecifies that control will be returned to the application if any individual pipeline returns a result which is notSUCCESSrather than continuing to create additional pipelines. PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NVspecifies that the pipeline is allowed to useOpTraceRayMotionNV.PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRspecifies that the pipeline will be used with a fragment shading rate attachment.PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXTspecifies that the pipeline will be used with a fragment density map attachment.PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXTspecifies that pipeline libraries being linked into this library should have link time optimizations applied. If this bit is omitted, implementations should instead perform linking as rapidly as possible.PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXTspecifies that pipeline libraries should retain any information necessary to later perform an optimal link withPIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT.PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXTspecifies that a pipeline will be used with descriptor buffers, rather than descriptor sets.PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTspecifies that the pipeline may be used with an attachment feedback loop including color attachments.PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTspecifies that the pipeline may be used with an attachment feedback loop including depth-stencil attachments.PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXTspecifies that the ray tracing pipeline can be used with acceleration structures which reference an opacity micromap array.PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NVspecifies that the ray tracing pipeline can be used with acceleration structures which reference a displacement micromap array.PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXTspecifies that the pipeline must not be bound to a protected command buffer.PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXTspecifies that the pipeline must not be bound to an unprotected command buffer.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHRspecifies thatPipelineBinaryKHRobjects can be created from the pipeline. IfPIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHRis used, implementations should not store pipeline data to an internal cache, if such a cache exists as stated by pipelineBinaryInternalCache. If pipelineBinaryPrefersInternalCache isTRUE, applications should not usePIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXTspecifies that the pipeline will be used in a render pass that is begun withRENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDXspecifies that the pipeline will be used in an execution graph
It is valid to set both PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
and PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR. This allows a pipeline to be
both a parent and possibly a child in a pipeline hierarchy. See
Pipeline Derivatives
for more information.
When an implementation is looking up a pipeline in a
pipeline cache,
if that pipeline is being created using linked libraries,
implementations should always return an equivalent pipeline created
with PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT if available,
whether or not that bit was specified.
Using PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT (or not) when
linking pipeline libraries is intended as a performance tradeoff between
host and device. If the bit is omitted, linking should be faster and
produce a pipeline more rapidly, but performance of the pipeline on the
target device may be reduced. If the bit is included, linking may be
slower but should produce a pipeline with device performance comparable
to a monolithically created pipeline. Using both options can allow
latency-sensitive applications to generate a suboptimal but usable
pipeline quickly, and then perform an optimal link in the background,
substituting the result for the suboptimally linked pipeline as soon as
it is available.
See Also
Constructors
| PipelineCreateFlagBits2KHR Flags64 |
Bundled Patterns
Instances
type SHADER_INDEX_UNUSED_AMDX = 4294967295 Source #
pattern SHADER_INDEX_UNUSED_AMDX :: Word32 Source #