From ed93cbd4621c6a0c0ffaa272951e1990732df18f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C3=ADas=20Locatti?=
 <42481638+goldenx86@users.noreply.github.com>
Date: Wed, 28 Jun 2023 20:10:27 -0300
Subject: [PATCH] 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 70436cf1c5..421e71e5a1 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -528,6 +528,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;