From 6f8cd27cd6aca9f5194bab01c934eaf53c360a87 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 d49ced89b2..45fcdf5f7c 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1076,11 +1076,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 755693feb9..d1d84d9561 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;