aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIcecream95 <[email protected]>2020-07-16 14:22:38 +1200
committerMarge Bot <[email protected]>2020-07-17 14:34:47 +0000
commit2a6db94b05cadb9bcd7a3b28f9fe60c7905fb21e (patch)
tree33f5abc8098c5977b3afebb7cb61388cf1ee1fa6
parentc20d166b4ecbde8c5dcf7fbbeb7860c6be859a69 (diff)
panfrost: Do per-sample shading when outputs are read
Fixes dEQP-GLES31.functional.blend_equation_advanced.msaa.* Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5930>
-rw-r--r--src/gallium/drivers/panfrost/pan_cmdstream.c9
1 files 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;