From 442be344412396280b457ec69e16decc18f68ffb Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Mon, 16 Jun 2025 09:58:44 +0200 Subject: [PATCH] pan/genxml: Introduce per-type plane descriptors It makes it easier to decipher when reading a dump, and it will also make overlapping fields impossible to set twice once we've converted the texture logic to use those. Signed-off-by: Boris Brezillon Reviewed-by: Lars-Ivar Hesselberg Simonsen Reviewed-by: Eric R. Smith Tested-by: Eric R. Smith Part-of: --- src/panfrost/genxml/decode.c | 45 +++++++++++- src/panfrost/genxml/v10.xml | 117 +++++++++++++++++++++++++++++++ src/panfrost/genxml/v12.xml | 129 +++++++++++++++++++++++++++++++++++ src/panfrost/genxml/v13.xml | 129 +++++++++++++++++++++++++++++++++++ src/panfrost/genxml/v9.xml | 79 +++++++++++++++++++++ 5 files changed, 497 insertions(+), 2 deletions(-) diff --git a/src/panfrost/genxml/decode.c b/src/panfrost/genxml/decode.c index 440a1e368f7..d255d6e499b 100644 --- a/src/panfrost/genxml/decode.c +++ b/src/panfrost/genxml/decode.c @@ -313,6 +313,48 @@ pandecode_texture_payload(struct pandecode_context *ctx, uint64_t payload, } #endif +#if PAN_ARCH >= 9 +static void +pandecode_tex_plane(struct pandecode_context *ctx, uint64_t u, unsigned idx) +{ + const struct mali_plane_header_packed *cl = + pandecode_fetch_gpu_mem(ctx, u, pan_size(PLANE_HEADER)); + + pan_unpack(cl, PLANE_HEADER, temp); + + switch (temp.plane_type) { + case MALI_PLANE_TYPE_NULL: + DUMP_ADDR(ctx, NULL_PLANE, u, "Plane %u:\n", idx); + break; + case MALI_PLANE_TYPE_GENERIC: + DUMP_ADDR(ctx, GENERIC_PLANE, u, "Plane %u:\n", idx); + break; + case MALI_PLANE_TYPE_CHROMA_2P: + DUMP_ADDR(ctx, CHROMA_2P_PLANE, u, "Plane %u:\n", idx); + break; + case MALI_PLANE_TYPE_ASTC_2D: + DUMP_ADDR(ctx, ASTC_2D_PLANE, u, "Plane %u:\n", idx); + break; + case MALI_PLANE_TYPE_ASTC_3D: + DUMP_ADDR(ctx, ASTC_3D_PLANE, u, "Plane %u:\n", idx); + break; + case MALI_PLANE_TYPE_AFBC: + DUMP_ADDR(ctx, AFBC_PLANE, u, "Plane %u:\n", idx); + break; +#if PAN_ARCH >= 10 + case MALI_PLANE_TYPE_AFRC: + DUMP_ADDR(ctx, AFRC_PLANE, u, "Plane %u:\n", idx); + break; + case MALI_PLANE_TYPE_AFRC_CHROMA_2P: + DUMP_ADDR(ctx, AFRC_CHROMA_2P_PLANE, u, "Plane %u:\n", idx); + break; +#endif + default: + unreachable("Unknown plane type"); + } +} +#endif + #if PAN_ARCH <= 5 void GENX(pandecode_texture)(struct pandecode_context *ctx, uint64_t u, unsigned tex) @@ -345,8 +387,7 @@ GENX(pandecode_texture)(struct pandecode_context *ctx, plane_count *= 6; for (unsigned i = 0; i < plane_count; ++i) - DUMP_ADDR(ctx, PLANE, temp.surfaces + i * pan_size(PLANE), "Plane %u:\n", - i); + pandecode_tex_plane(ctx, temp.surfaces + i * pan_size(NULL_PLANE), i); #else pandecode_texture_payload(ctx, temp.surfaces, &temp); #endif diff --git a/src/panfrost/genxml/v10.xml b/src/panfrost/genxml/v10.xml index 031fc0ad441..20e9ebf7f58 100644 --- a/src/panfrost/genxml/v10.xml +++ b/src/panfrost/genxml/v10.xml @@ -1373,6 +1373,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/panfrost/genxml/v12.xml b/src/panfrost/genxml/v12.xml index 17b90132368..d3e9b7733d7 100644 --- a/src/panfrost/genxml/v12.xml +++ b/src/panfrost/genxml/v12.xml @@ -1634,6 +1634,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/panfrost/genxml/v13.xml b/src/panfrost/genxml/v13.xml index cd964c27eb3..e69cb1c128e 100644 --- a/src/panfrost/genxml/v13.xml +++ b/src/panfrost/genxml/v13.xml @@ -1936,6 +1936,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/panfrost/genxml/v9.xml b/src/panfrost/genxml/v9.xml index efdcc6a24f5..fac00147181 100644 --- a/src/panfrost/genxml/v9.xml +++ b/src/panfrost/genxml/v9.xml @@ -830,6 +830,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +