From 6977658443a8ab9087bf26867c6a425bf8602b19 Mon Sep 17 00:00:00 2001 From: lightningterror Date: Tue, 28 Mar 2017 23:02:19 +0200 Subject: [PATCH] GSdx ogl: SSO Workaround for AMD buggy drivers (#1858) GSdx ogl: SSO Workaround for AMD buggy drivers All 2017 drivers are now blacklisted. The BSOD/crash issue is still there so don't set Blending Accuracy to None! Shortened the message in the console making it more appealing. --- plugins/GSdx/GLLoader.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/plugins/GSdx/GLLoader.cpp b/plugins/GSdx/GLLoader.cpp index f30f7fc3e3149..4668bdb9d30cc 100644 --- a/plugins/GSdx/GLLoader.cpp +++ b/plugins/GSdx/GLLoader.cpp @@ -335,12 +335,12 @@ namespace GLLoader { fprintf(stdout, "OpenGL information. GPU: %s. Vendor: %s. Driver: %s\n", glGetString(GL_RENDERER), vendor, &s[v]); // Name changed but driver is still bad! - if (strstr(vendor, "ATI") || strstr(vendor, "Advanced Micro Devices")) + if (strstr(vendor, "Advanced Micro Devices") || strstr(vendor, "ATI Technologies Inc.") || strstr(vendor, "ATI")) fglrx_buggy_driver = true; if (fglrx_buggy_driver && ( - strstr((const char*)&s[v], " 15.") || // blacklist all 2015 drivers - strstr((const char*)&s[v], " 16.") || // And all 2016 drivers. Good jobs AMD ! - strstr((const char*)&s[v], " 17.1") // In doubt take also first 2017 driver + strstr((const char*)&s[v], " 15.") || // Blacklist all 2015 AMD drivers. + strstr((const char*)&s[v], " 16.") || // Blacklist all 2016 AMD drivers. + strstr((const char*)&s[v], " 17.") // Blacklist all 2017 AMD drivers for now. )) legacy_fglrx_buggy_driver = true; @@ -355,7 +355,7 @@ namespace GLLoader { mesa_buggy_driver = !nvidia_buggy_driver && !fglrx_buggy_driver; #endif - buggy_sso_dual_src = intel_buggy_driver || legacy_fglrx_buggy_driver; + buggy_sso_dual_src = intel_buggy_driver || fglrx_buggy_driver || legacy_fglrx_buggy_driver; if (theApp.GetConfigI("override_geometry_shader") != -1) { found_geometry_shader = theApp.GetConfigB("override_geometry_shader"); @@ -437,12 +437,9 @@ namespace GLLoader { status &= status_and_override(found_GL_ARB_get_texture_sub_image, "GL_ARB_get_texture_sub_image"); if (fglrx_buggy_driver) { - fprintf(stderr, "The OpenGL hardware renderer is slow on AMD GPUs due to an inefficient driver. Check out the links below for further information.\n" - "https://community.amd.com/message/2756964\n" - "https://community.amd.com/thread/205702\n" - "Note: Due to an AMD OpenGL driver issue, setting Blending Unit Accuracy to \"None\" can cause an application or system crash.\n" - "Keep Blending Unit Accuracy set to at least the default \"Basic\" level.\n" - "AMD has a fix for the issue that will be released in the coming months. The issue does not affect AMD GPUs on legacy drivers.\n"); + fprintf(stderr, "The OpenGL hardware renderer is slow on AMD GPUs due to an inefficient driver.\n" + "Check out the link below for further information.\n" + "https://github.com/PCSX2/pcsx2/wiki/OpenGL-and-AMD-GPUs---All-you-need-to-know\n"); } if (!found_GL_ARB_viewport_array) {