From 58c76ece13a76f5342b56e5043847c7abda28386 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Sat, 29 Nov 2025 00:24:37 -0400 Subject: [PATCH] [spv, qcom] Ensuring SPV 1.3 --- src/video_core/vulkan_common/vulkan_device.cpp | 9 +++++---- src/video_core/vulkan_common/vulkan_device.h | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index f8db023331..4a7ec0bc51 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1051,11 +1051,12 @@ bool Device::GetSuitability(bool requires_swapchain) { // Vulkan 1.2 and 1.3 features if (instance_version >= VK_API_VERSION_1_2) { features_1_2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES; - features_1_3.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; + SetNext(next, features_1_2); - features_1_2.pNext = &features_1_3; - - *next = &features_1_2; + if (instance_version >= VK_API_VERSION_1_3) { + features_1_3.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; + SetNext(next, features_1_3); + } } // Test all features we know about. If the feature is not available in core at our diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index f1674e32a1..a0342b55ea 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -771,10 +771,11 @@ public: /// Returns the minimum supported version of SPIR-V. u32 SupportedSpirvVersion() const { - if (instance_version >= VK_API_VERSION_1_3) { + const bool has_float_controls = extensions.shader_float_controls; + if (instance_version >= VK_API_VERSION_1_3 && has_float_controls) { return 0x00010600U; } - if (extensions.spirv_1_4) { + if (extensions.spirv_1_4 && has_float_controls) { return 0x00010400U; } return 0x00010300U;