diff options
| author | Jules Blok <jules.blok@gmail.com> | 2014-12-19 23:10:04 +0100 |
|---|---|---|
| committer | Jules Blok <jules.blok@gmail.com> | 2014-12-19 23:56:02 +0100 |
| commit | bc3ed44050391ea327375cebeb3b28b9bfefa205 (patch) | |
| tree | d9bccd0256e9ad14a9389464f010d928c74c70ca /Source/Core | |
| parent | b30802e2f013726842f69c6e4ea28af13ff31974 (diff) | |
OGL: Disable geometry shaders on Intel's Windows drivers due to broken interface blocks.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 3 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/DriverDetails.cpp | 1 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/DriverDetails.h | 9 |
3 files changed, 12 insertions, 1 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 9baeb286a6..42af2521d9 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -465,7 +465,8 @@ Renderer::Renderer() g_Config.backend_info.bSupportsEarlyZ = GLExtensions::Supports("GL_ARB_shader_image_load_store"); 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.bSupportsGeometryShaders = (GLExtensions::Version() >= 320); + g_Config.backend_info.bSupportsGeometryShaders = (GLExtensions::Version() >= 320) && + !DriverDetails::HasBug(DriverDetails::BUG_INTELBROKENINTERFACEBLOCKS); // 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 dbcd45133f..1a7baccc38 100644 --- a/Source/Core/VideoCommon/DriverDetails.cpp +++ b/Source/Core/VideoCommon/DriverDetails.cpp @@ -59,6 +59,7 @@ namespace DriverDetails {OS_WINDOWS,VENDOR_NVIDIA, DRIVER_NVIDIA, -1, BUG_BROKENUNSYNCMAPPING, -1.0, -1.0, true}, {OS_LINUX, VENDOR_NVIDIA, DRIVER_NVIDIA, -1, BUG_BROKENUNSYNCMAPPING, -1.0, -1.0, true}, {OS_WINDOWS,VENDOR_INTEL, DRIVER_INTEL, -1, BUG_INTELBROKENBUFFERSTORAGE, 101810.3907, 101810.3960, true}, + {OS_WINDOWS,VENDOR_INTEL, DRIVER_INTEL, -1, BUG_INTELBROKENINTERFACEBLOCKS, -1.0, -1.0, true}, }; static std::map<Bug, BugInfo> m_bugs; diff --git a/Source/Core/VideoCommon/DriverDetails.h b/Source/Core/VideoCommon/DriverDetails.h index 278e339fac..c04114349b 100644 --- a/Source/Core/VideoCommon/DriverDetails.h +++ b/Source/Core/VideoCommon/DriverDetails.h @@ -200,6 +200,15 @@ namespace DriverDetails // Broken on Windows Intel // if (cond == false) BUG_BROKENNEGATEDBOOLEAN, + // Bug: Intel's Windows driver breaks interface blocks that contain structs. + // Affected devices: Intel (Windows) + // Started Version: -1 + // Ended Version: -1 + // We need interface blocks to make the geometry shader optional and we need structs to make + // assignment easier in the geometry shader stage. However Intel's Windows drivers don't seem + // to be able handle this combination. + // TODO: Find affected versions. + BUG_INTELBROKENINTERFACEBLOCKS, }; |
