From 3ca86ca6b2c2afb4c53dca099a4c81ff057a64de Mon Sep 17 00:00:00 2001 From: Moonlacer <79172044+Moonlacer@users.noreply.github.com> Date: Sun, 30 Jul 2023 00:21:51 -0500 Subject: [PATCH 1/5] Revert "Revert "Blacklist EDS3 blending from new AMD drivers"" --- src/video_core/vulkan_common/vulkan_device.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 9c6fbb918f..e04852e016 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -554,6 +554,14 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } sets_per_pool = 64; + if (extensions.extended_dynamic_state3 && is_amd_driver && + properties.properties.driverVersion >= VK_MAKE_API_VERSION(0, 2, 0, 270)) { + LOG_WARNING(Render_Vulkan, + "AMD drivers after 23.5.2 have broken extendedDynamicState3ColorBlendEquation"); + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false; + dynamic_state3_blending = false; + } if (is_amd_driver) { // AMD drivers need a higher amount of Sets per Pool in certain circumstances like in XC2. sets_per_pool = 96; From 30a5e8e165f84b23d6f240e97e2b84ba51347230 Mon Sep 17 00:00:00 2001 From: Moonlacer Date: Sun, 30 Jul 2023 04:01:29 -0500 Subject: [PATCH 2/5] Address feedback and change log warning --- src/video_core/vulkan_common/vulkan_device.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index e04852e016..d965e8718d 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -554,10 +554,10 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } sets_per_pool = 64; - if (extensions.extended_dynamic_state3 && is_amd_driver && - properties.properties.driverVersion >= VK_MAKE_API_VERSION(0, 2, 0, 270)) { + if (extensions.extended_dynamic_state3 && is_amd_driver && !features.shader_float16_int8.shaderFloat16 && + properties.properties.driverVersion >= VK_MAKE_API_VERSION(0, 2, 0, 258)) { LOG_WARNING(Render_Vulkan, - "AMD drivers after 23.5.2 have broken extendedDynamicState3ColorBlendEquation"); + "AMD's GCN4 architecture has broken extendedDynamicState3ColorBlendEquation"); features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false; dynamic_state3_blending = false; From 699ab3050c0745aa2c8d32c5ad82633c194788f3 Mon Sep 17 00:00:00 2001 From: Moonlacer Date: Sun, 30 Jul 2023 04:29:51 -0500 Subject: [PATCH 3/5] Formatting fix --- src/video_core/vulkan_common/vulkan_device.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index d965e8718d..cd6b06999e 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -554,7 +554,8 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } sets_per_pool = 64; - if (extensions.extended_dynamic_state3 && is_amd_driver && !features.shader_float16_int8.shaderFloat16 && + if (extensions.extended_dynamic_state3 && is_amd_driver && + !features.shader_float16_int8.shaderFloat16 && properties.properties.driverVersion >= VK_MAKE_API_VERSION(0, 2, 0, 258)) { LOG_WARNING(Render_Vulkan, "AMD's GCN4 architecture has broken extendedDynamicState3ColorBlendEquation"); From 4aa1ebb8025b5757694a890a8efea531eb5245ae Mon Sep 17 00:00:00 2001 From: Moonlacer Date: Sun, 30 Jul 2023 22:50:22 -0500 Subject: [PATCH 4/5] Match log warning --- src/video_core/vulkan_common/vulkan_device.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index cd6b06999e..11508688a8 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -558,7 +558,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR !features.shader_float16_int8.shaderFloat16 && properties.properties.driverVersion >= VK_MAKE_API_VERSION(0, 2, 0, 258)) { LOG_WARNING(Render_Vulkan, - "AMD's GCN4 architecture has broken extendedDynamicState3ColorBlendEquation"); + "AMD GCN4 has broken extendedDynamicState3ColorBlendEquation"); features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false; dynamic_state3_blending = false; From 00ba53057fb16854ae7f3dda7b4128668273f24f Mon Sep 17 00:00:00 2001 From: Moonlacer Date: Sun, 30 Jul 2023 23:02:07 -0500 Subject: [PATCH 5/5] Formatting fix --- src/video_core/vulkan_common/vulkan_device.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 11508688a8..78918f9968 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -557,8 +557,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR if (extensions.extended_dynamic_state3 && is_amd_driver && !features.shader_float16_int8.shaderFloat16 && properties.properties.driverVersion >= VK_MAKE_API_VERSION(0, 2, 0, 258)) { - LOG_WARNING(Render_Vulkan, - "AMD GCN4 has broken extendedDynamicState3ColorBlendEquation"); + LOG_WARNING(Render_Vulkan, "AMD GCN4 has broken extendedDynamicState3ColorBlendEquation"); features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false; dynamic_state3_blending = false;