blob: b93a11610bae746fb4ff366f2ae19bad5f10ca6d [file] [log] [blame]
// Copyright 2019-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0
// Common Valid Usage
// Common to KHR trace rays commands
* [[VUID-{refpage}-maxPipelineRayRecursionDepth-03679]]
This command must: not cause a shader call instruction to be executed
from a shader invocation with a <<ray-tracing-recursion-depth, recursion
depth>> greater than the value of pname:maxPipelineRayRecursionDepth
used to create the bound ray tracing pipeline
* [[VUID-{refpage}-pRayGenShaderBindingTable-03680]]
If the buffer from which pname:pRayGenShaderBindingTable->deviceAddress
was queried is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-{refpage}-pRayGenShaderBindingTable-03681]]
The buffer from which the pname:pRayGenShaderBindingTable->deviceAddress
is queried must: have been created with the
ename:VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR usage flag
* [[VUID-{refpage}-pRayGenShaderBindingTable-03682]]
pname:pRayGenShaderBindingTable->deviceAddress must: be a multiple of
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupBaseAlignment
* [[VUID-{refpage}-size-04023]]
The pname:size member of pname:pRayGenShaderBindingTable must: be equal
to its pname:stride member
* [[VUID-{refpage}-pMissShaderBindingTable-03683]]
If the buffer from which pname:pMissShaderBindingTable->deviceAddress
was queried is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-{refpage}-pMissShaderBindingTable-03684]]
The buffer from which the pname:pMissShaderBindingTable->deviceAddress
is queried must: have been created with the
ename:VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR usage flag
* [[VUID-{refpage}-pMissShaderBindingTable-03685]]
pname:pMissShaderBindingTable->deviceAddress must: be a multiple of
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupBaseAlignment
* [[VUID-{refpage}-stride-03686]]
The pname:stride member of pname:pMissShaderBindingTable must: be a
multiple of
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupHandleAlignment
* [[VUID-{refpage}-stride-04029]]
The pname:stride member of pname:pMissShaderBindingTable must: be less
than or equal to
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:maxShaderGroupStride
* [[VUID-{refpage}-pHitShaderBindingTable-03687]]
If the buffer from which pname:pHitShaderBindingTable->deviceAddress was
queried is non-sparse then it must: be bound completely and contiguously
to a single sname:VkDeviceMemory object
* [[VUID-{refpage}-pHitShaderBindingTable-03688]]
The buffer from which the pname:pHitShaderBindingTable->deviceAddress is
queried must: have been created with the
ename:VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR usage flag
* [[VUID-{refpage}-pHitShaderBindingTable-03689]]
pname:pHitShaderBindingTable->deviceAddress must: be a multiple of
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupBaseAlignment
* [[VUID-{refpage}-stride-03690]]
The pname:stride member of pname:pHitShaderBindingTable must: be a
multiple of
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupHandleAlignment
* [[VUID-{refpage}-stride-04035]]
The pname:stride member of pname:pHitShaderBindingTable must: be less
than or equal to
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:maxShaderGroupStride
* [[VUID-{refpage}-pCallableShaderBindingTable-03691]]
If the buffer from which
pname:pCallableShaderBindingTable->deviceAddress was queried is
non-sparse then it must: be bound completely and contiguously to a
single sname:VkDeviceMemory object
* [[VUID-{refpage}-pCallableShaderBindingTable-03692]]
The buffer from which the
pname:pCallableShaderBindingTable->deviceAddress is queried must: have
been created with the ename:VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag
* [[VUID-{refpage}-pCallableShaderBindingTable-03693]]
pname:pCallableShaderBindingTable->deviceAddress must: be a multiple of
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupBaseAlignment
* [[VUID-{refpage}-stride-03694]]
The pname:stride member of pname:pCallableShaderBindingTable must: be a
multiple of
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupHandleAlignment
* [[VUID-{refpage}-stride-04041]]
The pname:stride member of pname:pCallableShaderBindingTable must: be
less than or equal to
sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:maxShaderGroupStride
* [[VUID-{refpage}-flags-03696]]
If the currently bound ray tracing pipeline was created with pname:flags
that included
ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR,
the pname:deviceAddress member of pname:pHitShaderBindingTable must: not
be zero
* [[VUID-{refpage}-flags-03697]]
If the currently bound ray tracing pipeline was created with pname:flags
that included
ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR,
the pname:deviceAddress member of pname:pHitShaderBindingTable must: not
be zero
* [[VUID-{refpage}-flags-03511]]
If the currently bound ray tracing pipeline was created with pname:flags
that included
ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the
shader group handle identified by pname:pMissShaderBindingTable must:
not be set to zero
* [[VUID-{refpage}-flags-03512]]
If the currently bound ray tracing pipeline was created with pname:flags
that included
ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR,
entries in pname:pHitShaderBindingTable accessed as a result of this
command in order to execute an any-hit shader must: not be set to zero
* [[VUID-{refpage}-flags-03513]]
If the currently bound ray tracing pipeline was created with pname:flags
that included
ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR,
entries in pname:pHitShaderBindingTable accessed as a result of this
command in order to execute a closest hit shader must: not be set to
zero
* [[VUID-{refpage}-flags-03514]]
If the currently bound ray tracing pipeline was created with pname:flags
that included
ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR,
entries in pname:pHitShaderBindingTable accessed as a result of this
command in order to execute an intersection shader must: not be set to
zero
* [[VUID-{refpage}-pHitShaderBindingTable-04735]]
Any non-zero hit shader group entries in pname:pHitShaderBindingTable
accessed by this call from a geometry with a pname:geometryType of
ename:VK_GEOMETRY_TYPE_TRIANGLES_KHR must: have been created with
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
* [[VUID-{refpage}-pHitShaderBindingTable-04736]]
Any non-zero hit shader group entries in pname:pHitShaderBindingTable
accessed by this call from a geometry with a pname:geometryType of
ename:VK_GEOMETRY_TYPE_AABBS_KHR must: have been created with
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
// Common Valid Usage