فهرست منبع

Merge pull request #11204 from liamwhite/eds3-blend-amd

vulkan_device: disable EDS3 blending on all AMD drivers
Matías Locatti 3 سال پیش
والد
کامیت
36aca262e3
1فایلهای تغییر یافته به همراه7 افزوده شده و 8 حذف شده
  1. 7 8
      src/video_core/vulkan_common/vulkan_device.cpp

+ 7 - 8
src/video_core/vulkan_common/vulkan_device.cpp

@@ -525,6 +525,13 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
             dynamic_state3_enables = false;
             dynamic_state3_enables = false;
         }
         }
     }
     }
+    if (extensions.extended_dynamic_state3 && is_amd_driver) {
+        LOG_WARNING(Render_Vulkan,
+                    "AMD drivers have broken extendedDynamicState3ColorBlendEquation");
+        features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false;
+        features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false;
+        dynamic_state3_blending = false;
+    }
     if (extensions.vertex_input_dynamic_state && is_radv) {
     if (extensions.vertex_input_dynamic_state && is_radv) {
         // TODO(ameerj): Blacklist only offending driver versions
         // TODO(ameerj): Blacklist only offending driver versions
         // TODO(ameerj): Confirm if RDNA1 is affected
         // TODO(ameerj): Confirm if RDNA1 is affected
@@ -553,14 +560,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
     }
     }
 
 
     sets_per_pool = 64;
     sets_per_pool = 64;
-    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");
-        features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false;
-        features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false;
-        dynamic_state3_blending = false;
-    }
     if (is_amd_driver) {
     if (is_amd_driver) {
         // AMD drivers need a higher amount of Sets per Pool in certain circumstances like in XC2.
         // AMD drivers need a higher amount of Sets per Pool in certain circumstances like in XC2.
         sets_per_pool = 96;
         sets_per_pool = 96;