From d3cf4034de449570f7b01d98047544bde06047ed Mon Sep 17 00:00:00 2001 From: degasus Date: Sat, 25 Jul 2015 12:20:00 +0200 Subject: [PATCH] DriverDetails: Disable GL_ARB_copy_image on mesa. --- Source/Core/VideoBackends/OGL/Render.cpp | 11 ++++++----- Source/Core/VideoCommon/DriverDetails.cpp | 1 + Source/Core/VideoCommon/DriverDetails.h | 6 ++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 55d3a76e4a..a81eb675b6 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -303,7 +303,7 @@ static void InitDriverInfo() int major = 0; int minor = 0; int release = 0; - sscanf(g_ogl_config.gl_version, "%*s Mesa %d.%d.%d", &major, &minor, &release); + sscanf(g_ogl_config.gl_version, "%*s (Core Profile) Mesa %d.%d.%d", &major, &minor, &release); version = 100*major + 10*minor + release; } break; @@ -469,10 +469,11 @@ Renderer::Renderer() g_Config.backend_info.bSupportsGeometryShaders = GLExtensions::Version() >= 320; g_Config.backend_info.bSupportsPaletteConversion = GLExtensions::Supports("GL_ARB_texture_buffer_object"); g_Config.backend_info.bSupportsClipControl = GLExtensions::Supports("GL_ARB_clip_control"); - g_ogl_config.bSupportsCopySubImage = GLExtensions::Supports("GL_ARB_copy_image") || - GLExtensions::Supports("GL_NV_copy_image") || - GLExtensions::Supports("GL_EXT_copy_image") || - GLExtensions::Supports("GL_OES_copy_image"); + g_ogl_config.bSupportsCopySubImage = (GLExtensions::Supports("GL_ARB_copy_image") || + GLExtensions::Supports("GL_NV_copy_image") || + GLExtensions::Supports("GL_EXT_copy_image") || + GLExtensions::Supports("GL_OES_copy_image")) && + !DriverDetails::HasBug(DriverDetails::BUG_BROKENCOPYIMAGE); // Desktop OpenGL supports the binding layout if it supports 420pack // OpenGL ES 3.1 supports it implicitly without an extension diff --git a/Source/Core/VideoCommon/DriverDetails.cpp b/Source/Core/VideoCommon/DriverDetails.cpp index dd02ded1de..ebd0373d40 100644 --- a/Source/Core/VideoCommon/DriverDetails.cpp +++ b/Source/Core/VideoCommon/DriverDetails.cpp @@ -57,6 +57,7 @@ namespace DriverDetails {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_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}, {OS_LINUX, VENDOR_NVIDIA, DRIVER_NVIDIA, -1, BUG_BROKENBUFFERSTORAGE, -1.0, 33138.0, true}, {OS_OSX, VENDOR_INTEL, DRIVER_INTEL, 3000, BUG_PRIMITIVERESTART, -1.0, -1.0, true}, diff --git a/Source/Core/VideoCommon/DriverDetails.h b/Source/Core/VideoCommon/DriverDetails.h index cdc5026dc2..2dec67d8cb 100644 --- a/Source/Core/VideoCommon/DriverDetails.h +++ b/Source/Core/VideoCommon/DriverDetails.h @@ -234,6 +234,12 @@ namespace DriverDetails // ab.z <<= cd.z; // ab.w <<= cd.w; BUG_BROKENIVECSHIFTS, + + // Bug: glCopyImageSubData doesn't work on i965 + // Started Version: -1 + // Ended Version: 10.6.4 + // Mesa meta misses to disable the scissor test. + BUG_BROKENCOPYIMAGE, }; // Initializes our internal vendor, device family, and driver version