mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-13 15:59:23 +01:00
OpenCL: Fixed and enabled CMPR decompression
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4448 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
500497ec2d
commit
7a2bad4efb
@ -175,14 +175,13 @@ kernel void decodeCMPRBlock(global uchar *dst,
|
||||
((color565 >> 8) & 0xF8) | ((color565 >> 13) & 0x7),
|
||||
0xFF, 0xFF));
|
||||
uint4 colors;
|
||||
uint4 choice = (uint4)((color565.s0 - color565.s1) << 16);
|
||||
//uint4 choice = (uint4)((color565.s0 - color565.s1) << 16);
|
||||
uint4 colorNoAlpha;
|
||||
//uchar4 frac = (color32.odd - color32.even) / 2;
|
||||
//frac = frac - (frac / 4);
|
||||
uchar4 frac = convert_uchar4((((convert_ushort4(color32.even) & 0xFF) - (convert_ushort4(color32.odd) & 0xFF)) * 3) / 8);
|
||||
//colorNoAlpha = convert_uint4(frac);
|
||||
colorNoAlpha = convert_uint4(color32.even - frac);
|
||||
colorNoAlpha = (colorNoAlpha << 8) | convert_uint4(color32.odd + frac);
|
||||
colorNoAlpha = convert_uint4(color32.odd + frac);
|
||||
colorNoAlpha = (colorNoAlpha << 8) | convert_uint4(color32.even - frac);
|
||||
colorNoAlpha = (colorNoAlpha << 8) | convert_uint4(color32.odd);
|
||||
colorNoAlpha = (colorNoAlpha << 8) | convert_uint4(color32.even);
|
||||
|
||||
@ -190,7 +189,6 @@ kernel void decodeCMPRBlock(global uchar *dst,
|
||||
//uchar4 midpoint = rhadd(color32.odd, color32.even);
|
||||
uchar4 midpoint = convert_uchar4((convert_ushort4(color32.odd) + convert_ushort4(color32.even) + 1) / 2);
|
||||
midpoint.s3 = 0xFF;
|
||||
//colorAlpha = convert_uint4(color32.odd);
|
||||
colorAlpha = convert_uint4((uchar4)(0, 0, 0, 0));
|
||||
colorAlpha = (colorAlpha << 8) | convert_uint4(midpoint);
|
||||
colorAlpha = (colorAlpha << 8) | convert_uint4(color32.odd);
|
||||
@ -199,7 +197,8 @@ kernel void decodeCMPRBlock(global uchar *dst,
|
||||
//colorNoAlpha = (uint4)(0xFFFFFFFF);
|
||||
//colorAlpha = (uint4)(0, 0, 0, 0xFFFFFFFF);
|
||||
|
||||
colors = select(colorNoAlpha, colorAlpha, choice);
|
||||
//colors = select(colorAlpha, colorNoAlpha, choice);
|
||||
colors = color565.s0 > color565.s1 ? colorNoAlpha : colorAlpha;
|
||||
|
||||
uint16 colorsFull = (uint16)(colors, colors, colors, colors);
|
||||
|
||||
|
@ -161,7 +161,6 @@ PC_TexFormat TexDecoder_Decode_OpenCL(u8 *dst, const u8 *src, int width, int hei
|
||||
formatResult = PC_TEX_FMT_BGRA32;
|
||||
break;
|
||||
case GX_TF_CMPR:
|
||||
return PC_TEX_FMT_NONE; // Remove to test CMPR
|
||||
kernelToRun = Decoders[7].kernel;
|
||||
sizeOfSrc = sizeof(u8) / 2.0f;
|
||||
sizeOfDst = sizeof(u32);
|
||||
|
Loading…
x
Reference in New Issue
Block a user