| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1
Description
Name
VK_KHR_ray_tracing_maintenance1 - device extension
VK_KHR_ray_tracing_maintenance1
- Name String
VK_KHR_ray_tracing_maintenance1
- Extension Type
- Device extension
- Registered Extension Number
- 387
- Revision
- 1
- Ratification Status
- Ratified
- Extension and Version Dependencies
- VK_KHR_acceleration_structure
- API Interactions
- Interacts with VK_VERSION_1_3
- Interacts with VK_EXT_device_generated_commands
- Interacts with VK_KHR_ray_tracing_pipeline
- Interacts with VK_KHR_synchronization2
- SPIR-V Dependencies
- Contact
Other Extension Metadata
- Last Modified Date
- 2022-02-21
- Interactions and External Dependencies
- This extension provides API support for GLSL_EXT_ray_cull_mask
- Interacts with
VK_KHR_ray_tracing_pipeline - Interacts with
VK_KHR_synchronization2
- Contributors
- Stu Smith, AMD
- Tobias Hector, AMD
- Marius Bjorge, Arm
- Tom Olson, Arm
- Yuriy O’Donnell, Epic Games
- Yunpeng Zhu, Huawei
- Andrew Garrard, Imagination
- Dae Kim, Imagination
- Joshua Barczak, Intel
- Lionel Landwerlin, Intel
- Daniel Koch, NVIDIA
- Eric Werness, NVIDIA
- Spencer Fricke, Samsung
Description
VK_KHR_ray_tracing_maintenance1 adds a collection of minor ray tracing
features, none of which would warrant an entire extension of their own.
The new features are as follows:
- Adds support for the
SPV_KHR_ray_cull_maskSPIR-V extension in Vulkan. This extension provides access to built-inCullMaskKHRshader variable which contains the value of theOpTrace*Cull Maskparameter. This new shader variable is accessible in the intersection, any-hit, closest hit and miss shader stages. Adds support for a new pipeline stage and access mask built on top of
VK_KHR_synchronization2:PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHRto specify execution of acceleration structure copy commandsACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHRto specify read access to a shader binding table in any shader pipeline stage
Adds two new acceleration structure query parameters:
QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHRto query the acceleration structure size on the device timelineQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHRto query the number of bottom level acceleration structure pointers for serialization
- Adds an optional new indirect ray tracing dispatch command,
cmdTraceRaysIndirect2KHR, which sources the shader binding table parameters as well as the dispatch dimensions from the device. The rayTracingPipelineTraceRaysIndirect2 feature indicates whether this functionality is supported.
New Commands
If VK_KHR_ray_tracing_pipeline is supported:
New Structures
If VK_KHR_ray_tracing_pipeline is supported:
New Enum Constants
KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSIONExtending
QueryType:Extending
StructureType:
If VK_KHR_synchronization2 or Vulkan Version 1.3 and VK_KHR_ray_tracing_pipeline is supported:
If VK_EXT_device_generated_commands is supported:
If VK_KHR_synchronization2 or Vulkan Version 1.3 is supported:
New Built-In Variables
New SPIR-V Capabilities
Issues
None Yet!
Version History
Revision 1, 2022-02-21 (Members of the Vulkan Ray Tracing TSG)
- internal revisions
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
- cmdTraceRaysIndirect2KHR :: MonadIO io => CommandBuffer -> ("indirectDeviceAddress" ::: DeviceAddress) -> io ()
- data TraceRaysIndirectCommand2KHR = TraceRaysIndirectCommand2KHR {
- raygenShaderRecordAddress :: DeviceAddress
- raygenShaderRecordSize :: DeviceSize
- missShaderBindingTableAddress :: DeviceAddress
- missShaderBindingTableSize :: DeviceSize
- missShaderBindingTableStride :: DeviceSize
- hitShaderBindingTableAddress :: DeviceAddress
- hitShaderBindingTableSize :: DeviceSize
- hitShaderBindingTableStride :: DeviceSize
- callableShaderBindingTableAddress :: DeviceAddress
- callableShaderBindingTableSize :: DeviceSize
- callableShaderBindingTableStride :: DeviceSize
- width :: Word32
- height :: Word32
- depth :: Word32
- data PhysicalDeviceRayTracingMaintenance1FeaturesKHR = PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
- type KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION = 1
- pattern KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION :: Integral a => a
- type KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1"
- pattern KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype IndirectCommandsTokenTypeEXT where
- IndirectCommandsTokenTypeEXT Int32
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT :: IndirectCommandsTokenTypeEXT
- pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT :: IndirectCommandsTokenTypeEXT
Documentation
cmdTraceRaysIndirect2KHR Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("indirectDeviceAddress" ::: DeviceAddress) |
|
| -> io () |
vkCmdTraceRaysIndirect2KHR - Initialize an indirect ray tracing dispatch with indirect shader binding tables
Description
cmdTraceRaysIndirect2KHR behaves similarly to
cmdTraceRaysIndirectKHR
except that shader binding table parameters as well as dispatch
dimensions are read by the device from indirectDeviceAddress during
execution.
Valid Usage
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
Samplercreated withmagFilterorminFilterequal toFILTER_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT - If a
Samplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’slevelCountandlayerCountmust be 1 - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the image view’sviewTypemust beIMAGE_VIEW_TYPE_1DorIMAGE_VIEW_TYPE_2D - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name - If a
Samplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values - If a
ImageViewis sampled with depth comparison, the image view’s format features must containFORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT - If a
ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT - If a
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERdescriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s format features must containFORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT - If a
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - If the
VK_EXT_filter_cubic
extension is not enabled and any
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, it must not have aImageViewTypeofIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE, orIMAGE_VIEW_TYPE_CUBE_ARRAY - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2 - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2 - If the
cubicRangeClamp
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must not have aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM - Any
ImageViewbeing sampled with aSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOMas a result of this command must sample withFILTER_CUBIC_EXT - If
the
selectableCubicWeights
feature is not enabled, then any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must haveSamplerCubicWeightsCreateInfoQCOM::cubicWeightsequal toCUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM - Any
Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - For any
ImageViewbeing written as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - For any
ImageViewbeing read as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - For any
BufferViewbeing written as a storage texel buffer where the image format field of theOpTypeImageisUnknown, the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - Any
BufferViewbeing read as a storage texel buffer where the image format field of theOpTypeImageisUnknownthen the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a set n, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT, as described in ??? - If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutarray used to create the currentShaderEXT - For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command
- If a
a bound shader
was created as a
ShaderEXTwithout theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline without thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants with thePipelineLayoutused to create the currentPipelineor theDescriptorSetLayoutandPushConstantRangearrays used to create the currentShaderEXT - Descriptors in each
bound descriptor set, specified via
cmdBindDescriptorSets, must be valid if they are accessed as described by descriptor validity by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If an image
descriptor is accessed by a shader, the
ImageLayoutmust match the subresource accessible from theImageViewas defined by the image layout matching rules - If the descriptors used
by the
Pipelinebound to the pipeline bind point were specified viacmdBindDescriptorSets, the boundPipelinemust have been created withoutPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by anyShaderEXTbound to a stage corresponding to the pipeline bind point used by this command - If the descriptors used
by the
Pipelinebound to the pipeline bind point were specified viacmdSetDescriptorBufferOffsetsEXT, the boundPipelinemust have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If a descriptor is
dynamically used with a
Pipelinecreated withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If a descriptor is
dynamically used with a
ShaderEXTcreated with aDescriptorSetLayoutthat was created withDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command
- If a pipeline is bound
to the pipeline bind point used by this command, there must not
have been any calls to dynamic state setting commands for any state
specified statically in the
Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound - If any stage
of the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If any stage
of the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
commandBufferis an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource - If a
ImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in ??? - If a
ImageVieworBufferViewis accessed as a result of this command, then the numeric type of the view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
ImageViewcreated with a format other thanFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format - If a
ImageViewcreated with the formatFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have four components - If a
BufferViewis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the buffer view’s format - If a
ImageViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
ImageViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If a
BufferViewwith aFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
BufferViewwith aFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If
the
sparseImageInt64Atomics
feature is not enabled,
Imageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command - If
the
sparseImageInt64Atomics
feature is not enabled,
Bufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command - If
OpImageSampleWeightedQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM - If
OpImageSampleWeightedQCOMuses aImageViewas a sample weight image as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM - If
OpImageBoxFilterQCOMis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM - If
OpImageBlockMatchSSDQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If
OpImageBlockMatchSADQCOMis used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If
OpImageBlockMatchSADQCOMor OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - If
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM - If
any command other than
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aSampleras a result of this command, then the sampler must not have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anImageViewas a result of this command, then the image view’s format must be a single-component format - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMread from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - Any shader invocation executed by this command must terminate
- If a descriptor with
type equal to any of
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENTis accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written - The
DeviceMemoryobject allocated from aMemoryHeapwith theMEMORY_HEAP_TILE_MEMORY_BIT_QCOMproperty that is bound to a resource accessed as a result of this command must be the active bound bound tile memory object incommandBuffer - If this command is
recorded inside a
tile shading render pass
instance, the stages corresponding to the pipeline bind point used
by this command must only include
SHADER_STAGE_VERTEX_BIT,SHADER_STAGE_FRAGMENT_BIT, and/orSHADER_STAGE_COMPUTE_BIT - If this command is
recorded where
per-tile execution model
is enabled, there must be no access to any image while the image
was be transitioned to the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTlayout - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the underlyingTensorARMobject must have been created with theTENSOR_USAGE_SHADER_BIT_ARMusage flag set - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then theRankof theOpTypeTensorARMof the tensor resource variable must be equal to thedimensionCountprovided viaTensorCreateInfoARM::pDescriptionwhen creating the underlyingTensorARMobject - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the element type of theOpTypeTensorARMof the tensor resource variable must be compatible with theFormatof theTensorViewARMused for the access - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses aOpTypeStructdecorated withBlockorBufferBlockusing that mapping, the calculated offset for the resource heap must be a multiple of bufferDescriptorAlignment - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeImageorOpTypeSampledImageusing that mapping, the calculated offset for the resource heap must be a multiple of imageDescriptorAlignment - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeSamplerorOpTypeSampledImageusing that mapping, the calculated offset for the sampler heap must be a multiple of samplerDescriptorAlignment - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses anOpTypeTensorARMusing that mapping, the calculated offset for the resource heap must be a multiple of tensorDescriptorAlignment - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 4 - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddress - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a multiple of 8 - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address at the expected location in push data must be a validDeviceAddressbacked by physical memory at every offset specified by each mapping - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the value of the address pointed to by the address in push data must be a validDeviceAddress - For each descriptor heap that is statically used by a bound shader, either directly or via a descriptor mapping, a valid descriptor heap must be bound
- If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, execution of this command must not result in any descriptor read accessing data outside of the user range of the respective heap bound byvkCmdBind*HeapEXTcommands - If any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer or uniform texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified viaDeviceAddressRangeEXTwhen the descriptor was written - If any stage of the
Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer or storage texel buffer through a descriptor in the bound resource heap, that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, the robustBufferAccess2 feature is not enabled, and the robustBufferAccess feature is not enabled, that stage must not access values outside of the range of the descriptor specified byDeviceAddressRangeEXTwhen the descriptor was written - If the
robustBufferAccess2
feature is not enabled, the
robustBufferAccess
feature is not enabled, and any
ShaderEXTbound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, uniform texel buffer, storage buffer, or storage texel buffer, that shader must not access values outside of the range of the buffer as specified byDeviceAddressRangeEXTwhen the descriptor was written - If any
bound shader
uses an embedded sampler via a
descriptor mapping,
the value of
pBindInfo->reservedRangeSizeset forcmdBindSamplerHeapEXTmust be greater than or equal to minSamplerHeapReservedRangeWithEmbedded - If a
bound shader
was created as a
ShaderEXTwith theSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTflag or as part of a pipeline with thePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTflag, and that shader statically uses a push constant value, that value must have been set bycmdPushDataEXT - If a
bound shader
was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the access must not be out of bounds - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a resource using that mapping, the buffer from which the address in push data was queried must have been created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_UNIFORM_BUFFER_BITusage flag set - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a uniform buffer using that mapping, the address that the uniform buffer is mapped to must be aligned to minUniformBufferOffsetAlignment - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must have been queried from a buffer created with theBUFFER_USAGE_STORAGE_BUFFER_BITusage flag set - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses a storage buffer using that mapping, the address that the storage buffer is mapped to must be aligned to minStorageBufferOffsetAlignment - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader accesses an acceleration structure using that mapping, the address that the acceleration structure is mapped to must be an acceleration structure address retrieved from aAccelerationStructureKHRobject viagetAccelerationStructureDeviceAddressKHRor handle retrieved from aAccelerationStructureNVobject viagetAccelerationStructureHandleNV - If a shader uses a
sampler descriptor to sample an image as a result of this command,
and that sampler descriptor uses a custom border color with an index
defined by
SamplerCustomBorderColorIndexCreateInfoEXT, the value ofSamplerCustomBorderColorIndexCreateInfoEXT::indexmust have been registered before this command was recorded, and still be registered during the sampling operation, with an identically defined color - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, the address that the resource is mapped to must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set - If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXTorDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, the address of the indirect memory must have been queried from a buffer created without theBUFFER_CREATE_PROTECTED_BITcreate flag set - Any shader group handle referenced by this call must have been queried from the bound ray tracing pipeline
- If the bound ray
tracing pipeline state was created with the
DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHRdynamic state enabled thencmdSetRayTracingPipelineStackSizeKHRmust have been called in the current command buffer prior to this trace command - If a pipeline is bound
to the pipeline bind point used by this command, or shader is bound
to a shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, the value of the address at the expected location in shader record data must be a valid address -
This command must not cause a shader call instruction to be
executed from a shader invocation with a
recursion depth
greater than the value of
maxPipelineRayRecursionDepthused to create the bound ray tracing pipeline -
commandBuffermust not be a protected command buffer -
indirectDeviceAddressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_INDIRECT_BUFFER_BITusage flag set -
indirectDeviceAddressmust be a multiple of4 - All
device addresses between
indirectDeviceAddressandindirectDeviceAddress+sizeof(TraceRaysIndirectCommand2KHR) - 1 must be in the buffer device address range of the same buffer - The rayTracingPipelineTraceRaysIndirect2 feature must be enabled
-
If the bound ray tracing pipeline was created with
PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NVPhysicalDeviceRayTracingMotionBlurFeaturesNV::rayTracingMotionBlurPipelineTraceRaysIndirectfeature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
indirectDeviceAddressmust be a validDeviceAddressvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIToperations - This command must only be called outside of a render pass instance
- This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- 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 Secondary | Outside | Outside | VK_QUEUE_COMPUTE_BIT | Action |
Conditional Rendering
vkCmdTraceRaysIndirect2KHR is not affected by conditional rendering
See Also
VK_KHR_ray_tracing_maintenance1,
VK_KHR_ray_tracing_pipeline,
CommandBuffer,
DeviceAddress
data TraceRaysIndirectCommand2KHR Source #
VkTraceRaysIndirectCommand2KHR - Structure specifying the parameters of an indirect trace ray command with indirect shader binding tables
Description
The members of TraceRaysIndirectCommand2KHR have the same meaning as
the similarly named parameters of
cmdTraceRaysKHR.
Indirect shader binding table buffer parameters must satisfy the same
memory alignment and binding requirements as their counterparts in
cmdTraceRaysIndirectKHR
and cmdTraceRaysKHR.
Valid Usage
-
raygenShaderRecordAddressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag set
-
raygenShaderRecordAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
missShaderBindingTableAddressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag set -
missShaderBindingTableAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
missShaderBindingTableStridemust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleAlignment -
missShaderBindingTableStridemust be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR::maxShaderGroupStride -
hitShaderBindingTableAddressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag set -
hitShaderBindingTableAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
hitShaderBindingTableStridemust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleAlignment -
hitShaderBindingTableStridemust be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR::maxShaderGroupStride -
callableShaderBindingTableAddressmust be a device address allocated to the application from a buffer created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag set -
callableShaderBindingTableAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
callableShaderBindingTableStridemust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleAlignment -
callableShaderBindingTableStridemust be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR::maxShaderGroupStride - If the bound ray
tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the entries in the table identified bymissShaderBindingTableAddressaccessed as a result of this command in order to execute a miss shader must not be zero - If the bound ray
tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, entries in the table identified byhitShaderBindingTableAddressaccessed as a result of this command in order to execute an any-hit shader must not be zero - If the bound ray
tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, entries in the table identified byhitShaderBindingTableAddressaccessed as a result of this command in order to execute a closest hit shader must not be zero - If the bound ray
tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, entries in the table identified byhitShaderBindingTableAddressaccessed as a result of this command in order to execute an intersection shader must not be zero -
Any non-zero hit shader group entries in the table identified by
hitShaderBindingTableAddressaccessed by this call from a geometry with ageometryTypeofGEOMETRY_TYPE_TRIANGLES_KHRmust have been created withRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR -
Any non-zero hit shader group entries in the table identified by
hitShaderBindingTableAddressaccessed by this call from a geometry with ageometryTypeofGEOMETRY_TYPE_AABBS_KHRmust have been created withRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR -
widthmust be less than or equal toPhysicalDeviceLimits::maxComputeWorkGroupCount[0] ×PhysicalDeviceLimits::maxComputeWorkGroupSize[0] -
heightmust be less than or equal toPhysicalDeviceLimits::maxComputeWorkGroupCount[1] ×PhysicalDeviceLimits::maxComputeWorkGroupSize[1] -
depthmust be less than or equal toPhysicalDeviceLimits::maxComputeWorkGroupCount[2] ×PhysicalDeviceLimits::maxComputeWorkGroupSize[2] -
width×height×depthmust be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR::maxRayDispatchInvocationCount
Valid Usage (Implicit)
-
raygenShaderRecordAddressmust be a validDeviceAddressvalue
-
missShaderBindingTableAddressmust be a validDeviceAddressvalue -
hitShaderBindingTableAddressmust be a validDeviceAddressvalue -
callableShaderBindingTableAddressmust be a validDeviceAddressvalue
See Also
VK_KHR_ray_tracing_maintenance1,
VK_KHR_ray_tracing_pipeline,
DeviceAddress,
DeviceSize
Constructors
| TraceRaysIndirectCommand2KHR | |
Fields
| |
Instances
data PhysicalDeviceRayTracingMaintenance1FeaturesKHR Source #
VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR - Structure describing the ray tracing maintenance features that can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceRayTracingMaintenance1FeaturesKHR structure is
included in the pNext chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2,
it is filled in to indicate whether each corresponding feature is
supported. If the application wishes to use a
Device with any features described by
PhysicalDeviceRayTracingMaintenance1FeaturesKHR, it must add an
instance of the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceRayTracingMaintenance1FeaturesKHR | |
Fields
| |
Instances
pattern KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION :: Integral a => a Source #
type KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1" Source #
pattern KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
newtype IndirectCommandsTokenTypeEXT Source #
VkIndirectCommandsTokenTypeEXT - Enum specifying token commands
Description
'
Supported Indirect Command Tokens
See Also
VK_EXT_device_generated_commands,
IndirectCommandsLayoutTokenEXT
Constructors
| IndirectCommandsTokenTypeEXT Int32 |
Bundled Patterns