From 95d2848f07535615cee465a860662e597897abb0 Mon Sep 17 00:00:00 2001 From: raven02 Date: Fri, 18 Apr 2014 18:06:38 +0800 Subject: [PATCH 1/2] Define texture level mode --- GPU/GLES/TextureCache.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/GPU/GLES/TextureCache.h b/GPU/GLES/TextureCache.h index 43688bd2c9..aabf805b66 100644 --- a/GPU/GLES/TextureCache.h +++ b/GPU/GLES/TextureCache.h @@ -39,6 +39,12 @@ enum FramebufferNotification { NOTIFY_FB_DESTROYED, }; +enum TextureLevelMode { + GE_TEXBIAS_MODE_AUTO = 0, + GE_TEXBIAS_MODE_CONST = 1, + GE_TEXBIAS_MODE_SLOPE = 2, +}; + class TextureCache { public: TextureCache(); From 3fc5ba22f42cc2b18b12ca031d14c2f1aca8550f Mon Sep 17 00:00:00 2001 From: raven02 Date: Fri, 18 Apr 2014 18:07:52 +0800 Subject: [PATCH 2/2] Set texture bias in constant mode --- GPU/GLES/TextureCache.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/GPU/GLES/TextureCache.cpp b/GPU/GLES/TextureCache.cpp index 4898ba3a8e..907641f05d 100644 --- a/GPU/GLES/TextureCache.cpp +++ b/GPU/GLES/TextureCache.cpp @@ -504,7 +504,18 @@ void TextureCache::UpdateSamplingParams(TexCacheEntry &entry, bool force) { float lodBias = (float)(int)(s8)((gstate.texlevel >> 16) & 0xFF) / 16.0f; if (force || entry.lodBias != lodBias) { #ifndef USING_GLES2 - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, lodBias); + int mode = gstate.texlevel & 0x3; + switch (mode) { + case GE_TEXBIAS_MODE_AUTO: + // TODO + break; + case GE_TEXBIAS_MODE_CONST: + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, lodBias); + break; + case GE_TEXBIAS_MODE_SLOPE: + // TODO + break; + } #endif entry.lodBias = lodBias; }