diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index da5339ca..d5abfb3a 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -70,6 +70,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] = VK_EXTENSION_COND(KHR_DEFERRED_HOST_OPERATIONS, KHR_deferred_host_operations, VKD3D_CONFIG_FLAG_DXR), VK_EXTENSION_COND(KHR_PIPELINE_LIBRARY, KHR_pipeline_library, VKD3D_CONFIG_FLAG_DXR), VK_EXTENSION_COND(KHR_RAY_QUERY, KHR_ray_query, VKD3D_CONFIG_FLAG_DXR11), + VK_EXTENSION_COND(KHR_RAY_TRACING_MAINTENANCE_1, KHR_ray_tracing_maintenance1, VKD3D_CONFIG_FLAG_DXR11), VK_EXTENSION(KHR_SPIRV_1_4, KHR_spirv_1_4), VK_EXTENSION(KHR_SHADER_FLOAT_CONTROLS, KHR_shader_float_controls), VK_EXTENSION(KHR_FRAGMENT_SHADING_RATE, KHR_fragment_shading_rate), @@ -1354,6 +1355,12 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i vk_prepend_struct(&info->features2, &info->ray_query_features); } + if (vulkan_info->KHR_ray_tracing_maintenance1) + { + info->ray_tracing_maintenance1_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR; + vk_prepend_struct(&info->features2, &info->ray_tracing_maintenance1_features); + } + if (vulkan_info->KHR_shader_float_controls) { info->float_control_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR; diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h index 877e3442..8fee4008 100644 --- a/libs/vkd3d/vkd3d_private.h +++ b/libs/vkd3d/vkd3d_private.h @@ -133,6 +133,7 @@ struct vkd3d_vulkan_info bool KHR_driver_properties; bool KHR_uniform_buffer_standard_layout; bool KHR_maintenance4; + bool KHR_ray_tracing_maintenance1; /* EXT device extensions */ bool EXT_calibrated_timestamps; bool EXT_conditional_rendering; @@ -3073,6 +3074,7 @@ struct vkd3d_physical_device_info VkPhysicalDeviceDynamicRenderingFeaturesKHR dynamic_rendering_features; VkPhysicalDeviceCoherentMemoryFeaturesAMD device_coherent_memory_features_amd; VkPhysicalDeviceMaintenance4FeaturesKHR maintenance4_features; + VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR ray_tracing_maintenance1_features; VkPhysicalDeviceFeatures2 features2; diff --git a/libs/vkd3d/vulkan_procs.h b/libs/vkd3d/vulkan_procs.h index c3b37257..e65bb8be 100644 --- a/libs/vkd3d/vulkan_procs.h +++ b/libs/vkd3d/vulkan_procs.h @@ -280,6 +280,9 @@ VK_DEVICE_EXT_PFN(vkQueuePresentKHR) VK_DEVICE_EXT_PFN(vkCmdBeginRenderingKHR) VK_DEVICE_EXT_PFN(vkCmdEndRenderingKHR) +/* VK_KHR_ray_tracing_maintenance1 */ +VK_DEVICE_EXT_PFN(vkCmdTraceRaysIndirect2KHR) + /* VK_AMD_buffer_marker */ VK_DEVICE_EXT_PFN(vkCmdWriteBufferMarkerAMD)