From ed5e3c054e58b7547cead222048676f32ce8858d Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Thu, 19 Nov 2015 00:46:26 -0600 Subject: [PATCH] Enable Anisotropic filtering in ES. This adds a check to make sure the vendor supports anisotropic filtering. Pretty much all vendors support this, even the mobile ones. --- Source/Core/VideoBackends/OGL/Render.cpp | 1 + Source/Core/VideoBackends/OGL/Render.h | 1 + Source/Core/VideoBackends/OGL/SamplerCache.cpp | 6 ++---- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 4c45fa6701..86c3bcb492 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -465,6 +465,7 @@ Renderer::Renderer() g_ogl_config.bSupports2DTextureStorage = GLExtensions::Supports("GL_ARB_texture_storage_multisample"); g_ogl_config.bSupportsEarlyFragmentTests = GLExtensions::Supports("GL_ARB_shader_image_load_store"); g_ogl_config.bSupportsConservativeDepth = GLExtensions::Supports("GL_ARB_conservative_depth"); + g_ogl_config.bSupportsAniso = GLExtensions::Supports("GL_EXT_texture_filter_anisotropic"); if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3) { diff --git a/Source/Core/VideoBackends/OGL/Render.h b/Source/Core/VideoBackends/OGL/Render.h index 35bf14e75c..a6544a6049 100644 --- a/Source/Core/VideoBackends/OGL/Render.h +++ b/Source/Core/VideoBackends/OGL/Render.h @@ -52,6 +52,7 @@ struct VideoConfig bool bSupports3DTextureStorage; bool bSupportsEarlyFragmentTests; bool bSupportsConservativeDepth; + bool bSupportsAniso; const char* gl_vendor; const char* gl_renderer; diff --git a/Source/Core/VideoBackends/OGL/SamplerCache.cpp b/Source/Core/VideoBackends/OGL/SamplerCache.cpp index b1f7d40fa7..3c9a258ffb 100644 --- a/Source/Core/VideoBackends/OGL/SamplerCache.cpp +++ b/Source/Core/VideoBackends/OGL/SamplerCache.cpp @@ -129,12 +129,10 @@ void SamplerCache::SetParameters(GLuint sampler_id, const Params& params) glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_LOD, tm1.max_lod / 16.f); if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL) - { glSamplerParameterf(sampler_id, GL_TEXTURE_LOD_BIAS, (s32)tm0.lod_bias / 32.f); - if (g_ActiveConfig.iMaxAnisotropy > 0) - glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)(1 << g_ActiveConfig.iMaxAnisotropy)); - } + if (g_ActiveConfig.iMaxAnisotropy > 0 && g_ogl_config.bSupportsAniso) + glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)(1 << g_ActiveConfig.iMaxAnisotropy)); } void SamplerCache::Clear()