mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Minor code simplification in texcache
This commit is contained in:
parent
aae254254b
commit
e857bd9a1c
4 changed files with 18 additions and 18 deletions
|
@ -474,11 +474,11 @@ void TextureCacheDX9::NotifyFramebuffer(u32 address, VirtualFramebuffer *framebu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void *TextureCacheDX9::UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 bytesPerPixel, u32 level) {
|
void *TextureCacheDX9::UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 height, u32 bytesPerPixel) {
|
||||||
const u32 rowWidth = (bytesPerPixel > 0) ? (bufw * bytesPerPixel) : (bufw / 2);
|
const u32 rowWidth = (bytesPerPixel > 0) ? (bufw * bytesPerPixel) : (bufw / 2);
|
||||||
const u32 pitch = rowWidth / 4;
|
const u32 pitch = rowWidth / 4;
|
||||||
const int bxc = rowWidth / 16;
|
const int bxc = rowWidth / 16;
|
||||||
int byc = (gstate.getTextureHeight(level) + 7) / 8;
|
int byc = (height + 7) / 8;
|
||||||
if (byc == 0)
|
if (byc == 0)
|
||||||
byc = 1;
|
byc = 1;
|
||||||
|
|
||||||
|
@ -559,7 +559,7 @@ void *TextureCacheDX9::ReadIndexedTex(int level, const u8 *texptr, int bytesPerI
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
UnswizzleFromMem(texptr, bufw, bytesPerIndex, level);
|
UnswizzleFromMem(texptr, bufw, h, bytesPerIndex);
|
||||||
switch (bytesPerIndex) {
|
switch (bytesPerIndex) {
|
||||||
case 1:
|
case 1:
|
||||||
DeIndexTexture(tmpTexBuf16.data(), (u8 *) tmpTexBuf32.data(), length, clut);
|
DeIndexTexture(tmpTexBuf16.data(), (u8 *) tmpTexBuf32.data(), length, clut);
|
||||||
|
@ -599,7 +599,7 @@ void *TextureCacheDX9::ReadIndexedTex(int level, const u8 *texptr, int bytesPerI
|
||||||
}
|
}
|
||||||
buf = tmpTexBuf32.data();
|
buf = tmpTexBuf32.data();
|
||||||
} else {
|
} else {
|
||||||
UnswizzleFromMem(texptr, bufw, bytesPerIndex, level);
|
UnswizzleFromMem(texptr, bufw, h, bytesPerIndex);
|
||||||
// Since we had to unswizzle to tmpTexBuf32, let's output to tmpTexBuf16.
|
// Since we had to unswizzle to tmpTexBuf32, let's output to tmpTexBuf16.
|
||||||
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
||||||
u32 *dest32 = (u32 *) tmpTexBuf16.data();
|
u32 *dest32 = (u32 *) tmpTexBuf16.data();
|
||||||
|
@ -1500,7 +1500,7 @@ void *TextureCacheDX9::DecodeTextureLevel(GETextureFormat format, GEPaletteForma
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
UnswizzleFromMem(texptr, bufw, 0, level);
|
UnswizzleFromMem(texptr, bufw, h, 0);
|
||||||
if (clutAlphaLinear_ && mipmapShareClut) {
|
if (clutAlphaLinear_ && mipmapShareClut) {
|
||||||
DeIndexTexture4Optimal(tmpTexBuf16.data(), (const u8 *)tmpTexBuf32.data(), bufw * h, clutAlphaLinearColor_);
|
DeIndexTexture4Optimal(tmpTexBuf16.data(), (const u8 *)tmpTexBuf32.data(), bufw * h, clutAlphaLinearColor_);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1520,7 +1520,7 @@ void *TextureCacheDX9::DecodeTextureLevel(GETextureFormat format, GEPaletteForma
|
||||||
DeIndexTexture4(tmpTexBuf32.data(), texptr, bufw * h, clut);
|
DeIndexTexture4(tmpTexBuf32.data(), texptr, bufw * h, clut);
|
||||||
finalBuf = tmpTexBuf32.data();
|
finalBuf = tmpTexBuf32.data();
|
||||||
} else {
|
} else {
|
||||||
UnswizzleFromMem(texptr, bufw, 0, level);
|
UnswizzleFromMem(texptr, bufw, h, 0);
|
||||||
// Let's reuse tmpTexBuf16, just need double the space.
|
// Let's reuse tmpTexBuf16, just need double the space.
|
||||||
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
||||||
DeIndexTexture4((u32 *)tmpTexBuf16.data(), (u8 *)tmpTexBuf32.data(), bufw * h, clut);
|
DeIndexTexture4((u32 *)tmpTexBuf16.data(), (u8 *)tmpTexBuf32.data(), bufw * h, clut);
|
||||||
|
@ -1565,7 +1565,7 @@ void *TextureCacheDX9::DecodeTextureLevel(GETextureFormat format, GEPaletteForma
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
finalBuf = UnswizzleFromMem(texptr, bufw, 2, level);
|
finalBuf = UnswizzleFromMem(texptr, bufw, h, 2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1584,7 +1584,7 @@ void *TextureCacheDX9::DecodeTextureLevel(GETextureFormat format, GEPaletteForma
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
finalBuf = UnswizzleFromMem(texptr, bufw, 4, level);
|
finalBuf = UnswizzleFromMem(texptr, bufw, h, 4);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ private:
|
||||||
|
|
||||||
void Decimate(); // Run this once per frame to get rid of old textures.
|
void Decimate(); // Run this once per frame to get rid of old textures.
|
||||||
void DeleteTexture(TexCache::iterator it);
|
void DeleteTexture(TexCache::iterator it);
|
||||||
void *UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 bytesPerPixel, u32 level);
|
void *UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 height, u32 bytesPerPixel);
|
||||||
void *ReadIndexedTex(int level, const u8 *texptr, int bytesPerIndex, u32 dstFmt, int bufw);
|
void *ReadIndexedTex(int level, const u8 *texptr, int bytesPerIndex, u32 dstFmt, int bufw);
|
||||||
void GetSamplingParams(int &minFilt, int &magFilt, bool &sClamp, bool &tClamp, float &lodBias, int maxLevel);
|
void GetSamplingParams(int &minFilt, int &magFilt, bool &sClamp, bool &tClamp, float &lodBias, int maxLevel);
|
||||||
void UpdateSamplingParams(TexCacheEntry &entry, bool force);
|
void UpdateSamplingParams(TexCacheEntry &entry, bool force);
|
||||||
|
|
|
@ -470,11 +470,11 @@ void TextureCache::NotifyFramebuffer(u32 address, VirtualFramebuffer *framebuffe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void *TextureCache::UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 bytesPerPixel, u32 level) {
|
void *TextureCache::UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 height, u32 bytesPerPixel) {
|
||||||
const u32 rowWidth = (bytesPerPixel > 0) ? (bufw * bytesPerPixel) : (bufw / 2);
|
const u32 rowWidth = (bytesPerPixel > 0) ? (bufw * bytesPerPixel) : (bufw / 2);
|
||||||
const u32 pitch = rowWidth / 4;
|
const u32 pitch = rowWidth / 4;
|
||||||
const int bxc = rowWidth / 16;
|
const int bxc = rowWidth / 16;
|
||||||
int byc = (gstate.getTextureHeight(level) + 7) / 8;
|
int byc = (height + 7) / 8;
|
||||||
if (byc == 0)
|
if (byc == 0)
|
||||||
byc = 1;
|
byc = 1;
|
||||||
|
|
||||||
|
@ -555,7 +555,7 @@ void *TextureCache::ReadIndexedTex(int level, const u8 *texptr, int bytesPerInde
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
UnswizzleFromMem(texptr, bufw, bytesPerIndex, level);
|
UnswizzleFromMem(texptr, bufw, h, bytesPerIndex);
|
||||||
switch (bytesPerIndex) {
|
switch (bytesPerIndex) {
|
||||||
case 1:
|
case 1:
|
||||||
DeIndexTexture(tmpTexBuf16.data(), (u8 *) tmpTexBuf32.data(), length, clut);
|
DeIndexTexture(tmpTexBuf16.data(), (u8 *) tmpTexBuf32.data(), length, clut);
|
||||||
|
@ -595,7 +595,7 @@ void *TextureCache::ReadIndexedTex(int level, const u8 *texptr, int bytesPerInde
|
||||||
}
|
}
|
||||||
buf = tmpTexBuf32.data();
|
buf = tmpTexBuf32.data();
|
||||||
} else {
|
} else {
|
||||||
UnswizzleFromMem(texptr, bufw, bytesPerIndex, level);
|
UnswizzleFromMem(texptr, bufw, h, bytesPerIndex);
|
||||||
// Since we had to unswizzle to tmpTexBuf32, let's output to tmpTexBuf16.
|
// Since we had to unswizzle to tmpTexBuf32, let's output to tmpTexBuf16.
|
||||||
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
||||||
u32 *dest32 = (u32 *) tmpTexBuf16.data();
|
u32 *dest32 = (u32 *) tmpTexBuf16.data();
|
||||||
|
@ -1629,7 +1629,7 @@ void *TextureCache::DecodeTextureLevel(GETextureFormat format, GEPaletteFormat c
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
UnswizzleFromMem(texptr, bufw, 0, level);
|
UnswizzleFromMem(texptr, bufw, h, 0);
|
||||||
if (clutAlphaLinear_ && mipmapShareClut) {
|
if (clutAlphaLinear_ && mipmapShareClut) {
|
||||||
DeIndexTexture4Optimal(tmpTexBuf16.data(), (const u8 *)tmpTexBuf32.data(), bufw * h, clutAlphaLinearColor_);
|
DeIndexTexture4Optimal(tmpTexBuf16.data(), (const u8 *)tmpTexBuf32.data(), bufw * h, clutAlphaLinearColor_);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1649,7 +1649,7 @@ void *TextureCache::DecodeTextureLevel(GETextureFormat format, GEPaletteFormat c
|
||||||
DeIndexTexture4(tmpTexBuf32.data(), texptr, bufw * h, clut);
|
DeIndexTexture4(tmpTexBuf32.data(), texptr, bufw * h, clut);
|
||||||
finalBuf = tmpTexBuf32.data();
|
finalBuf = tmpTexBuf32.data();
|
||||||
} else {
|
} else {
|
||||||
UnswizzleFromMem(texptr, bufw, 0, level);
|
UnswizzleFromMem(texptr, bufw, h, 0);
|
||||||
// Let's reuse tmpTexBuf16, just need double the space.
|
// Let's reuse tmpTexBuf16, just need double the space.
|
||||||
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
tmpTexBuf16.resize(std::max(bufw, w) * h * 2);
|
||||||
DeIndexTexture4((u32 *)tmpTexBuf16.data(), (u8 *)tmpTexBuf32.data(), bufw * h, clut);
|
DeIndexTexture4((u32 *)tmpTexBuf16.data(), (u8 *)tmpTexBuf32.data(), bufw * h, clut);
|
||||||
|
@ -1693,7 +1693,7 @@ void *TextureCache::DecodeTextureLevel(GETextureFormat format, GEPaletteFormat c
|
||||||
ConvertColors(finalBuf, texptr, dstFmt, bufw * h);
|
ConvertColors(finalBuf, texptr, dstFmt, bufw * h);
|
||||||
} else {
|
} else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
finalBuf = UnswizzleFromMem(texptr, bufw, 2, level);
|
finalBuf = UnswizzleFromMem(texptr, bufw, h, 2);
|
||||||
ConvertColors(finalBuf, finalBuf, dstFmt, bufw * h);
|
ConvertColors(finalBuf, finalBuf, dstFmt, bufw * h);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1717,7 +1717,7 @@ void *TextureCache::DecodeTextureLevel(GETextureFormat format, GEPaletteFormat c
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
tmpTexBuf32.resize(std::max(bufw, w) * h);
|
||||||
finalBuf = UnswizzleFromMem(texptr, bufw, 4, level);
|
finalBuf = UnswizzleFromMem(texptr, bufw, h, 4);
|
||||||
ConvertColors(finalBuf, finalBuf, dstFmt, bufw * h);
|
ConvertColors(finalBuf, finalBuf, dstFmt, bufw * h);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -178,7 +178,7 @@ private:
|
||||||
|
|
||||||
void Decimate(); // Run this once per frame to get rid of old textures.
|
void Decimate(); // Run this once per frame to get rid of old textures.
|
||||||
void DeleteTexture(TexCache::iterator it);
|
void DeleteTexture(TexCache::iterator it);
|
||||||
void *UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 bytesPerPixel, u32 level);
|
void *UnswizzleFromMem(const u8 *texptr, u32 bufw, u32 height, u32 bytesPerPixel);
|
||||||
void *ReadIndexedTex(int level, const u8 *texptr, int bytesPerIndex, GLuint dstFmt, int bufw);
|
void *ReadIndexedTex(int level, const u8 *texptr, int bytesPerIndex, GLuint dstFmt, int bufw);
|
||||||
void GetSamplingParams(int &minFilt, int &magFilt, bool &sClamp, bool &tClamp, float &lodBias, int maxLevel);
|
void GetSamplingParams(int &minFilt, int &magFilt, bool &sClamp, bool &tClamp, float &lodBias, int maxLevel);
|
||||||
void UpdateSamplingParams(TexCacheEntry &entry, bool force);
|
void UpdateSamplingParams(TexCacheEntry &entry, bool force);
|
||||||
|
|
Loading…
Add table
Reference in a new issue