amd/addrlib: Not all ETC2 formats are 128bpp... add new ETC2 formats to differentiate between 64 and 128bpp formats.
This commit is contained in:

committed by
Marek Olšák

parent
1360018c1c
commit
047d6daf10
@@ -287,6 +287,8 @@ typedef enum _AddrFormat {
|
|||||||
ADDR_FMT_ASTC_10x10 = 0x0000004b,
|
ADDR_FMT_ASTC_10x10 = 0x0000004b,
|
||||||
ADDR_FMT_ASTC_12x10 = 0x0000004c,
|
ADDR_FMT_ASTC_12x10 = 0x0000004c,
|
||||||
ADDR_FMT_ASTC_12x12 = 0x0000004d,
|
ADDR_FMT_ASTC_12x12 = 0x0000004d,
|
||||||
|
ADDR_FMT_ETC2_64BPP = 0x0000004e,
|
||||||
|
ADDR_FMT_ETC2_128BPP = 0x0000004f,
|
||||||
} AddrFormat;
|
} AddrFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1174,8 +1174,12 @@ VOID ElemLib::AdjustSurfaceInfo(
|
|||||||
bBCnFormat = TRUE;
|
bBCnFormat = TRUE;
|
||||||
// fall through
|
// fall through
|
||||||
case ADDR_PACKED_ASTC:
|
case ADDR_PACKED_ASTC:
|
||||||
|
case ADDR_PACKED_ETC2_128BPP:
|
||||||
packedBits = 128;
|
packedBits = 128;
|
||||||
break;
|
break;
|
||||||
|
case ADDR_PACKED_ETC2_64BPP:
|
||||||
|
packedBits = 64;
|
||||||
|
break;
|
||||||
case ADDR_ROUND_BY_HALF: // Fall through
|
case ADDR_ROUND_BY_HALF: // Fall through
|
||||||
case ADDR_ROUND_TRUNCATE: // Fall through
|
case ADDR_ROUND_TRUNCATE: // Fall through
|
||||||
case ADDR_ROUND_DITHER: // Fall through
|
case ADDR_ROUND_DITHER: // Fall through
|
||||||
@@ -1296,8 +1300,12 @@ VOID ElemLib::RestoreSurfaceInfo(
|
|||||||
case ADDR_PACKED_BC5:
|
case ADDR_PACKED_BC5:
|
||||||
// fall through
|
// fall through
|
||||||
case ADDR_PACKED_ASTC:
|
case ADDR_PACKED_ASTC:
|
||||||
|
case ADDR_PACKED_ETC2_128BPP:
|
||||||
originalBits = 128;
|
originalBits = 128;
|
||||||
break;
|
break;
|
||||||
|
case ADDR_PACKED_ETC2_64BPP:
|
||||||
|
originalBits = 64;
|
||||||
|
break;
|
||||||
case ADDR_ROUND_BY_HALF: // Fall through
|
case ADDR_ROUND_BY_HALF: // Fall through
|
||||||
case ADDR_ROUND_TRUNCATE: // Fall through
|
case ADDR_ROUND_TRUNCATE: // Fall through
|
||||||
case ADDR_ROUND_DITHER: // Fall through
|
case ADDR_ROUND_DITHER: // Fall through
|
||||||
@@ -1492,6 +1500,20 @@ UINT_32 ElemLib::GetBitsPerPixel(
|
|||||||
bpp = 128;
|
bpp = 128;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ADDR_FMT_ETC2_64BPP:
|
||||||
|
elemMode = ADDR_PACKED_ETC2_64BPP;
|
||||||
|
expandX = 4;
|
||||||
|
expandY = 4;
|
||||||
|
bpp = 64;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ADDR_FMT_ETC2_128BPP:
|
||||||
|
elemMode = ADDR_PACKED_ETC2_128BPP;
|
||||||
|
expandX = 4;
|
||||||
|
expandY = 4;
|
||||||
|
bpp = 128;
|
||||||
|
break;
|
||||||
|
|
||||||
case ADDR_FMT_ASTC_4x4:
|
case ADDR_FMT_ASTC_4x4:
|
||||||
elemMode = ADDR_PACKED_ASTC;
|
elemMode = ADDR_PACKED_ASTC;
|
||||||
expandX = 4;
|
expandX = 4;
|
||||||
@@ -1725,7 +1747,7 @@ BOOL_32 ElemLib::IsBlockCompressed(
|
|||||||
AddrFormat format) ///< [in] Format
|
AddrFormat format) ///< [in] Format
|
||||||
{
|
{
|
||||||
return (((format >= ADDR_FMT_BC1) && (format <= ADDR_FMT_BC7)) ||
|
return (((format >= ADDR_FMT_BC1) && (format <= ADDR_FMT_BC7)) ||
|
||||||
((format >= ADDR_FMT_ASTC_4x4) && (format <= ADDR_FMT_ASTC_12x12)));
|
((format >= ADDR_FMT_ASTC_4x4) && (format <= ADDR_FMT_ETC2_128BPP)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -131,7 +131,9 @@ enum ElemMode
|
|||||||
ADDR_PACKED_BC3, // Each data element is uncompressed to a 4x4 pixel/texel array
|
ADDR_PACKED_BC3, // Each data element is uncompressed to a 4x4 pixel/texel array
|
||||||
ADDR_PACKED_BC4, // Each data element is uncompressed to a 4x4 pixel/texel array
|
ADDR_PACKED_BC4, // Each data element is uncompressed to a 4x4 pixel/texel array
|
||||||
ADDR_PACKED_BC5, // Each data element is uncompressed to a 4x4 pixel/texel array
|
ADDR_PACKED_BC5, // Each data element is uncompressed to a 4x4 pixel/texel array
|
||||||
ADDR_PACKED_ASTC,
|
ADDR_PACKED_ETC2_64BPP, // ETC2 formats that use 64bpp to represent each 4x4 block
|
||||||
|
ADDR_PACKED_ETC2_128BPP, // ETC2 formats that use 128bpp to represent each 4x4 block
|
||||||
|
ADDR_PACKED_ASTC, // Various ASTC formats, all are 128bpp with varying block sizes
|
||||||
|
|
||||||
// These formats provide various kinds of compression
|
// These formats provide various kinds of compression
|
||||||
ADDR_ZPLANE_R5XX, // Compressed Zplane using r5xx architecture format
|
ADDR_ZPLANE_R5XX, // Compressed Zplane using r5xx architecture format
|
||||||
|
Reference in New Issue
Block a user