From 55f8df6d36b429b566df54c2dbc2fafa87400781 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 29 Jan 2021 12:12:16 -0500 Subject: [PATCH] panfrost: Refactor sample shading state Moves the decision to evaluate per-sample to link time instead of draw-time, with an explicit property. No functional change. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_assemble.c | 3 +++ src/gallium/drivers/panfrost/pan_cmdstream.c | 6 +++--- src/gallium/drivers/panfrost/pan_context.h | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_assemble.c b/src/gallium/drivers/panfrost/pan_assemble.c index ccfffb36066..f67e4b7621a 100644 --- a/src/gallium/drivers/panfrost/pan_assemble.c +++ b/src/gallium/drivers/panfrost/pan_assemble.c @@ -350,6 +350,9 @@ panfrost_shader_compile(struct panfrost_context *ctx, state->outputs_read = outputs_read >> FRAG_RESULT_DATA0; + /* EXT_shader_framebuffer_fetch requires per-sample */ + state->sample_shading = outputs_read; + /* List of reasons we need to execute frag shaders when things * are masked off */ diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index daaee4b65ae..728fe9508c7 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -527,9 +527,9 @@ panfrost_prepare_fs_state(struct panfrost_context *ctx, state->multisample_misc.multisample_enable = msaa; state->multisample_misc.sample_mask = (msaa ? ctx->sample_mask : ~0) & 0xFFFF; - /* EXT_shader_framebuffer_fetch requires per-sample */ - bool per_sample = ctx->min_samples > 1 || fs->outputs_read; - state->multisample_misc.evaluate_per_sample = msaa && per_sample; + state->multisample_misc.evaluate_per_sample = + msaa && (ctx->min_samples > 1 || fs->sample_shading); + state->multisample_misc.depth_function = zsa->base.depth_enabled ? panfrost_translate_compare_func(zsa->base.depth_func) : MALI_FUNC_ALWAYS; diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h index c4a3cd7b9bf..5dea026d4b6 100644 --- a/src/gallium/drivers/panfrost/pan_context.h +++ b/src/gallium/drivers/panfrost/pan_context.h @@ -216,6 +216,7 @@ struct panfrost_shader_state { /* Non-descript information */ unsigned work_reg_count; + bool sample_shading; bool can_discard; bool writes_point_size; bool writes_depth;