From 53f1fa9219309aa4a5c3220b6e1e2b9beb30fe6b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 17 Mar 2022 12:56:27 -0400 Subject: [PATCH] panfrost: Fix definition of DCD on v9 The position and varying shader environment descriptors are additional sections of the job, rather than part of the (fragment only) DCD. This distinction matters for non-IDVS jobs. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/lib/genxml/decode.c | 53 ++++++++++++++------------------ src/panfrost/lib/genxml/v9.xml | 9 +++--- 2 files changed, 27 insertions(+), 35 deletions(-) diff --git a/src/panfrost/lib/genxml/decode.c b/src/panfrost/lib/genxml/decode.c index dce30329d28..0d4776062e4 100644 --- a/src/panfrost/lib/genxml/decode.c +++ b/src/panfrost/lib/genxml/decode.c @@ -1216,6 +1216,23 @@ pandecode_depth_stencil(mali_ptr addr) DUMP_UNPACKED(DEPTH_STENCIL, desc, "Depth/stencil"); } +static void +pandecode_shader_environment(const struct MALI_SHADER_ENVIRONMENT *p, + unsigned gpu_id) +{ + if (p->shader) + pandecode_shader(p->shader, "Shader", gpu_id); + + if (p->resources) + pandecode_resource_tables(p->resources, "Resources"); + + if (p->thread_storage) + pandecode_local_storage(p->thread_storage, 0); + + if (p->fau) + dump_fau(p->fau, p->fau_count, "FAU"); +} + static void pandecode_dcd(const struct MALI_DRAW *p, int job_no, enum mali_job_type job_type, @@ -1223,15 +1240,6 @@ pandecode_dcd(const struct MALI_DRAW *p, { mali_ptr frag_shader = 0; - if (p->fragment.shader) - pandecode_shader(p->fragment.shader, "Fragment", gpu_id); - - if (p->varying.shader) - pandecode_shader(p->varying.shader, "Varying", gpu_id); - - if (p->position.shader) - pandecode_shader(p->position.shader, "Position", gpu_id); - pandecode_depth_stencil(p->depth_stencil); for (unsigned i = 0; i < p->blend_count; ++i) { @@ -1247,27 +1255,7 @@ pandecode_dcd(const struct MALI_DRAW *p, } } - if (p->fragment.resources) - pandecode_resource_tables(p->fragment.resources, "Fragment resources"); - if (p->fragment.thread_storage) - pandecode_local_storage(p->fragment.thread_storage, 0); - if (p->fragment.fau) - dump_fau(p->fragment.fau, p->fragment.fau_count, "Fragment FAU"); - - if (p->position.resources) - pandecode_resource_tables(p->position.resources, "Position resources"); - if (p->position.thread_storage) - pandecode_local_storage(p->position.thread_storage, 0); - if (p->position.fau) - dump_fau(p->position.fau, p->position.fau_count, "Position FAU"); - - if (p->varying.resources) - pandecode_resource_tables(p->varying.resources, "Varying resources"); - if (p->varying.thread_storage) - pandecode_local_storage(p->varying.thread_storage, 0); - if (p->varying.fau) - dump_fau(p->varying.fau, p->varying.fau_count, "Varying FAU"); - + pandecode_shader_environment(&p->shader, gpu_id); DUMP_UNPACKED(DRAW, *p, "Draw:\n"); } @@ -1296,6 +1284,11 @@ pandecode_malloc_vertex_job(const struct pandecode_mapped_memory *mem, pandecode_indent--; pandecode_dcd(&dcd, 0, 0, NULL, gpu_id); + + pan_section_unpack(p, MALLOC_VERTEX_JOB, POSITION, position); + pan_section_unpack(p, MALLOC_VERTEX_JOB, VARYING, varying); + pandecode_shader_environment(&position, gpu_id); + pandecode_shader_environment(&varying, gpu_id); } static void diff --git a/src/panfrost/lib/genxml/v9.xml b/src/panfrost/lib/genxml/v9.xml index da736a078e9..6e4e58dd3bc 100644 --- a/src/panfrost/lib/genxml/v9.xml +++ b/src/panfrost/lib/genxml/v9.xml @@ -1350,7 +1350,7 @@ - + @@ -1380,10 +1380,7 @@ - - - - + @@ -1415,5 +1412,7 @@
+
+