panfrost: Async AFBC packing debug info

Print the AFBC-P state of a resource along its asynchronous packing
process when PAN_MESA_DEBUG=forcepack. There's no need to prevent
tiling in that case now that packing maintains the tiling state.

Signed-off-by: Loïc Molinari <loic.molinari@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Acked-by: Eric R. Smith <eric.smith@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35001>
This commit is contained in:
Loïc Molinari 2025-07-02 07:07:47 +02:00 committed by Marge Bot
parent 91aa7c4f8d
commit a0bdbcbae6
2 changed files with 26 additions and 3 deletions

View file

@ -2011,6 +2011,11 @@ pan_resource_afbcp_get_payload_sizes(struct panfrost_context *ctx,
{
MESA_TRACE_FUNC();
afbcp_debug(ctx,
"AFBC-P prsrc=%p: Get payload sizes (reads=%u bo_size=%zu)",
prsrc, prsrc->afbcp->nr_consecutive_reads,
panfrost_bo_size(prsrc->bo));
struct panfrost_screen *screen = pan_screen(ctx->base.screen);
struct panfrost_device *dev = pan_device(ctx->base.screen);
uint64_t modifier = prsrc->modifier;
@ -2057,6 +2062,11 @@ pan_resource_afbcp_get_payload_offsets(struct panfrost_context *ctx,
{
MESA_TRACE_FUNC();
afbcp_debug(ctx,
"AFBC-P prsrc=%p: Get payload offsets (reads=%u bo_size=%zu)",
prsrc, prsrc->afbcp->nr_consecutive_reads,
panfrost_bo_size(prsrc->bo));
struct panfrost_device *dev = pan_device(ctx->base.screen);
uint64_t modifier = prsrc->modifier;
unsigned last_level = prsrc->base.last_level;
@ -2131,6 +2141,10 @@ pan_resource_afbcp_pack(struct panfrost_context *ctx,
{
MESA_TRACE_FUNC();
afbcp_debug(ctx, "AFBC-P prsrc=%p: Pack (reads=%u bo_size=%zu ratio=%.2f)",
prsrc, prsrc->afbcp->nr_consecutive_reads,
panfrost_bo_size(prsrc->bo), prsrc->afbcp->ratio);
struct panfrost_screen *screen = pan_screen(ctx->base.screen);
struct panfrost_device *dev = pan_device(ctx->base.screen);
uint64_t modifier = prsrc->modifier & ~AFBC_FORMAT_MOD_SPARSE;
@ -2174,6 +2188,11 @@ pan_resource_afbcp_commit(struct panfrost_context *ctx,
{
MESA_TRACE_FUNC();
afbcp_debug(ctx,
"AFBC-P prsrc=%p: Commit (reads=%u bo_size=%zu ratio=%.2f)",
prsrc, prsrc->afbcp->nr_consecutive_reads,
panfrost_bo_size(prsrc->bo), prsrc->afbcp->ratio);
uint64_t modifier = prsrc->modifier & ~AFBC_FORMAT_MOD_SPARSE;
assert(!panfrost_is_emulated_mod(modifier));
prsrc->image.props.modifier = modifier;
@ -2245,9 +2264,6 @@ pan_resource_afbcp_update(struct panfrost_context *ctx,
(float)panfrost_bo_size(prsrc->bo) / prsrc->afbcp->size;
if (100.0f / prsrc->afbcp->ratio > screen->max_afbc_packing_ratio)
goto stop_packing;
perf_debug(ctx, "AFBC-P ratio: %.2f (%zu KB -> %u KB)\n",
prsrc->afbcp->ratio, panfrost_bo_size(prsrc->bo) / 1024,
prsrc->afbcp->size / 1024);
}
/* 3rd async AFBC-P step: pack. */

View file

@ -179,4 +179,11 @@ void panfrost_cmdstream_screen_init_v13(struct panfrost_screen *screen);
util_debug_message(&ctx->base.debug, PERF_INFO, __VA_ARGS__); \
} while (0)
#define afbcp_debug(ctx, ...) \
do { \
if (unlikely(pan_device((ctx)->base.screen)->debug & PAN_DBG_FORCE_PACK)) \
mesa_logw(__VA_ARGS__); \
util_debug_message(&ctx->base.debug, INFO, __VA_ARGS__); \
} while (0)
#endif /* PAN_SCREEN_H */