From fa14cdf6e488cc14ca5953389bbdba3b0b27daf6 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 27 Oct 2019 19:46:21 -0400 Subject: [PATCH] panfrost: Cleanup _shader_upper -> shader I don't believe this is actually a tagged pointer; warn if it is. Signed-off-by: Alyssa Rosenzweig --- src/gallium/drivers/panfrost/pan_context.c | 8 ++++---- src/panfrost/include/panfrost-job.h | 3 +-- src/panfrost/pandecode/decode.c | 20 +++++++++----------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index 8cb34dc0581..69b3b96295d 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -888,14 +888,14 @@ panfrost_patch_shader_state_compute( struct panfrost_shader_variants *all = ctx->shader[stage]; if (!all) { - ctx->payloads[stage].postfix._shader_upper = 0; + ctx->payloads[stage].postfix.shader = 0; return; } struct panfrost_shader_state *s = &all->variants[all->active_variant]; - ctx->payloads[stage].postfix._shader_upper = - panfrost_patch_shader_state(ctx, s, stage, should_upload) >> 4; + ctx->payloads[stage].postfix.shader = + panfrost_patch_shader_state(ctx, s, stage, should_upload); } /* Go through dirty flags and actualise them in the cmdstream. */ @@ -1060,7 +1060,7 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data) struct panfrost_transfer transfer = panfrost_allocate_transient(batch, size); memcpy(transfer.cpu, &ctx->fragment_shader_core, sizeof(struct mali_shader_meta)); - ctx->payloads[PIPE_SHADER_FRAGMENT].postfix._shader_upper = (transfer.gpu) >> 4; + ctx->payloads[PIPE_SHADER_FRAGMENT].postfix.shader = transfer.gpu; if (!screen->require_sfbd) { /* Additional blend descriptor tacked on for jobs using MFBD */ diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h index 6f8a757e2c6..17ea869246e 100644 --- a/src/panfrost/include/panfrost-job.h +++ b/src/panfrost/include/panfrost-job.h @@ -1092,8 +1092,7 @@ struct mali_vertex_tiler_postfix { u64 sampler_descriptor; u64 uniforms; - u8 flags : 4; - u64 _shader_upper : MALI_SHORT_PTR_BITS - 4; /* struct shader_meta */ + u64 shader; u64 attributes; /* struct attribute_buffer[] */ u64 attribute_meta; /* attribute_meta[] */ u64 varyings; /* struct attr */ diff --git a/src/panfrost/pandecode/decode.c b/src/panfrost/pandecode/decode.c index 0fbd15a5925..9beb1049a69 100644 --- a/src/panfrost/pandecode/decode.c +++ b/src/panfrost/pandecode/decode.c @@ -2018,7 +2018,6 @@ pandecode_vertex_tiler_postfix_pre( int job_no, enum mali_job_type job_type, char *suffix, bool is_bifrost) { - mali_ptr shader_meta_ptr = (u64) (uintptr_t) (p->_shader_upper << 4); struct pandecode_mapped_memory *attr_mem; /* On Bifrost, since the tiler heap (for tiler jobs) and the scratchpad @@ -2044,9 +2043,9 @@ pandecode_vertex_tiler_postfix_pre( int varying_count = 0, attribute_count = 0, uniform_count = 0, uniform_buffer_count = 0; int texture_count = 0, sampler_count = 0; - if (shader_meta_ptr) { - struct pandecode_mapped_memory *smem = pandecode_find_mapped_gpu_mem_containing(shader_meta_ptr); - struct mali_shader_meta *PANDECODE_PTR_VAR(s, smem, shader_meta_ptr); + if (p->shader) { + struct pandecode_mapped_memory *smem = pandecode_find_mapped_gpu_mem_containing(p->shader); + struct mali_shader_meta *PANDECODE_PTR_VAR(s, smem, p->shader); /* Disassemble ahead-of-time to get stats. Initialize with * stats for the missing-shader case so we get validation @@ -2066,7 +2065,7 @@ pandecode_vertex_tiler_postfix_pre( if (s->shader & ~0xF) info = pandecode_shader_disassemble(s->shader & ~0xF, job_no, job_type, is_bifrost); - pandecode_log("struct mali_shader_meta shader_meta_%"PRIx64"_%d%s = {\n", shader_meta_ptr, job_no, suffix); + pandecode_log("struct mali_shader_meta shader_meta_%"PRIx64"_%d%s = {\n", p->shader, job_no, suffix); pandecode_indent++; /* Save for dumps */ @@ -2389,7 +2388,10 @@ pandecode_vertex_tiler_postfix_pre( static void pandecode_vertex_tiler_postfix(const struct mali_vertex_tiler_postfix *p, int job_no, bool is_bifrost) { - if (!(p->position_varying || p->occlusion_counter || p->flags)) + if (p->shader & 0xF) + pandecode_msg("warn: shader tagged %X\n", p->shader & 0xF); + + if (!(p->position_varying || p->occlusion_counter)) return; pandecode_log(".postfix = {\n"); @@ -2398,9 +2400,6 @@ pandecode_vertex_tiler_postfix(const struct mali_vertex_tiler_postfix *p, int jo MEMORY_PROP(p, position_varying); MEMORY_PROP(p, occlusion_counter); - if (p->flags) - pandecode_prop("flags = %d", p->flags); - pandecode_indent--; pandecode_log("},\n"); } @@ -2778,8 +2777,7 @@ pandecode_jc(mali_ptr jc_gpu_va, bool bifrost) h->job_type != JOB_TYPE_FRAGMENT ? 4 : 0; mali_ptr payload_ptr = jc_gpu_va + sizeof(*h) - offset; - payload = pandecode_fetch_gpu_mem(mem, payload_ptr, - MALI_PAYLOAD_SIZE); + payload = pandecode_fetch_gpu_mem(mem, payload_ptr, 256); int job_no = job_descriptor_number++; -- 2.30.2