From de1264d239581503a388416cfe766d06c046d6b8 Mon Sep 17 00:00:00 2001 From: raven02 Date: Sun, 8 Sep 2013 16:08:31 +0800 Subject: [PATCH 1/2] Apply gstate.getTextureDimension(level) --- GPU/GLES/TextureCache.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GPU/GLES/TextureCache.cpp b/GPU/GLES/TextureCache.cpp index 1709a104ef..38d62ee64b 100644 --- a/GPU/GLES/TextureCache.cpp +++ b/GPU/GLES/TextureCache.cpp @@ -1065,7 +1065,7 @@ void TextureCache::SetTexture() { if (iter != cache.end()) { entry = &iter->second; // Validate the texture still matches the cache entry. - int dim = gstate.texsize[0] & 0xF0F; + u16 dim = gstate.getTextureDimension(0); bool match = entry->Matches(dim, format, maxLevel); // Check for FBO - slow! @@ -1160,7 +1160,7 @@ void TextureCache::SetTexture() { gpuStats.numTextureInvalidations++; DEBUG_LOG(G3D, "Texture different or overwritten, reloading at %08x", texaddr); if (doDelete) { - if (entry->maxLevel == maxLevel && entry->dim == (gstate.texsize[0] & 0xF0F) && entry->format == format && g_Config.iTexScalingLevel <= 1) { + if (entry->maxLevel == maxLevel && entry->dim == gstate.getTextureDimension(0) && entry->format == format && g_Config.iTexScalingLevel <= 1) { // Actually, if size and number of levels match, let's try to avoid deleting and recreating. // Instead, let's use glTexSubImage to replace the images. replaceImages = true; @@ -1197,7 +1197,7 @@ void TextureCache::SetTexture() { entry->maxLevel = maxLevel; entry->lodBias = 0.0f; - entry->dim = gstate.texsize[0] & 0xF0F; + entry->dim = gstate.getTextureDimension(0); entry->bufw = bufw; // This would overestimate the size in many case so we underestimate instead From f6c41bfa13645f27ce22cdb18df7802eafaeb826 Mon Sep 17 00:00:00 2001 From: raven02 Date: Sun, 8 Sep 2013 16:09:40 +0800 Subject: [PATCH 2/2] Add u16 getTextureDimension(int level) --- GPU/GPUState.h | 1 + 1 file changed, 1 insertion(+) diff --git a/GPU/GPUState.h b/GPU/GPUState.h index 9582f49c69..19c01600ae 100644 --- a/GPU/GPUState.h +++ b/GPU/GPUState.h @@ -278,6 +278,7 @@ struct GPUgstate // Texturing int getTextureWidth(int level) const { return 1 << (texsize[level] & 0xf);} int getTextureHeight(int level) const { return 1 << ((texsize[level] >> 8) & 0xf);} + u16 getTextureDimension(int level) const { return texsize[level] & 0xf0f;} bool isTextureMapEnabled() const { return textureMapEnable & 1; } GETexFunc getTextureFunction() const { return static_cast(texfunc & 0x7); } bool isColorDoublingEnabled() const { return (texfunc & 0x10000) != 0; }