mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-05-04 02:08:36 +00:00
Improve safe texture cache - now using sparse CRC to identify textures. Far less video glitches - metroid intro looks good.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1298 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
a95e804681
commit
d0a48f654a
3 changed files with 33 additions and 5 deletions
|
@ -57,6 +57,29 @@ int TexDecoder_GetTexelSizeInNibbles(int format)
|
|||
}
|
||||
}
|
||||
|
||||
int TexDecoder_GetTextureSizeInBytes(int width, int height, int format)
|
||||
{
|
||||
return (width * height * TexDecoder_GetTexelSizeInNibbles(format)) / 4;
|
||||
}
|
||||
|
||||
u32 TexDecoder_GetSafeTextureHash(const u8 *src, int width, int height, int texformat)
|
||||
{
|
||||
int sz = TexDecoder_GetTextureSizeInBytes(width, height, texformat);
|
||||
u32 hash = 0x1337c0de;
|
||||
if (sz < 2048) {
|
||||
for (int i = 0; i < sz / 4; i += 13) {
|
||||
hash = _rotl(hash, 17) ^ ((u32 *)src)[i];
|
||||
}
|
||||
return hash;
|
||||
} else {
|
||||
int step = sz / 13 / 4;
|
||||
for (int i = 0; i < sz / 4; i += step) {
|
||||
hash = _rotl(hash, 17) ^ ((u32 *)src)[i];
|
||||
}
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
int TexDecoder_GetBlockWidthInTexels(int format)
|
||||
{
|
||||
switch (format) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue