asahi: Advertise ASTC formats
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sat, 20 Aug 2022 16:35:53 +0000 (12:35 -0400)
committerMarge Bot <emma+marge@anholt.net>
Thu, 1 Sep 2022 22:30:48 +0000 (22:30 +0000)
Now that we have layout and tiling code that can handle block-compressed
formats, including the non-square blocks found with some ASTC formats,
we can advertise ASTC formats. Passes dEQP-GLES3.*astc* which
exercises everything here. (These tests passed before by decompressing
the textures to RGBA8 UNORM in the frontend, but it's much more
efficient to use real ASTC textures as done here.)

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18167>

src/asahi/lib/agx_formats.c

index 1fc0c25..a9433e5 100644 (file)
@@ -124,6 +124,36 @@ const struct agx_pixel_format_entry agx_pixel_format[PIPE_FORMAT_COUNT] = {
    AGX_FMT(ETC2_R11_SNORM,          EAC_R11,       SNORM,  F,_),
    AGX_FMT(ETC2_RG11_UNORM,         EAC_RG11,      UNORM,  F,_),
    AGX_FMT(ETC2_RG11_SNORM,         EAC_RG11,      SNORM,  F,_),
+
+   AGX_FMT(ASTC_4x4,                ASTC_4X4,      UNORM,  F, _),
+   AGX_FMT(ASTC_5x4,                ASTC_5X4,      UNORM,  F, _),
+   AGX_FMT(ASTC_5x5,                ASTC_5X5,      UNORM,  F, _),
+   AGX_FMT(ASTC_6x5,                ASTC_6X5,      UNORM,  F, _),
+   AGX_FMT(ASTC_6x6,                ASTC_6X6,      UNORM,  F, _),
+   AGX_FMT(ASTC_8x5,                ASTC_8X5,      UNORM,  F, _),
+   AGX_FMT(ASTC_8x6,                ASTC_8X6,      UNORM,  F, _),
+   AGX_FMT(ASTC_8x8,                ASTC_8X8,      UNORM,  F, _),
+   AGX_FMT(ASTC_10x5,               ASTC_10X5,     UNORM,  F, _),
+   AGX_FMT(ASTC_10x6,               ASTC_10X6,     UNORM,  F, _),
+   AGX_FMT(ASTC_10x8,               ASTC_10X8,     UNORM,  F, _),
+   AGX_FMT(ASTC_10x10,              ASTC_10X10,    UNORM,  F, _),
+   AGX_FMT(ASTC_12x10,              ASTC_12X10,    UNORM,  F, _),
+   AGX_FMT(ASTC_12x12,              ASTC_12X12,    UNORM,  F, _),
+
+   AGX_FMT(ASTC_4x4_SRGB,           ASTC_4X4,      UNORM,  F, _),
+   AGX_FMT(ASTC_5x4_SRGB,           ASTC_5X4,      UNORM,  F, _),
+   AGX_FMT(ASTC_5x5_SRGB,           ASTC_5X5,      UNORM,  F, _),
+   AGX_FMT(ASTC_6x5_SRGB,           ASTC_6X5,      UNORM,  F, _),
+   AGX_FMT(ASTC_6x6_SRGB,           ASTC_6X6,      UNORM,  F, _),
+   AGX_FMT(ASTC_8x5_SRGB,           ASTC_8X5,      UNORM,  F, _),
+   AGX_FMT(ASTC_8x6_SRGB,           ASTC_8X6,      UNORM,  F, _),
+   AGX_FMT(ASTC_8x8_SRGB,           ASTC_8X8,      UNORM,  F, _),
+   AGX_FMT(ASTC_10x5_SRGB,          ASTC_10X5,     UNORM,  F, _),
+   AGX_FMT(ASTC_10x6_SRGB,          ASTC_10X6,     UNORM,  F, _),
+   AGX_FMT(ASTC_10x8_SRGB,          ASTC_10X8,     UNORM,  F, _),
+   AGX_FMT(ASTC_10x10_SRGB,         ASTC_10X10,    UNORM,  F, _),
+   AGX_FMT(ASTC_12x10_SRGB,         ASTC_12X10,    UNORM,  F, _),
+   AGX_FMT(ASTC_12x12_SRGB,         ASTC_12X12,    UNORM,  F, _),
 };
 
 const enum agx_format