From b4e4a4cef44365a93ba980c261bdf2f4b8769fef Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sat, 22 Aug 2015 09:12:19 -0500 Subject: [PATCH] Disable OpenGL ES 3.1 on all Qualcomm Adreno devices. Their new driver that supports GLES3.1 + AEP has issues with it. At the very least they don't implement all of the geometry shader features fully which causes shader linker issues when we attempt to use them. I don't have a device so I can't fully test, so until I do I'm going to blanket disable the whole thing. --- Source/Core/VideoBackends/OGL/Render.cpp | 2 +- Source/Core/VideoCommon/DriverDetails.cpp | 1 + Source/Core/VideoCommon/DriverDetails.h | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index a81eb675b6..e0d48b52e2 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -495,7 +495,7 @@ Renderer::Renderer() if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3) { - if (strstr(g_ogl_config.glsl_version, "3.0")) + if (strstr(g_ogl_config.glsl_version, "3.0") || DriverDetails::HasBug(DriverDetails::BUG_BROKENGLES31)) { g_ogl_config.eSupportedGLSLVersion = GLSLES_300; g_ogl_config.bSupportsAEP = false; diff --git a/Source/Core/VideoCommon/DriverDetails.cpp b/Source/Core/VideoCommon/DriverDetails.cpp index ebd0373d40..219a61dc72 100644 --- a/Source/Core/VideoCommon/DriverDetails.cpp +++ b/Source/Core/VideoCommon/DriverDetails.cpp @@ -52,6 +52,7 @@ namespace DriverDetails {OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENATTRIBUTELESS, -1.0, 94.0, true}, {OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENNEGATEDBOOLEAN,-1.0, -1.0, true}, {OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENIVECSHIFTS, -1.0, 46.0, true}, + {OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENGLES31, -1.0, -1.0, true}, {OS_ALL, VENDOR_ARM, DRIVER_ARM, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true}, {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}, diff --git a/Source/Core/VideoCommon/DriverDetails.h b/Source/Core/VideoCommon/DriverDetails.h index 2dec67d8cb..01241bdfd2 100644 --- a/Source/Core/VideoCommon/DriverDetails.h +++ b/Source/Core/VideoCommon/DriverDetails.h @@ -240,6 +240,14 @@ namespace DriverDetails // Ended Version: 10.6.4 // Mesa meta misses to disable the scissor test. BUG_BROKENCOPYIMAGE, + + // Bug: Qualcomm has broken OpenGL ES 3.1 support + // Affected devices: Adreno + // Started Version: -1 + // Ended Version: -1 + // This isn't fully researched, but at the very least Qualcomm doesn't implement Geometry shader features fully. + // Until each bug is fully investigated, just disable GLES 3.1 entirely on these devices. + BUG_BROKENGLES31, }; // Initializes our internal vendor, device family, and driver version