From df65bb40ac2543f19b369fd8fcdaf43382ddda1e Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 3 May 2013 01:02:00 -0700 Subject: [PATCH] Avoid copying a tex if the PSP format is perfect. --- GPU/GLES/TextureCache.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/GPU/GLES/TextureCache.cpp b/GPU/GLES/TextureCache.cpp index 6edb2db23a..5ecd00a734 100644 --- a/GPU/GLES/TextureCache.cpp +++ b/GPU/GLES/TextureCache.cpp @@ -1063,11 +1063,16 @@ void *TextureCache::DecodeTextureLevel(u8 format, u8 clutformat, int level, u32 case GE_TFMT_8888: dstFmt = GL_UNSIGNED_BYTE; if (!(gstate.texmode & 1)) { - int len = bufw * h; - tmpTexBuf32.resize(std::max(bufw, w) * h); - tmpTexBufRearrange.resize(std::max(bufw, w) * h); - Memory::Memcpy(tmpTexBuf32.data(), texaddr, len * sizeof(u32)); - finalBuf = tmpTexBuf32.data(); + // Special case: if we don't need to deal with packing, we don't need to copy. + if (w == bufw) { + finalBuf = Memory::GetPointer(texaddr); + } else { + int len = bufw * h; + tmpTexBuf32.resize(std::max(bufw, w) * h); + tmpTexBufRearrange.resize(std::max(bufw, w) * h); + Memory::Memcpy(tmpTexBuf32.data(), texaddr, len * sizeof(u32)); + finalBuf = tmpTexBuf32.data(); + } } else { tmpTexBuf32.resize(std::max(bufw, w) * h);