From 2d56ed053d1a983de35fd91f1c14e3e04f15aaab Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Mon, 13 Feb 2023 12:11:02 +0000 Subject: [PATCH] Implement all remaining ASTC formats --- .../gpu/interconnect/common/textures.cpp | 16 +++++++++- app/src/main/cpp/skyline/gpu/texture/format.h | 29 +++++++++++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/app/src/main/cpp/skyline/gpu/interconnect/common/textures.cpp b/app/src/main/cpp/skyline/gpu/interconnect/common/textures.cpp index 333f6c20..0ccb4886 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/common/textures.cpp +++ b/app/src/main/cpp/skyline/gpu/interconnect/common/textures.cpp @@ -117,20 +117,33 @@ namespace skyline::gpu::interconnect { TIC_FORMAT_CASE_ST(Astc4x4, Astc4x4, Unorm); TIC_FORMAT_CASE_ST_SRGB(Astc4x4, Astc4x4, Unorm); + TIC_FORMAT_CASE_ST(Astc5x4, Astc5x4, Unorm); + TIC_FORMAT_CASE_ST_SRGB(Astc5x4, Astc5x4, Unorm); TIC_FORMAT_CASE_ST(Astc5x5, Astc5x5, Unorm); TIC_FORMAT_CASE_ST_SRGB(Astc5x5, Astc5x5, Unorm); + TIC_FORMAT_CASE_ST(Astc6x5, Astc6x5, Unorm); + TIC_FORMAT_CASE_ST_SRGB(Astc6x5, Astc6x5, Unorm); TIC_FORMAT_CASE_ST(Astc6x6, Astc6x6, Unorm); TIC_FORMAT_CASE_ST_SRGB(Astc6x6, Astc6x6, Unorm); + TIC_FORMAT_CASE_ST(Astc8x5, Astc8x5, Unorm); + TIC_FORMAT_CASE_ST_SRGB(Astc8x5, Astc8x5, Unorm); TIC_FORMAT_CASE_ST(Astc8x6, Astc8x6, Unorm); TIC_FORMAT_CASE_ST_SRGB(Astc8x6, Astc8x6, Unorm); TIC_FORMAT_CASE_ST(Astc8x8, Astc8x8, Unorm); TIC_FORMAT_CASE_ST_SRGB(Astc8x8, Astc8x8, Unorm); + TIC_FORMAT_CASE_ST(Astc10x5, Astc10x5, Unorm); + TIC_FORMAT_CASE_ST_SRGB(Astc10x5, Astc10x5, Unorm); + TIC_FORMAT_CASE_ST(Astc10x6, Astc10x6, Unorm); + TIC_FORMAT_CASE_ST_SRGB(Astc10x6, Astc10x6, Unorm); TIC_FORMAT_CASE_ST(Astc10x8, Astc10x8, Unorm); TIC_FORMAT_CASE_ST_SRGB(Astc10x8, Astc10x8, Unorm); TIC_FORMAT_CASE_ST(Astc10x10, Astc10x10, Unorm); TIC_FORMAT_CASE_ST_SRGB(Astc10x10, Astc10x10, Unorm); + TIC_FORMAT_CASE_ST(Astc12x10, Astc12x10, Unorm); + TIC_FORMAT_CASE_ST_SRGB(Astc12x10, Astc12x10, Unorm); TIC_FORMAT_CASE_ST(Astc12x12, Astc12x12, Unorm); - TIC_FORMAT_CASE_ST_SRGB(Astc12x12, Astc12x12, Unorm); + TIC_FORMAT_CASE_ST_SRGB(Astc12x12, Astc12x12, Unorm); + TIC_FORMAT_CASE_ST(BC2, BC2, Unorm); TIC_FORMAT_CASE_ST_SRGB(BC2, BC2, Unorm); TIC_FORMAT_CASE_ST(BC3, BC3, Unorm); @@ -140,6 +153,7 @@ namespace skyline::gpu::interconnect { TIC_FORMAT_CASE(Bc6HSfloat, Bc6HSfloat, Float, Float, Float, Float); TIC_FORMAT_CASE_ST(BC7, BC7, Unorm); TIC_FORMAT_CASE_ST_SRGB(BC7, BC7, Unorm); + TIC_FORMAT_CASE_INT_FLOAT(R32G32B32A32, R32G32B32A32); default: diff --git a/app/src/main/cpp/skyline/gpu/texture/format.h b/app/src/main/cpp/skyline/gpu/texture/format.h index 81dcf480..81fa53de 100644 --- a/app/src/main/cpp/skyline/gpu/texture/format.h +++ b/app/src/main/cpp/skyline/gpu/texture/format.h @@ -133,14 +133,26 @@ namespace skyline::gpu::format { .blockWidth = 4, .blockHeight = 4 ); + FORMAT_SUFF_UNORM_SRGB(Astc5x4, 128, eAstc5x4, Block, + .blockWidth = 5, + .blockHeight = 4 + ); FORMAT_SUFF_UNORM_SRGB(Astc5x5, 128, eAstc5x5, Block, .blockWidth = 5, .blockHeight = 5 ); + FORMAT_SUFF_UNORM_SRGB(Astc6x5, 128, eAstc6x5, Block, + .blockWidth = 6, + .blockHeight = 5 + ); FORMAT_SUFF_UNORM_SRGB(Astc6x6, 128, eAstc6x6, Block, .blockWidth = 6, .blockHeight = 6 ); + FORMAT_SUFF_UNORM_SRGB(Astc8x5, 128, eAstc8x5, Block, + .blockWidth = 8, + .blockHeight = 5 + ); FORMAT_SUFF_UNORM_SRGB(Astc8x6, 128, eAstc8x6, Block, .blockWidth = 8, .blockHeight = 6 @@ -149,6 +161,14 @@ namespace skyline::gpu::format { .blockWidth = 8, .blockHeight = 8 ); + FORMAT_SUFF_UNORM_SRGB(Astc10x5, 128, eAstc10x5, Block, + .blockWidth = 10, + .blockHeight = 5 + ); + FORMAT_SUFF_UNORM_SRGB(Astc10x6, 128, eAstc10x6, Block, + .blockWidth = 10, + .blockHeight = 6 + ); FORMAT_SUFF_UNORM_SRGB(Astc10x8, 128, eAstc10x8, Block, .blockWidth = 10, .blockHeight = 8 @@ -157,10 +177,13 @@ namespace skyline::gpu::format { .blockWidth = 10, .blockHeight = 10 ); - + FORMAT_SUFF_UNORM_SRGB(Astc12x10, 128, eAstc12x10, Block, + .blockWidth = 12, + .blockHeight = 10 + ); FORMAT_SUFF_UNORM_SRGB(Astc12x12, 128, eAstc12x12, Block, - .blockWidth = 12, - .blockHeight = 12 + .blockWidth = 12, + .blockHeight = 12 ); // Depth/Stencil Formats