diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2023-01-07 10:41:37 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-07 10:41:37 -0600 |
commit | 432d48d9c8fb179374b7b591743851b9331f9c96 (patch) | |
tree | ce7d6dd08a2883a9950c9f625ab2ac8cee289052 /src | |
parent | cc92b7fd94a1a86da4a765eaa0756642907d95dc (diff) | |
parent | 2e4dde12c7316a0bb5ab46da88601b7942013568 (diff) |
Merge pull request #9570 from liamwhite/less-clock-boost
renderer_vulkan: disable clock boost on unvalidated devices
Diffstat (limited to 'src')
-rw-r--r-- | src/video_core/renderer_vulkan/renderer_vulkan.cpp | 2 | ||||
-rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 12 | ||||
-rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index 1578cb2067..52855120c1 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -110,7 +110,7 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_, screen_info), rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator, state_tracker, scheduler) { - if (Settings::values.renderer_force_max_clock.GetValue()) { + if (Settings::values.renderer_force_max_clock.GetValue() && device.ShouldBoostClocks()) { turbo_mode.emplace(instance, dld); } Report(); diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 07c984c5e8..fd1c5a683e 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -991,6 +991,18 @@ std::string Device::GetDriverName() const { } } +bool Device::ShouldBoostClocks() const { + const bool validated_driver = + driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE || + driver_id == VK_DRIVER_ID_MESA_RADV || driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY || + driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS || + driver_id == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA; + + const bool is_steam_deck = properties.vendorID == 0x1002 && properties.deviceID == 0x163F; + + return validated_driver && !is_steam_deck; +} + static std::vector<const char*> ExtensionsRequiredForInstanceVersion(u32 available_version) { std::vector<const char*> extensions{REQUIRED_EXTENSIONS.begin(), REQUIRED_EXTENSIONS.end()}; diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 6042046e12..4bc2671632 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -106,6 +106,8 @@ public: return driver_id; } + bool ShouldBoostClocks() const; + /// Returns uniform buffer alignment requeriment. VkDeviceSize GetUniformBufferAlignment() const { return properties.limits.minUniformBufferOffsetAlignment; |