diff options
Diffstat (limited to 'tools/gfx/vulkan/vk-device.cpp')
| -rw-r--r-- | tools/gfx/vulkan/vk-device.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/gfx/vulkan/vk-device.cpp b/tools/gfx/vulkan/vk-device.cpp index 4fbf987e9..bed9c038a 100644 --- a/tools/gfx/vulkan/vk-device.cpp +++ b/tools/gfx/vulkan/vk-device.cpp @@ -405,6 +405,10 @@ Result DeviceImpl::initVulkanInstanceAndDevice( extendedFeatures.rayTracingPipelineFeatures.pNext = deviceFeatures2.pNext; deviceFeatures2.pNext = &extendedFeatures.rayTracingPipelineFeatures; + // SER features. + extendedFeatures.rayTracingInvocationReorderFeatures.pNext = deviceFeatures2.pNext; + deviceFeatures2.pNext = &extendedFeatures.rayTracingInvocationReorderFeatures; + // Acceleration structure features extendedFeatures.accelerationStructureFeatures.pNext = deviceFeatures2.pNext; deviceFeatures2.pNext = &extendedFeatures.accelerationStructureFeatures; @@ -582,6 +586,16 @@ Result DeviceImpl::initVulkanInstanceAndDevice( m_features.add("mesh-shader"); } + if (extendedFeatures.rayTracingInvocationReorderFeatures.rayTracingInvocationReorder) + { + deviceExtensions.add(VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME); + + extendedFeatures.rayTracingInvocationReorderFeatures.pNext = (void*)deviceCreateInfo.pNext; + deviceCreateInfo.pNext = &extendedFeatures.rayTracingInvocationReorderFeatures; + + m_features.add("shader-execution-reorder"); + } + if (_hasAnySetBits( extendedFeatures.vulkan12Features, offsetof(VkPhysicalDeviceVulkan12Features, pNext) + sizeof(void*))) |
