summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorph <39850852+Morph1984@users.noreply.github.com>2021-09-13 23:33:15 +0200
committerGitHub <noreply@github.com>2021-09-13 23:33:15 +0200
commitd86a9b9a4b693b720c63c08da3220869de49ecc9 (patch)
treeecb6b4f2ed4d35fa886bff02403b20a8c8e5bbd4
parentMerge pull request #7006 from FernandoS27/a-motherfucking-driver (diff)
parentVulkan: Disable VK_EXT_SAMPLER_FILTER_MINMAX in GCN AMD since it's broken. (diff)
downloadyuzu-d86a9b9a4b693b720c63c08da3220869de49ecc9.tar
yuzu-d86a9b9a4b693b720c63c08da3220869de49ecc9.tar.gz
yuzu-d86a9b9a4b693b720c63c08da3220869de49ecc9.tar.bz2
yuzu-d86a9b9a4b693b720c63c08da3220869de49ecc9.tar.lz
yuzu-d86a9b9a4b693b720c63c08da3220869de49ecc9.tar.xz
yuzu-d86a9b9a4b693b720c63c08da3220869de49ecc9.tar.zst
yuzu-d86a9b9a4b693b720c63c08da3220869de49ecc9.zip
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 2caf98c7c..24fb50db9 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -599,6 +599,26 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
ext_extended_dynamic_state = false;
}
}
+
+ sets_per_pool = 64;
+ if (driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE) {
+ // AMD drivers need a higher amount of Sets per Pool in certain circunstances like in XC2.
+ sets_per_pool = 96;
+ }
+
+ const bool is_amd = driver_id == VK_DRIVER_ID_AMD_PROPRIETARY ||
+ driver_id == VK_DRIVER_ID_MESA_RADV ||
+ driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE;
+ if (ext_sampler_filter_minmax && is_amd) {
+ // Disable ext_sampler_filter_minmax on AMD GCN4 and lower as it is broken.
+ if (!is_float16_supported) {
+ LOG_WARNING(
+ Render_Vulkan,
+ "Blacklisting AMD GCN4 and lower for VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME");
+ ext_sampler_filter_minmax = false;
+ }
+ }
+
if (ext_vertex_input_dynamic_state && driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) {
LOG_WARNING(Render_Vulkan, "Blacklisting Intel for VK_EXT_vertex_input_dynamic_state");
ext_vertex_input_dynamic_state = false;
@@ -611,12 +631,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
graphics_queue = logical.GetQueue(graphics_family);
present_queue = logical.GetQueue(present_family);
-
- sets_per_pool = 64;
- if (driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE) {
- // AMD drivers need a higher amount of Sets per Pool in certain circunstances like in XC2.
- sets_per_pool = 96;
- }
}
Device::~Device() = default;