From 2a6db94b05cadb9bcd7a3b28f9fe60c7905fb21e Mon Sep 17 00:00:00 2001 From: Icecream95 Date: Thu, 16 Jul 2020 14:22:38 +1200 Subject: [PATCH] panfrost: Do per-sample shading when outputs are read Fixes dEQP-GLES31.functional.blend_equation_advanced.msaa.* Reviewed-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_cmdstream.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index dbfe1f4461b..10a6f4c9e98 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -554,8 +554,13 @@ panfrost_frag_meta_rasterizer_update(struct panfrost_context *ctx, SET_BIT(fragmeta->unknown2_3, MALI_HAS_MSAA, msaa); SET_BIT(fragmeta->unknown2_4, MALI_NO_MSAA, !msaa); - SET_BIT(fragmeta->unknown2_3, MALI_PER_SAMPLE, - msaa && ctx->min_samples > 1); + struct panfrost_shader_state *fs; + fs = panfrost_get_shader_state(ctx, PIPE_SHADER_FRAGMENT); + + /* EXT_shader_framebuffer_fetch requires the shader to be run + * per-sample when outputs are read. */ + bool per_sample = ctx->min_samples > 1 || fs->outputs_read; + SET_BIT(fragmeta->unknown2_3, MALI_PER_SAMPLE, msaa && per_sample); fragmeta->depth_units = rast->offset_units * 2.0f; fragmeta->depth_factor = rast->offset_scale; -- 2.30.2