From 31500f252212a5aa3ffb779b7bac52a14f25908c Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sat, 30 Mar 2013 23:27:24 -0500 Subject: Fix Intel Ironlake since it doesn't support version 120 of GLSL. I don't have Ironlake so it is hard to test. Dropping the shaders to version 120 worked here for me, ATI may be giving me some slack though. --- Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp') diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp index 4c516853d7..5f4df23eca 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp @@ -496,6 +496,10 @@ void ProgramShaderCache::CreateHeader ( void ) #else bool glsl140_hack = false; #endif + // Intel HD Graphics on the Ironlake chipset has been abandoned by Intel + // It supports every feature we need but not GLSL 1.3 + // This is to check if it is Ironlake then drop to GLSL 1.2 + bool glsl120_hack = strstr(g_ogl_config.gl_renderer, "Ironlake") != 0; snprintf(s_glsl_header, sizeof(s_glsl_header), "#version %s\n" @@ -519,7 +523,7 @@ void ProgramShaderCache::CreateHeader ( void ) "#define lerp(x, y, z) mix(x, y, z)\n" - , glsl140_hack ? "140" : "130" + , glsl120_hack ? "120" : glsl140_hack ? "140" : "130" , glsl140_hack ? "#define texture2DRect texture" : "#extension GL_ARB_texture_rectangle : enable" , g_ActiveConfig.backend_info.bSupportsGLSLUBO && !glsl140_hack ? "#extension GL_ARB_uniform_buffer_object : enable" : "// ubo disabled" ); -- cgit v1.2.3 From 4c40e70b8af839f84d7d9b8306116cabf3965cdb Mon Sep 17 00:00:00 2001 From: degasus Date: Mon, 8 Apr 2013 14:50:58 +0200 Subject: ogl: support glsl120 --- .../Plugin_VideoOGL/Src/ProgramShaderCache.cpp | 60 ++++++++++++---------- 1 file changed, 33 insertions(+), 27 deletions(-) (limited to 'Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp') diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp index 5f4df23eca..53eb41877e 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp @@ -123,8 +123,15 @@ void SHADER::SetProgramBindings() glBindFragDataLocationIndexed(glprogid, 0, 0, "ocol0"); glBindFragDataLocationIndexed(glprogid, 0, 1, "ocol1"); } - else + else if(g_ogl_config.eSupportedGLSLVersion > GLSL_120) + { glBindFragDataLocation(glprogid, 0, "ocol0"); + } + else + { + // ogl2 shaders don't need to bind output colors. + // gl_FragColor already point to color channel + } // Need to set some attribute locations glBindAttribLocation(glprogid, SHADER_POSITION_ATTRIB, "rawpos"); @@ -482,35 +489,17 @@ void ProgramShaderCache::Shutdown(void) void ProgramShaderCache::CreateHeader ( void ) { -#ifdef _WIN32 - // Intel Windows driver has a issue: - // their glsl doesn't know about the ubo extension, so we can't load it. - // but as version 140, ubo is in core and don't have to be loaded in glsl. - // as sandy do ogl3.1, glsl 140 is supported, so force it in this way. - // TODO: remove this again when the issue is fixed: - // see http://communities.intel.com/thread/36084 - bool glsl140_hack = strcmp(g_ogl_config.gl_vendor, "Intel") == 0; -#elif __APPLE__ - // as apple doesn't support glsl130 at all, we also have to use glsl140 - bool glsl140_hack = true; -#else - bool glsl140_hack = false; -#endif - // Intel HD Graphics on the Ironlake chipset has been abandoned by Intel - // It supports every feature we need but not GLSL 1.3 - // This is to check if it is Ironlake then drop to GLSL 1.2 - bool glsl120_hack = strstr(g_ogl_config.gl_renderer, "Ironlake") != 0; - + GLSL_VERSION v = g_ogl_config.eSupportedGLSLVersion; snprintf(s_glsl_header, sizeof(s_glsl_header), "#version %s\n" "%s\n" // tex_rect "%s\n" // ubo "\n"// A few required defines and ones that will make our lives a lot easier - "#define ATTRIN in\n" - "#define ATTROUT out\n" - "#define VARYIN centroid in\n" - "#define VARYOUT centroid out\n" + "#define ATTRIN %s\n" + "#define ATTROUT %s\n" + "#define VARYIN %s\n" + "#define VARYOUT %s\n" // Silly differences "#define float2 vec2\n" @@ -522,10 +511,27 @@ void ProgramShaderCache::CreateHeader ( void ) "#define saturate(x) clamp(x, 0.0f, 1.0f)\n" "#define lerp(x, y, z) mix(x, y, z)\n" + // glsl 120 hack + "%s\n" + "%s\n" + "%s\n" + "%s\n" + "%s\n" + "#define COLOROUT(name) %s\n" - , glsl120_hack ? "120" : glsl140_hack ? "140" : "130" - , glsl140_hack ? "#define texture2DRect texture" : "#extension GL_ARB_texture_rectangle : enable" - , g_ActiveConfig.backend_info.bSupportsGLSLUBO && !glsl140_hack ? "#extension GL_ARB_uniform_buffer_object : enable" : "// ubo disabled" + , v==GLSL_120 ? "120" : v==GLSL_130 ? "130" : "140" + , v<=GLSL_130 ? "#extension GL_ARB_texture_rectangle : enable" : "#define texture2DRect texture" + , g_ActiveConfig.backend_info.bSupportsGLSLUBO && v!=GLSL_140 ? "#extension GL_ARB_uniform_buffer_object : enable" : "" + , v==GLSL_120 ? "attribute" : "in" + , v==GLSL_120 ? "attribute" : "out" + , v==GLSL_120 ? "varying" : "centroid in" + , v==GLSL_120 ? "varying" : "centroid out" + , v==GLSL_120 ? "#define texture texture2D" : "" + , v==GLSL_120 ? "#define round(x) floor((x)+0.5f)" : "" + , v==GLSL_120 ? "#define out " : "" + , v==GLSL_120 ? "#define ocol0 gl_FragColor" : "" + , v==GLSL_120 ? "#define ocol1 gl_FragColor" : "" //TODO: implemenet dual source blend + , v==GLSL_120 ? "" : "out vec4 name;" ); } -- cgit v1.2.3 From ef85b9af45922c6ca364930d40f8aacf1a6dfe64 Mon Sep 17 00:00:00 2001 From: lioncash Date: Mon, 15 Apr 2013 16:28:55 -0400 Subject: Update the license file text (change SVN to Git) in all projects except Core since I was told a merge was happening soon. So for the sake of the merge going smoothly, I'll fix that when I remove the tab/space mismatches from the Core project. Also, some tab/space mismatches removed from VideoOGL, and some places I missed in VideoDX[number] projects. Now, the Core is literally the only project with tab/space mismatches (on a large scale). --- Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp') diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp index 53eb41877e..68004fc59c 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp @@ -12,7 +12,7 @@ // A copy of the GPL 2.0 should have been included with the program. // If not, see http://www.gnu.org/licenses/ -// Official SVN repository and contact information can be found at +// Official Git repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ #include "ProgramShaderCache.h" -- cgit v1.2.3 From e78d99e5c17009d5fc12bfd24298861d424b7846 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 17 Apr 2013 23:29:41 -0400 Subject: New license header introduced to all Video based projects. --- .../Plugin_VideoOGL/Src/ProgramShaderCache.cpp | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp') diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp index 68004fc59c..8e2e644e52 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp @@ -1,19 +1,6 @@ -// Copyright (C) 2003 Dolphin Project. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 2.0. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License 2.0 for more details. - -// A copy of the GPL 2.0 should have been included with the program. -// If not, see http://www.gnu.org/licenses/ - -// Official Git repository and contact information can be found at -// http://code.google.com/p/dolphin-emu/ +// Copyright 2013 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. #include "ProgramShaderCache.h" #include "MathUtil.h" -- cgit v1.2.3 From d244bca1f5f210e03839d0e0a485fc5511ede2d6 Mon Sep 17 00:00:00 2001 From: lioncash Date: Fri, 19 Apr 2013 09:21:45 -0400 Subject: Fix a bunch of random typos in comments and logging. Also update the comment headers for two functions in GCMemcard.cpp. --- Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp') diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp index 8e2e644e52..153fe748f1 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp @@ -517,7 +517,7 @@ void ProgramShaderCache::CreateHeader ( void ) , v==GLSL_120 ? "#define round(x) floor((x)+0.5f)" : "" , v==GLSL_120 ? "#define out " : "" , v==GLSL_120 ? "#define ocol0 gl_FragColor" : "" - , v==GLSL_120 ? "#define ocol1 gl_FragColor" : "" //TODO: implemenet dual source blend + , v==GLSL_120 ? "#define ocol1 gl_FragColor" : "" //TODO: implement dual source blend , v==GLSL_120 ? "" : "out vec4 name;" ); } -- cgit v1.2.3