Add Astc{6x6,8x8} and R4G4B4A4 image formats

This commit is contained in:
Billy Laws 2022-04-11 15:17:40 +01:00 committed by PixelyIon
parent dec0571eee
commit 1ba4abf950
3 changed files with 22 additions and 9 deletions

View File

@ -1849,6 +1849,7 @@ namespace skyline::gpu::interconnect {
TIC_FORMAT_CASE_ST(D16, D16, Unorm);
TIC_FORMAT_CASE_NORM_INT(R8G8, R8G8);
TIC_FORMAT_CASE_ST(B5G6R5, B5G6R5, Unorm);
TIC_FORMAT_CASE_ST(R4G4B4A4, R4G4B4A4, Unorm);
TIC_FORMAT_CASE_ST(A1B5G5R5, A1B5G5R5, Unorm);
TIC_FORMAT_CASE_INT_FLOAT(R32, R32);
@ -1870,6 +1871,8 @@ namespace skyline::gpu::interconnect {
TIC_FORMAT_CASE_NORM_INT_FLOAT(R16G16B16A16, R16G16B16A16);
TIC_FORMAT_CASE_ST(Astc4x4, Astc4x4, Unorm);
TIC_FORMAT_CASE_ST(Astc6x6, Astc6x6, Unorm);
TIC_FORMAT_CASE_ST(Astc8x8, Astc8x8, Unorm);
TIC_FORMAT_CASE_ST(BC2, BC2, Unorm);
TIC_FORMAT_CASE_ST(BC3, BC3, Unorm);
TIC_FORMAT_CASE_NORM(BC5, BC5);

View File

@ -39,7 +39,7 @@ namespace skyline::gpu::interconnect {
R32 = 0x0F,
Bc6HSfloat = 0x10,
Bc6HUfloat = 0x11,
R4G4B4A = 0x12,
R4G4B4A4 = 0x12,
A5B5G5R1 = 0x13,
A1B5G5R5 = 0x14,
B5G6R5 = 0x15,

View File

@ -65,6 +65,7 @@ namespace skyline::gpu::format {
FORMAT_NORM_INT_SRGB(R8G8, 16, eR8G8);
FORMAT(B5G6R5Unorm, 16, eB5G6R5UnormPack16);
FORMAT(R5G6B5Unorm, 16, eB5G6R5UnormPack16, .swapRedBlue = true); // Used by SurfaceFlinger
FORMAT(R4G4B4A4Unorm, 16, eR4G4B4A4UnormPack16);
FORMAT(B5G5R5A1Unorm, 16, eB5G5R5A1UnormPack16);
FORMAT(A1B5G5R5Unorm, 16, eA1R5G5B5UnormPack16, .swapRedBlue = true);
@ -87,14 +88,6 @@ namespace skyline::gpu::format {
.blockWidth = 4,
.blockHeight = 4
);
FORMAT_SUFF_UNORM_SRGB(BC2, 128, eBc2, Block,
.blockWidth = 4,
.blockHeight = 4
);
FORMAT_SUFF_UNORM_SRGB(BC3, 128, eBc3, Block,
.blockWidth = 4,
.blockHeight = 4
);
FORMAT_SUFF_NORM(BC4, 64, eBc4, Block,
.blockWidth = 4,
.blockHeight = 4,
@ -104,6 +97,23 @@ namespace skyline::gpu::format {
.blockWidth = 4,
.blockHeight = 4
);
FORMAT_SUFF_UNORM_SRGB(Astc6x6, 128, eAstc6x6, Block,
.blockWidth = 6,
.blockHeight = 6
);
FORMAT_SUFF_UNORM_SRGB(Astc8x8, 128, eAstc8x8, Block,
.blockWidth = 8,
.blockHeight = 8
);
FORMAT_SUFF_UNORM_SRGB(BC2, 128, eBc2, Block,
.blockWidth = 4,
.blockHeight = 4
);
FORMAT_SUFF_UNORM_SRGB(BC3, 128, eBc3, Block,
.blockWidth = 4,
.blockHeight = 4
);
FORMAT_SUFF_NORM(BC5, 128, eBc5, Block,
.blockWidth = 4,
.blockHeight = 4,