Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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_mask
SPIR-V extension in Vulkan. This extension provides access to built-inCullMaskKHR
shader variable which contains the value of theOpTrace*
Cull Mask
parameter. 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_KHR
to specify execution of acceleration structure copy commandsACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
to 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_KHR
to query the acceleration structure size on the device timelineQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
to 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_VERSION
Extending
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 #
:: 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
Sampler
created withmagFilter
orminFilter
equal toFILTER_LINEAR
andcompareEnable
equal toFALSE
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
Sampler
created withmipmapMode
equal toSAMPLER_MIPMAP_MODE_LINEAR
andcompareEnable
equal toFALSE
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
ImageView
is sampled with depth comparison, the image view’s format features must containFORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
- If a
ImageView
is 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_BUFFER
descriptor 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
ImageView
is sampled withFILTER_CUBIC_EXT
as 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
ImageView
is sampled withFILTER_CUBIC_EXT
as a result of this command, it must not have aImageViewType
ofIMAGE_VIEW_TYPE_3D
,IMAGE_VIEW_TYPE_CUBE
, orIMAGE_VIEW_TYPE_CUBE_ARRAY
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must have aImageViewType
and format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned bygetPhysicalDeviceImageFormatProperties2
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
with a reduction mode of eitherSAMPLER_REDUCTION_MODE_MIN
orSAMPLER_REDUCTION_MODE_MAX
as a result of this command must have aImageViewType
and format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned bygetPhysicalDeviceImageFormatProperties2
- If the
cubicRangeClamp
feature is not enabled, then any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must not have aSamplerReductionModeCreateInfo
::reductionMode
equal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
- Any
ImageView
being sampled with aSamplerReductionModeCreateInfo
::reductionMode
equal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
as a result of this command must sample withFILTER_CUBIC_EXT
- If
the
selectableCubicWeights
feature is not enabled, then any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must haveSamplerCubicWeightsCreateInfoQCOM
::cubicWeights
equal toCUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
- Any
Image
created with aImageCreateInfo
::flags
containingIMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using aSamplerAddressMode
ofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
- For any
ImageView
being written as a storage image where the image format field of theOpTypeImage
isUnknown
, the view’s format features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
- For any
ImageView
being read as a storage image where the image format field of theOpTypeImage
isUnknown
, the view’s format features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
- For any
BufferView
being written as a storage texel buffer where the image format field of theOpTypeImage
isUnknown
, the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
- Any
BufferView
being read as a storage texel buffer where the image format field of theOpTypeImage
isUnknown
then 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
PipelineLayout
that is compatible for set n, with thePipelineLayout
orDescriptorSetLayout
array that was used to create the currentPipeline
orShaderEXT
, 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
PipelineLayout
that is compatible for push constants, with thePipelineLayout
orDescriptorSetLayout
andPushConstantRange
arrays used to create the currentPipeline
orShaderEXT
, 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
PipelineLayout
that is compatible for push constants, with thePipelineLayout
orDescriptorSetLayout
andPushConstantRange
arrays used to create the currentPipeline
orShaderEXT
, as described in ??? - Descriptors in each
bound descriptor set, specified via
cmdBindDescriptorSets
, must be valid if they are statically used by thePipeline
bound to the pipeline bind point used by this command and the boundPipeline
was not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If the descriptors used
by the
Pipeline
bound to the pipeline bind point were specified viacmdBindDescriptorSets
, the boundPipeline
must 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 thePipeline
bound to the pipeline bind point used by this command and the boundPipeline
was created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT
, must be valid if they are dynamically used by anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command - If the descriptors used
by the
Pipeline
bound to the pipeline bind point were specified viacmdSetDescriptorBufferOffsetsEXT
, the boundPipeline
must have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is
dynamically used with a
Pipeline
created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
, the descriptor memory must be resident - If a descriptor is
dynamically used with a
ShaderEXT
created with aDescriptorSetLayout
that 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_HANDLE
shader 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
Pipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound - If the
Pipeline
object bound to the pipeline bind point used by this command or anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from anyImage
with aImageView
of the typeIMAGE_VIEW_TYPE_3D
,IMAGE_VIEW_TYPE_CUBE
,IMAGE_VIEW_TYPE_1D_ARRAY
,IMAGE_VIEW_TYPE_2D_ARRAY
orIMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command or anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions withImplicitLod
,Dref
orProj
in their name, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command or anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command accesses aSampler
object 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
Pipeline
object 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_EXT
orPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
foruniformBuffers
, 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
ShaderEXT
bound 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
Pipeline
object 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_EXT
orPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
forstorageBuffers
, 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
ShaderEXT
bound 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
commandBuffer
is 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
Sampler
orImageView
object that enables sampler Y′CBCR conversion, that object must only be used withOpImageSample*
orOpImageSparseSample*
instructions - If
a bound shader
accesses a
Sampler
orImageView
object that enables sampler Y′CBCR conversion, that object must not use theConstOffset
andOffset
operands - If a
ImageView
is accessed as a result of this command, then the image view’sviewType
must match theDim
operand of theOpTypeImage
as described in ??? - If a
ImageView
is accessed as a result of this command, then the numeric type of the image view’sformat
and theSampled
Type
operand of theOpTypeImage
must match - If a
ImageView
created with a format other thanFORMAT_A8_UNORM_KHR
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the image view’s format - If a
ImageView
created with the formatFORMAT_A8_UNORM_KHR
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have four components - If a
BufferView
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the buffer view’s format - If a
ImageView
with aFormat
that has a 64-bit component width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64 - If a
ImageView
with aFormat
that has a component width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32 - If a
BufferView
with aFormat
that has a 64-bit component width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64 - If a
BufferView
with aFormat
that has a component width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32 - If
the
sparseImageInt64Atomics
feature is not enabled,
Image
objects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command - If
the
sparseImageInt64Atomics
feature is not enabled,
Buffer
objects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command - If
OpImageWeightedSampleQCOM
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
- If
OpImageWeightedSampleQCOM
uses aImageView
as 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
OpImageBoxFilterQCOM
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
- If
OpImageBlockMatchSSDQCOM
is used to read from anImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
- If
OpImageBlockMatchSADQCOM
is used to read from anImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
- If
OpImageBlockMatchSADQCOM
or 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
, orOpImageBlockMatchSADQCOM
uses aSampler
as 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
, orOpImageBlockMatchSADQCOM
uses aSampler
as a result of this command, then the sampler must not have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
- If a
OpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
instruction is used to read from anImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
- If a
OpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
instruction is used to read from anImageView
as a result of this command, then the image view’s format must be a single-component format. - If a
OpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
read 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
maxPipelineRayRecursionDepth
used to create the bound ray tracing pipeline -
commandBuffer
must not be a protected command buffer - If the
buffer from which
indirectDeviceAddress
was queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
buffer from which
indirectDeviceAddress
was queried must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set -
indirectDeviceAddress
must be a multiple of4
- All
device addresses between
indirectDeviceAddress
andindirectDeviceAddress
+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_NV
PhysicalDeviceRayTracingMotionBlurFeaturesNV
::rayTracingMotionBlurPipelineTraceRaysIndirect
feature must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was 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
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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
raygenShaderRecordAddress
was queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object
-
The buffer from which the
raygenShaderRecordAddress
is queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag -
raygenShaderRecordAddress
must be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
-
If the buffer from which
missShaderBindingTableAddress
was queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object -
The buffer from which the
missShaderBindingTableAddress
is queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag -
missShaderBindingTableAddress
must be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
-
missShaderBindingTableStride
must be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
-
missShaderBindingTableStride
must be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
-
If the buffer from which
hitShaderBindingTableAddress
was queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object -
The buffer from which the
hitShaderBindingTableAddress
is queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag -
hitShaderBindingTableAddress
must be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
-
hitShaderBindingTableStride
must be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
-
hitShaderBindingTableStride
must be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
-
If the buffer from which
callableShaderBindingTableAddress
was queried is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object -
The buffer from which the
callableShaderBindingTableAddress
is queried must have been created with theBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag -
callableShaderBindingTableAddress
must be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
-
callableShaderBindingTableStride
must be a multiple ofPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
-
callableShaderBindingTableStride
must be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
- If the currently
bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
,hitShaderBindingTableAddress
must not be zero - If the currently
bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
,hitShaderBindingTableAddress
must not be zero - If the currently
bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
, the shader group handle identified bymissShaderBindingTableAddress
must not be set to zero - If the currently
bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, entries in the table identified byhitShaderBindingTableAddress
accessed 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
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, entries in the table identified byhitShaderBindingTableAddress
accessed 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
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, entries in the table identified byhitShaderBindingTableAddress
accessed 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
hitShaderBindingTableAddress
accessed by this call from a geometry with ageometryType
ofGEOMETRY_TYPE_TRIANGLES_KHR
must have been created withRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
-
Any non-zero hit shader group entries in the table identified by
hitShaderBindingTableAddress
accessed by this call from a geometry with ageometryType
ofGEOMETRY_TYPE_AABBS_KHR
must have been created withRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
-
width
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] ×PhysicalDeviceLimits
::maxComputeWorkGroupSize
[0] -
height
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] ×PhysicalDeviceLimits
::maxComputeWorkGroupSize
[1] -
depth
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2] ×PhysicalDeviceLimits
::maxComputeWorkGroupSize
[2] -
width
×height
×depth
must be less than or equal toPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxRayDispatchInvocationCount
See Also
VK_KHR_ray_tracing_maintenance1,
VK_KHR_ray_tracing_pipeline,
DeviceAddress
,
DeviceSize
TraceRaysIndirectCommand2KHR | |
|
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
PhysicalDeviceRayTracingMaintenance1FeaturesKHR | |
|
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 #