| Safe Haskell | Safe-Inferred |
|---|---|
| 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
- Contact
Other Extension Metadata
- Last Modified Date
- 2022-02-21
- Interactions and External Dependencies
- This extension requires SPV_KHR_ray_cull_mask
- 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 is supported:
If VK_KHR_synchronization2 and VK_KHR_ray_tracing_pipeline 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
PhysicalDeviceRayTracingMaintenance1FeaturesKHR
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 :: forall io. 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 :: forall a. Integral a => a
- type KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_ray_tracing_maintenance1"
- pattern KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
cmdTraceRaysIndirect2KHR Source #
Arguments
| :: forall io. 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_LINEARandcompareEnableequal 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_LINEARandcompareEnableequal 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
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 thePipelineLayoutorDescriptorSetLayoutarray that was used to create the currentPipelineorShaderEXT, 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 thePipelineLayoutorDescriptorSetLayoutandPushConstantRangearrays used to create the currentPipelineorShaderEXT, as described in ??? - 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 thePipelineLayoutorDescriptorSetLayoutandPushConstantRangearrays used to create the currentPipelineorShaderEXT, as described in ??? - Descriptors in each
bound descriptor set, specified via
cmdBindDescriptorSets, must be valid 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 the
shaderObject
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 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
not specified as dynamic 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 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
- Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline
-
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 - If the
buffer from which
indirectDeviceAddresswas queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
buffer from which
indirectDeviceAddresswas queried must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit 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
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
- 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 | Compute | Action |
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
-
If the buffer from which
raygenShaderRecordAddresswas queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
-
The buffer from which the
raygenShaderRecordAddressis queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag -
raygenShaderRecordAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
If the buffer from which
missShaderBindingTableAddresswas queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject -
The buffer from which the
missShaderBindingTableAddressis queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag -
missShaderBindingTableAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
missShaderBindingTableStridemust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleAlignment -
missShaderBindingTableStridemust be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR::maxShaderGroupStride -
If the buffer from which
hitShaderBindingTableAddresswas queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject -
The buffer from which the
hitShaderBindingTableAddressis queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag -
hitShaderBindingTableAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
hitShaderBindingTableStridemust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleAlignment -
hitShaderBindingTableStridemust be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR::maxShaderGroupStride -
If the buffer from which
callableShaderBindingTableAddresswas queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject -
The buffer from which the
callableShaderBindingTableAddressis queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRusage flag -
callableShaderBindingTableAddressmust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupBaseAlignment -
callableShaderBindingTableStridemust be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleAlignment -
callableShaderBindingTableStridemust be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR::maxShaderGroupStride - If the currently
bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR,hitShaderBindingTableAddressmust not be zero - If the currently
bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR,hitShaderBindingTableAddressmust not be zero - If the currently
bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the shader group handle identified bymissShaderBindingTableAddressmust not be set to zero - If the currently
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 set to zero - If the currently
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 set to zero - If the currently
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 set to 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
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. PhysicalDeviceRayTracingMaintenance1FeaturesKHR can also
be used in the pNext chain of DeviceCreateInfo
to selectively enable these features.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceRayTracingMaintenance1FeaturesKHR | |
Fields
| |
Instances
pattern KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION :: forall a. 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 :: forall a. (Eq a, IsString a) => a Source #