summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2016-01-09 12:07:08 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2016-01-09 15:09:37 -0600
commitb4eb5d8e3f4ae464e680b102ccfbecbcb807b22c (patch)
tree7b903c96dee05f06342e1e98a9803fc821eab71a
parent5db10d83f70a4f88e6d1cfdfad7db176e3a2de0e (diff)
Disable geometry shaders on mesa AMD/ATI drivers.
Causes misrenderings in games that uses them.
-rw-r--r--Source/Core/VideoBackends/OGL/Render.cpp2
-rw-r--r--Source/Core/VideoCommon/DriverDetails.cpp1
-rw-r--r--Source/Core/VideoCommon/DriverDetails.h8
3 files changed, 10 insertions, 1 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp
index 67672a0460..b44aa98287 100644
--- a/Source/Core/VideoBackends/OGL/Render.cpp
+++ b/Source/Core/VideoBackends/OGL/Render.cpp
@@ -385,7 +385,7 @@ Renderer::Renderer()
g_Config.backend_info.bSupportsBBox = GLExtensions::Supports("GL_ARB_shader_storage_buffer_object");
g_Config.backend_info.bSupportsGSInstancing = GLExtensions::Supports("GL_ARB_gpu_shader5");
g_Config.backend_info.bSupportsSSAA = GLExtensions::Supports("GL_ARB_gpu_shader5") && GLExtensions::Supports("GL_ARB_sample_shading");
- g_Config.backend_info.bSupportsGeometryShaders = GLExtensions::Version() >= 320;
+ g_Config.backend_info.bSupportsGeometryShaders = GLExtensions::Version() >= 320 && !DriverDetails::HasBug(DriverDetails::BUG_BROKENGEOMETRYSHADERS);
g_Config.backend_info.bSupportsPaletteConversion = GLExtensions::Supports("GL_ARB_texture_buffer_object") ||
GLExtensions::Supports("GL_OES_texture_buffer") ||
GLExtensions::Supports("GL_EXT_texture_buffer");
diff --git a/Source/Core/VideoCommon/DriverDetails.cpp b/Source/Core/VideoCommon/DriverDetails.cpp
index 0def5e5734..fd7475f8ac 100644
--- a/Source/Core/VideoCommon/DriverDetails.cpp
+++ b/Source/Core/VideoCommon/DriverDetails.cpp
@@ -51,6 +51,7 @@ namespace DriverDetails
{OS_ALL, VENDOR_IMGTEC, DRIVER_IMGTEC, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
{OS_ALL, VENDOR_MESA, DRIVER_NOUVEAU, -1, BUG_BROKENUBO, 900, 916, true},
{OS_ALL, VENDOR_MESA, DRIVER_R600, -1, BUG_BROKENUBO, 900, 913, true},
+ {OS_ALL, VENDOR_MESA, DRIVER_R600, -1, BUG_BROKENGEOMETRYSHADERS, -1.0, -1.0, true},
{OS_ALL, VENDOR_MESA, DRIVER_I965, -1, BUG_BROKENUBO, 900, 920, true},
{OS_ALL, VENDOR_MESA, DRIVER_ALL, -1, BUG_BROKENCOPYIMAGE, -1.0, 1064.0, true},
{OS_LINUX, VENDOR_ATI, DRIVER_ATI, -1, BUG_BROKENPINNEDMEMORY, -1.0, -1.0, true},
diff --git a/Source/Core/VideoCommon/DriverDetails.h b/Source/Core/VideoCommon/DriverDetails.h
index cf519fd506..10369d4f89 100644
--- a/Source/Core/VideoCommon/DriverDetails.h
+++ b/Source/Core/VideoCommon/DriverDetails.h
@@ -180,6 +180,14 @@ namespace DriverDetails
// Example alpha test path
// if(( (prev.a > alphaRef.r) && (prev.a > alphaRef.g)) == false) {
BUG_BROKENALPHATEST,
+
+ // Bug: Broken lines in geometry shaders
+ // Affected Devices: Mesa r600/radeonsi
+ // Started Version: -1
+ // Ended Version: -1
+ // Mesa inroduced geometry shader support for radeon devices and failed to test it with us.
+ // Causes misrenderings on a large amount of things that draw lines.
+ BUG_BROKENGEOMETRYSHADERS,
};
// Initializes our internal vendor, device family, and driver version