diff --git a/GPU/GLES/TextureCache.cpp b/GPU/GLES/TextureCache.cpp index b43f447878f5..e28ec1cd37dd 100644 --- a/GPU/GLES/TextureCache.cpp +++ b/GPU/GLES/TextureCache.cpp @@ -499,7 +499,7 @@ void TextureCache::UpdateSamplingParams(TexCacheEntry &entry, bool force) { bool sClamp = gstate.texwrap & 1; bool tClamp = (gstate.texwrap>>8) & 1; - // bool noMip = (gstate.texlevel & 0xFFFFFF) == 0x000001; // Fix texlevel at 0 + bool noMip = (gstate.texlevel & 0xFFFFFF) == 0x000001 || (gstate.texlevel & 0xFFFFFF) == 0x100001 ; // Fix texlevel at 0 if (entry.maxLevel == 0) { // Enforce no mip filtering, for safety. @@ -515,17 +515,17 @@ void TextureCache::UpdateSamplingParams(TexCacheEntry &entry, bool force) { } } - if ((g_Config.iTexFiltering == 3 || (g_Config.iTexFiltering == 4 && g_iNumVideos)) && !gstate.isColorTestEnabled()) { + if ((g_Config.iTexFiltering == linear || (g_Config.iTexFiltering == linearFMV && g_iNumVideos)) && !gstate.isColorTestEnabled()) { magFilt |= 1; minFilt |= 1; } - if (g_Config.iTexFiltering == 2) { + if (g_Config.iTexFiltering == nearest) { magFilt &= ~1; minFilt &= ~1; } - if (!g_Config.bMipMap) { + if (!g_Config.bMipMap || noMip) { magFilt &= 1; minFilt &= 1; } diff --git a/GPU/GLES/TextureCache.h b/GPU/GLES/TextureCache.h index 361885f41cd1..772374ca88db 100644 --- a/GPU/GLES/TextureCache.h +++ b/GPU/GLES/TextureCache.h @@ -25,6 +25,12 @@ struct VirtualFramebuffer; +enum TextureFiltering { + nearest = 2, + linear = 3, + linearFMV = 4, +}; + class TextureCache { public: