OverviewFilesCommitsIssuesDocsReleasesPeers

nvidia-rtx-godot commits / 58478bd

Enable CLAS feature + fix duplicate PathtracingDenoiser enum
- Remove duplicate VARIANT_ENUM_CAST(PathtracingDenoiser) from environment.h (already cast in rendering_server.h via VARIANT_ENUM_CAST_EXT) - Add VkPhysicalDeviceClusterAccelerationStructureFeaturesNV to device feature query chain and device creation pNext chain - Without feature enablement, CLAS function pointers resolve but GPU commands cause VK_ERROR_DEVICE_LOST Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
58478bd9c2f97b21f3c3ea0252b5fdfd2ab807ff
by plankatron <fleeky@gmail.com> · 2026-03-25T14:11:01.000Z

Changed files (2) +22 -0

drivers/vulkan/rendering_device_driver_vulkan.cpp +21 -0
……@@ -594,6 +594,8 @@ Error RenderingDeviceDriverVulkan::_initialize_device_extensions() {
594594 _register_requested_device_extension(VK_KHR_RAY_QUERY_EXTENSION_NAME, false);
595595 _register_requested_device_extension(VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME, false);
596596 _register_requested_device_extension(VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME, false);
597 _register_requested_device_extension(VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME, false);
598 _register_requested_device_extension(VK_NV_MESH_SHADER_EXTENSION_NAME, false);
597599 _register_requested_device_extension(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME, false);
598600
599601 // We don't actually use this extension, but some runtime components on some platforms
……@@ -858,6 +860,7 @@ Error RenderingDeviceDriverVulkan::_check_device_capabilities() {
858860 VkPhysicalDeviceRayQueryFeaturesKHR ray_query_features = {};
859861 VkPhysicalDeviceSynchronization2FeaturesKHR sync_2_features = {};
860862 VkPhysicalDeviceRayTracingValidationFeaturesNV raytracing_validation_features = {};
863 VkPhysicalDeviceClusterAccelerationStructureFeaturesNV clas_features = {};
861864
862865 const bool use_1_2_features = physical_device_properties.apiVersion >= VK_API_VERSION_1_2;
863866 if (use_1_2_features) {
……@@ -930,6 +933,12 @@ Error RenderingDeviceDriverVulkan::_check_device_capabilities() {
930933 next_features = &acceleration_structure_features;
931934 }
932935
936 if (enabled_device_extension_names.has(VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME)) {
937 clas_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV;
938 clas_features.pNext = next_features;
939 next_features = &clas_features;
940 }
941
933942 if (enabled_device_extension_names.has(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)) {
934943 raytracing_pipeline_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
935944 raytracing_pipeline_features.pNext = next_features;
……@@ -1049,6 +1058,10 @@ Error RenderingDeviceDriverVulkan::_check_device_capabilities() {
10491058 acceleration_structure_capabilities.acceleration_structure_support = acceleration_structure_features.accelerationStructure;
10501059 }
10511060
1061 if (enabled_device_extension_names.has(VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME)) {
1062 acceleration_structure_capabilities.cluster_acceleration_structure_support = clas_features.clusterAccelerationStructure;
1063 }
1064
10521065 if (enabled_device_extension_names.has(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)) {
10531066 raytracing_capabilities.raytracing_pipeline_support = raytracing_pipeline_features.rayTracingPipeline;
10541067 raytracing_capabilities.validation = raytracing_validation_features.rayTracingValidation;
……@@ -1428,6 +1441,14 @@ Error RenderingDeviceDriverVulkan::_initialize_device(const LocalVector<VkDevice
14281441 create_info_next = &raytracing_validation_features;
14291442 }
14301443
1444 VkPhysicalDeviceClusterAccelerationStructureFeaturesNV clas_features = {};
1445 if (acceleration_structure_capabilities.cluster_acceleration_structure_support) {
1446 clas_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV;
1447 clas_features.pNext = create_info_next;
1448 clas_features.clusterAccelerationStructure = VK_TRUE;
1449 create_info_next = &clas_features;
1450 }
1451
14311452 VkPhysicalDeviceVulkan11Features vulkan_1_1_features = {};
14321453 VkPhysicalDeviceVulkan12Features vulkan_1_2_features = {};
14331454 VkPhysicalDevice16BitStorageFeaturesKHR storage_features = {};
drivers/vulkan/rendering_device_driver_vulkan.h +1 -0
……@@ -98,6 +98,7 @@ class RenderingDeviceDriverVulkan : public RenderingDeviceDriver {
9898 struct AccelerationStructureCapabilities {
9999 bool acceleration_structure_support = false;
100100 uint32_t min_acceleration_structure_scratch_offset_alignment = 0;
101 bool cluster_acceleration_structure_support = false;
101102 };
102103
103104 struct RaytracingCapabilities {