diff options
Diffstat (limited to 'Source/Core/VideoBackends')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp | 35 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp | 79 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp | 40 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/Render.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/Render.h | 1 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/VertexManager.cpp | 18 |
7 files changed, 42 insertions, 141 deletions
diff --git a/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp b/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp index e2e4d873dd..1530016336 100644 --- a/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp +++ b/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp @@ -66,15 +66,6 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms // alpha channel should be ignored if the EFB does not have one. // Create EFB target. - u32 depthType; - if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA)) - { - depthType = GL_DEPTH_COMPONENT; - } - else - { - depthType = GL_DEPTH_COMPONENT24; - } glGenFramebuffers(1, &m_efbFramebuffer); glActiveTexture(GL_TEXTURE0 + 9); @@ -94,7 +85,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms glBindTexture(getFbType(), m_efbDepth); glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0); - glTexImage2D(getFbType(), 0, depthType, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); + glTexImage2D(getFbType(), 0, GL_DEPTH_COMPONENT24, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); glBindTexture(getFbType(), m_resolvedColorTexture); glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0); @@ -159,7 +150,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms glBindTexture(getFbType(), m_resolvedDepthTexture); glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0); - glTexImage2D(getFbType(), 0, depthType, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); + glTexImage2D(getFbType(), 0, GL_DEPTH_COMPONENT24, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); // Bind resolved textures to resolved framebuffer. @@ -235,13 +226,8 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms " ocol0 = float4(dst6) / 63.f;\n" "}"; - if(g_ogl_config.eSupportedGLSLVersion != GLSLES2) - { - // HACK: This shaders aren't glsles2 compatible as glsles2 don't support bit operations - // it could be workaround by floor + frac + tons off additions, but I think it isn't worth - ProgramShaderCache::CompileShader(m_pixel_format_shaders[0], vs, ps_rgb8_to_rgba6); - ProgramShaderCache::CompileShader(m_pixel_format_shaders[1], vs, ps_rgba6_to_rgb8); - } + ProgramShaderCache::CompileShader(m_pixel_format_shaders[0], vs, ps_rgb8_to_rgba6); + ProgramShaderCache::CompileShader(m_pixel_format_shaders[1], vs, ps_rgba6_to_rgb8); } FramebufferManager::~FramebufferManager() @@ -372,19 +358,6 @@ GLuint FramebufferManager::ResolveAndGetDepthTarget(const EFBRectangle &source_r void FramebufferManager::ReinterpretPixelData(unsigned int convtype) { - if(g_ogl_config.eSupportedGLSLVersion == GLSLES2) { - // This feature isn't supported by glsles2 - - // TODO: move this to InitBackendInfo - // We have to disable both the active and the stored config. Else we - // would either - // show this line per format change in one frame or - // once per frame. - OSD::AddMessage("Format Change Emulation isn't supported by your GPU.", 10000); - g_ActiveConfig.bEFBEmulateFormatChanges = false; - g_Config.bEFBEmulateFormatChanges = false; - return; - } g_renderer->ResetAPIState(); GLuint src_texture = 0; diff --git a/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp b/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp index 6ff264aebe..c91908ea11 100644 --- a/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp +++ b/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp @@ -72,67 +72,42 @@ namespace GLFunc self = dlopen(NULL, RTLD_LAZY); LoadFunction("glUnmapBuffer", (void**)&glUnmapBuffer); + LoadFunction("glBeginQuery", (void**)&glBeginQuery); + LoadFunction("glEndQuery", (void**)&glEndQuery); + LoadFunction("glGetQueryObjectuiv", (void**)&glGetQueryObjectuiv); + LoadFunction("glDeleteQueries", (void**)&glDeleteQueries); + LoadFunction("glGenQueries", (void**)&glGenQueries); - if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA)) - { - LoadFunction("glBeginQueryEXT", (void**)&glBeginQuery); - LoadFunction("glEndQueryEXT", (void**)&glEndQuery); - LoadFunction("glGetQueryObjectuivEXT", (void**)&glGetQueryObjectuiv); - LoadFunction("glDeleteQueriesEXT", (void**)&glDeleteQueries); - LoadFunction("glGenQueriesEXT", (void**)&glGenQueries); - - LoadFunction("glMapBufferRangeNV", (void**)&glMapBufferRange); - LoadFunction("glBindBufferRangeNV", (void**)&glBindBufferRange); - LoadFunction("glBlitFramebufferNV", (void**)&glBlitFramebuffer); - - LoadFunction("glGenVertexArraysOES", (void**)&glGenVertexArrays); - LoadFunction("glDeleteVertexArraysOES", (void**)&glDeleteVertexArrays); - LoadFunction("glBindVertexArrayOES", (void**)&glBindVertexArray); + LoadFunction("glMapBufferRange", (void**)&glMapBufferRange); + LoadFunction("glBindBufferRange", (void**)&glBindBufferRange); + LoadFunction("glBlitFramebuffer", (void**)&glBlitFramebuffer); - LoadFunction("glRenderbufferStorageMultisampleNV", (void**)&glRenderbufferStorageMultisample); + LoadFunction("glGenVertexArrays", (void**)&glGenVertexArrays); + LoadFunction("glDeleteVertexArrays", (void**)&glDeleteVertexArrays); + LoadFunction("glBindVertexArray", (void**)&glBindVertexArray); - LoadFunction("glGetUniformBlockIndexNV", (void**)&glGetUniformBlockIndex); - LoadFunction("glUniformBlockBindingNV", (void**)&glUniformBlockBinding); - } - else - { - LoadFunction("glBeginQuery", (void**)&glBeginQuery); - LoadFunction("glEndQuery", (void**)&glEndQuery); - LoadFunction("glGetQueryObjectuiv", (void**)&glGetQueryObjectuiv); - LoadFunction("glDeleteQueries", (void**)&glDeleteQueries); - LoadFunction("glGenQueries", (void**)&glGenQueries); + LoadFunction("glClientWaitSync", (void**)&glClientWaitSync); + LoadFunction("glDeleteSync", (void**)&glDeleteSync); + LoadFunction("glFenceSync", (void**)&glFenceSync); - LoadFunction("glMapBufferRange", (void**)&glMapBufferRange); - LoadFunction("glBindBufferRange", (void**)&glBindBufferRange); - LoadFunction("glBlitFramebuffer", (void**)&glBlitFramebuffer); + LoadFunction("glSamplerParameterf", (void**)&glSamplerParameterf); + LoadFunction("glSamplerParameteri", (void**)&glSamplerParameteri); + LoadFunction("glSamplerParameterfv", (void**)&glSamplerParameterfv); + LoadFunction("glBindSampler", (void**)&glBindSampler); + LoadFunction("glDeleteSamplers", (void**)&glDeleteSamplers); + LoadFunction("glGenSamplers", (void**)&glGenSamplers); - LoadFunction("glGenVertexArrays", (void**)&glGenVertexArrays); - LoadFunction("glDeleteVertexArrays", (void**)&glDeleteVertexArrays); - LoadFunction("glBindVertexArray", (void**)&glBindVertexArray); + LoadFunction("glGetProgramBinary", (void**)&glGetProgramBinary); + LoadFunction("glProgramBinary", (void**)&glProgramBinary); + LoadFunction("glProgramParameteri", (void**)&glProgramParameteri); - LoadFunction("glClientWaitSync", (void**)&glClientWaitSync); - LoadFunction("glDeleteSync", (void**)&glDeleteSync); - LoadFunction("glFenceSync", (void**)&glFenceSync); + LoadFunction("glDrawRangeElements", (void**)&glDrawRangeElements); - LoadFunction("glSamplerParameterf", (void**)&glSamplerParameterf); - LoadFunction("glSamplerParameteri", (void**)&glSamplerParameteri); - LoadFunction("glSamplerParameterfv", (void**)&glSamplerParameterfv); - LoadFunction("glBindSampler", (void**)&glBindSampler); - LoadFunction("glDeleteSamplers", (void**)&glDeleteSamplers); - LoadFunction("glGenSamplers", (void**)&glGenSamplers); + LoadFunction("glRenderbufferStorageMultisample", (void**)&glRenderbufferStorageMultisample); - LoadFunction("glGetProgramBinary", (void**)&glGetProgramBinary); - LoadFunction("glProgramBinary", (void**)&glProgramBinary); - LoadFunction("glProgramParameteri", (void**)&glProgramParameteri); + LoadFunction("glGetUniformBlockIndex", (void**)&glGetUniformBlockIndex); + LoadFunction("glUniformBlockBinding", (void**)&glUniformBlockBinding); - LoadFunction("glDrawRangeElements", (void**)&glDrawRangeElements); - - LoadFunction("glRenderbufferStorageMultisample", (void**)&glRenderbufferStorageMultisample); - - LoadFunction("glGetUniformBlockIndex", (void**)&glGetUniformBlockIndex); - LoadFunction("glUniformBlockBinding", (void**)&glUniformBlockBinding); - - } dlclose(self); } } diff --git a/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp index cc807b7952..f998c6ced2 100644 --- a/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp @@ -571,12 +571,12 @@ void ProgramShaderCache::CreateHeader ( void ) "%s\n" // ubo "%s\n" // early-z - // Precision defines for GLSLES2/3 + // Precision defines for GLSLES3 "%s\n" "\n"// A few required defines and ones that will make our lives a lot easier - "#define ATTRIN %s\n" - "#define ATTROUT %s\n" + "#define ATTRIN in\n" + "#define ATTROUT out\n" "#define VARYIN %s\n" "#define VARYOUT %s\n" @@ -594,40 +594,18 @@ void ProgramShaderCache::CreateHeader ( void ) "%s\n" "%s\n" - // GLSLES2 hacks - "%s\n" - "%s\n" - "%s\n" - "%s\n" - "%s\n" - "%s\n" - "%s\n" - "#define COLOROUT(name) %s\n" - - - , v==GLSLES2 ? "" : v==GLSLES3 ? "#version 300 es" : v==GLSL_130 ? "#version 130" : v==GLSL_140 ? "#version 140" : "#version 150" + , v==GLSLES3 ? "#version 300 es" : v==GLSL_130 ? "#version 130" : v==GLSL_140 ? "#version 140" : "#version 150" , g_ActiveConfig.backend_info.bSupportsGLSLUBO && v<GLSL_140 ? "#extension GL_ARB_uniform_buffer_object : enable" : "" , g_ActiveConfig.backend_info.bSupportsEarlyZ ? "#extension GL_ARB_shader_image_load_store : enable" : "" - , (v==GLSLES3 || v==GLSLES2) ? "precision highp float;" : "" + , v==GLSLES3 ? "precision highp float;" : "" - , v==GLSLES2 ? "attribute" : "in" - , v==GLSLES2 ? "attribute" : "out" - , v==GLSLES2 ? "varying" : DriverDetails::HasBug(DriverDetails::BUG_BROKENCENTROID) ? "in" : "centroid in" - , v==GLSLES2 ? "varying" : DriverDetails::HasBug(DriverDetails::BUG_BROKENCENTROID) ? "out" : "centroid out" + , DriverDetails::HasBug(DriverDetails::BUG_BROKENCENTROID) ? "in" : "centroid in" + , DriverDetails::HasBug(DriverDetails::BUG_BROKENCENTROID) ? "out" : "centroid out" - , v==GLSLES2 ? "#define texture2DRect texture2D" : v==GLSLES3 ? "" : v<=GLSL_130 ? "#extension GL_ARB_texture_rectangle : enable" : "#define texture2DRect texture" + , v==GLSLES3 ? "" : v<=GLSL_130 ? "#extension GL_ARB_texture_rectangle : enable" : "#define texture2DRect texture" , v==GLSLES3 ? "#define texture2DRect(samp, uv) texelFetch(samp, ivec2(floor(uv)), 0)" : "" - , (v==GLSLES3 || v==GLSLES2) ? "#define sampler2DRect sampler2D" : "" - - , v==GLSLES2 ? "#define texture texture2D" : "" - , v==GLSLES2 ? "#define round(x) floor((x)+0.5)" : "" - , v==GLSLES2 ? "#define out " : "" - , v==GLSLES2 ? "#define ocol0 gl_FragColor" : "" - , v==GLSLES2 ? "#define ocol1 gl_FragColor" : "" - , DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA) ? "#extension GL_NV_uniform_buffer_object : enable" : "" - , DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA) ? "#extension GL_NV_fragdepth : enable" : "" - , v==GLSLES2 ? "" : "out vec4 name;" + , v==GLSLES3 ? "#define sampler2DRect sampler2D" : "" ); } diff --git a/Source/Core/VideoBackends/OGL/Src/Render.cpp b/Source/Core/VideoBackends/OGL/Src/Render.cpp index d75ac31159..8f95f5575e 100644 --- a/Source/Core/VideoBackends/OGL/Src/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Src/Render.cpp @@ -371,10 +371,7 @@ Renderer::Renderer() g_ogl_config.bSupportSampleShading = false; g_ogl_config.bSupportOGL31 = false; g_ogl_config.bSupportViewportFloat = false; - if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA) || DriverDetails::HasBug(DriverDetails::BUG_ISPOWERVR)) - g_ogl_config.eSupportedGLSLVersion = GLSLES2; - else - g_ogl_config.eSupportedGLSLVersion = GLSLES3; + g_ogl_config.eSupportedGLSLVersion = GLSLES3; #else #ifdef __APPLE__ glewExperimental = 1; diff --git a/Source/Core/VideoBackends/OGL/Src/Render.h b/Source/Core/VideoBackends/OGL/Src/Render.h index 0cda2f4c0e..9489d5c7ac 100644 --- a/Source/Core/VideoBackends/OGL/Src/Render.h +++ b/Source/Core/VideoBackends/OGL/Src/Render.h @@ -13,7 +13,6 @@ enum GLSL_VERSION { GLSL_130, GLSL_140, GLSL_150, // and above - GLSLES2, GLSLES3 }; diff --git a/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp b/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp index 8419777fae..2b50652ade 100644 --- a/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp +++ b/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp @@ -16,14 +16,11 @@ SamplerCache::SamplerCache() SamplerCache::~SamplerCache() { - if (!DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA)) - Clear(); + Clear(); } void SamplerCache::SetSamplerState(int stage, const TexMode0& tm0, const TexMode1& tm1) { - if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA)) - return; // TODO: can this go somewhere else? if (m_last_max_anisotropy != g_ActiveConfig.iMaxAnisotropy) { diff --git a/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp b/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp index 1ff9b53e28..64e8f92313 100644 --- a/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp @@ -134,24 +134,6 @@ void VertexManager::Draw(u32 stride) glDrawRangeElementsBaseVertex(GL_POINTS, 0, max_index, point_index_size, GL_UNSIGNED_SHORT, (u8*)NULL+s_offset[2], (GLint)s_baseVertex); INCSTAT(stats.thisFrame.numIndexedDrawCalls); } - } - else if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA)) - { - if (triangle_index_size > 0) - { - glDrawElements(triangle_mode, triangle_index_size, GL_UNSIGNED_SHORT, (u8*)NULL+s_offset[0]); - INCSTAT(stats.thisFrame.numIndexedDrawCalls); - } - if (line_index_size > 0) - { - glDrawElements(GL_LINES, line_index_size, GL_UNSIGNED_SHORT, (u8*)NULL+s_offset[1]); - INCSTAT(stats.thisFrame.numIndexedDrawCalls); - } - if (point_index_size > 0) - { - glDrawElements(GL_POINTS, point_index_size, GL_UNSIGNED_SHORT, (u8*)NULL+s_offset[2]); - INCSTAT(stats.thisFrame.numIndexedDrawCalls); - } } else { if (triangle_index_size > 0) { |
