D3D: Fix IA4 textures
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4147 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
b059e405f2
commit
28495eae47
|
@ -82,7 +82,7 @@ void TextureCache::Cleanup()
|
|||
|
||||
while(iter != textures.end())
|
||||
{
|
||||
if (frameCount> TEXTURE_KILL_THRESHOLD + iter->second.frameCount)
|
||||
if (frameCount > TEXTURE_KILL_THRESHOLD + iter->second.frameCount)
|
||||
{
|
||||
if (!iter->second.isRenderTarget)
|
||||
{
|
||||
|
@ -105,23 +105,20 @@ void TextureCache::Cleanup()
|
|||
|
||||
TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width, int height, int format, int tlutaddr, int tlutfmt)
|
||||
{
|
||||
|
||||
if (address == 0)
|
||||
return NULL;
|
||||
if (address == 0) return NULL;
|
||||
TexCache::iterator iter = textures.find(address);
|
||||
|
||||
u8 *ptr = g_VideoInitialize.pGetMemoryPointer(address);
|
||||
|
||||
int palSize = TexDecoder_GetPaletteSize(format);
|
||||
u32 palhash = 0xc0debabe;
|
||||
if (palSize)
|
||||
{
|
||||
if (palSize>16)
|
||||
palSize = 16; //let's not do excessive amount of checking
|
||||
// TODO: Share this code with the GL plugin.
|
||||
if (palSize > 32)
|
||||
palSize = 32; // let's not do excessive amount of checking
|
||||
u8 *pal = g_VideoInitialize.pGetMemoryPointer(tlutaddr);
|
||||
if (pal != 0)
|
||||
{
|
||||
for (int i=0; i<palSize; i++)
|
||||
for (int i = 0; i < palSize; i++)
|
||||
{
|
||||
palhash = _rotl(palhash,13);
|
||||
palhash ^= pal[i];
|
||||
|
@ -135,7 +132,6 @@ TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width,
|
|||
int bs = TexDecoder_GetBlockWidthInTexels(format)-1; //TexelSizeInNibbles(format)*width*height/16;
|
||||
int expandedWidth = (width+bs) & (~bs);
|
||||
u32 hash_value = TexDecoder_GetSafeTextureHash(ptr, expandedWidth, height, format, 0);
|
||||
|
||||
if (iter != textures.end())
|
||||
{
|
||||
TCacheEntry &entry = iter->second;
|
||||
|
@ -174,7 +170,7 @@ TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width,
|
|||
}
|
||||
}
|
||||
|
||||
PC_TexFormat pcfmt = TexDecoder_Decode(temp,ptr,expandedWidth,height,format, tlutaddr, tlutfmt);
|
||||
PC_TexFormat pcfmt = TexDecoder_Decode(temp, ptr, expandedWidth, height, format, tlutaddr, tlutfmt);
|
||||
D3DFORMAT d3d_fmt;
|
||||
switch (pcfmt) {
|
||||
case PC_TEX_FMT_BGRA32:
|
||||
|
@ -184,7 +180,7 @@ TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width,
|
|||
d3d_fmt = D3DFMT_R5G6B5;
|
||||
break;
|
||||
case PC_TEX_FMT_IA4_AS_IA8:
|
||||
d3d_fmt = D3DFMT_A4L4;
|
||||
d3d_fmt = D3DFMT_A8L8; //D3DFMT_A4L4;
|
||||
break;
|
||||
case PC_TEX_FMT_I8:
|
||||
case PC_TEX_FMT_I4_AS_I8:
|
||||
|
|
Loading…
Reference in New Issue