diff options
| author | bunnei <bunneidev@gmail.com> | 2023-07-03 23:48:41 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-03 23:48:41 -0700 |
| commit | bfa270e59bfca3abdfcb3653b4f405c3fb9d2e08 (patch) | |
| tree | 2d3b0a10a59f3894f1ab181a6a52d4d282604cbe /src/video_core/vulkan_common/vulkan_device.cpp | |
| parent | d8cda2c0b64a4b6f6f5893118bfcc6456896c1d0 (diff) | |
| parent | 66a20ecbc78a4fbcfdfca86be991b6e42672fa46 (diff) | |
Merge pull request #11017 from bunnei/fix-turnip-sd870
video_core: vulkan_device: Disable timeline semaphore on Turnip, fix qcom version check.
Diffstat (limited to 'src/video_core/vulkan_common/vulkan_device.cpp')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 99ca7dbdaa..e04852e016 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -500,7 +500,8 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } if (extensions.extended_dynamic_state2 && is_qualcomm) { const u32 version = (properties.properties.driverVersion << 3) >> 3; - if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) { + if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) && + version < VK_MAKE_API_VERSION(0, 0, 680, 0)) { // Qualcomm Adreno 7xx drivers do not properly support extended_dynamic_state2. LOG_WARNING(Render_Vulkan, "Qualcomm Adreno 7xx drivers have broken VK_EXT_extended_dynamic_state2"); @@ -540,7 +541,8 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } if (extensions.vertex_input_dynamic_state && is_qualcomm) { const u32 version = (properties.properties.driverVersion << 3) >> 3; - if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) { + if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) && + version < VK_MAKE_API_VERSION(0, 0, 680, 0)) { // Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state. LOG_WARNING( Render_Vulkan, @@ -798,6 +800,17 @@ bool Device::ShouldBoostClocks() const { return validated_driver && !is_steam_deck && !is_debugging; } +bool Device::HasTimelineSemaphore() const { + if (GetDriverID() == VK_DRIVER_ID_QUALCOMM_PROPRIETARY || + GetDriverID() == VK_DRIVER_ID_MESA_TURNIP) { + // Timeline semaphores do not work properly on all Qualcomm drivers. + // They generally work properly with Turnip drivers, but are problematic on some devices + // (e.g. ZTE handsets with Snapdragon 870). + return false; + } + return features.timeline_semaphore.timelineSemaphore; +} + bool Device::GetSuitability(bool requires_swapchain) { // Assume we will be suitable. bool suitable = true; |
