Avoid copying a tex if the PSP format is perfect.

This commit is contained in:
Unknown W. Brackets 2013-05-03 01:02:00 -07:00
parent 57c7b21640
commit df65bb40ac

View file

@ -1063,11 +1063,16 @@ void *TextureCache::DecodeTextureLevel(u8 format, u8 clutformat, int level, u32
case GE_TFMT_8888: case GE_TFMT_8888:
dstFmt = GL_UNSIGNED_BYTE; dstFmt = GL_UNSIGNED_BYTE;
if (!(gstate.texmode & 1)) { if (!(gstate.texmode & 1)) {
int len = bufw * h; // Special case: if we don't need to deal with packing, we don't need to copy.
tmpTexBuf32.resize(std::max(bufw, w) * h); if (w == bufw) {
tmpTexBufRearrange.resize(std::max(bufw, w) * h); finalBuf = Memory::GetPointer(texaddr);
Memory::Memcpy(tmpTexBuf32.data(), texaddr, len * sizeof(u32)); } else {
finalBuf = tmpTexBuf32.data(); 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 { else {
tmpTexBuf32.resize(std::max(bufw, w) * h); tmpTexBuf32.resize(std::max(bufw, w) * h);