Mesa (master): panfrost: Set depth_enabled when stencil is enabled
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jul 17 16:39:50 UTC 2020
Module: Mesa
Branch: master
Commit: ca44c009b5e9a368bbf3e3a41ba5a0f2a1f130e8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca44c009b5e9a368bbf3e3a41ba5a0f2a1f130e8
Author: Icecream95 <ixn at keemail.me>
Date: Fri Jul 17 21:23:03 2020 +1200
panfrost: Set depth_enabled when stencil is enabled
Fixes square circles in the KiCad 3D viewer.
v2: Cleanup a bit, add a comment, and handle the fs->writes_stencil case
to be pedantic (Alyssa).
Reported-by: Urja Rannikko <urjaman at gmail.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5946>
---
src/gallium/drivers/panfrost/pan_cmdstream.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c
index 10a6f4c9e98..cec1c715632 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -872,14 +872,21 @@ panfrost_frag_shader_meta_init(struct panfrost_context *ctx,
SET_BIT(fragmeta->midgard1.flags_lo, MALI_HELPER_INVOCATIONS,
fs->helper_invocations);
+ /* If discard is enabled, which bit we set to convey this
+ * depends on if depth/stencil is used for the draw or not.
+ * Just one of depth OR stencil is enough to trigger this. */
+
const struct pipe_depth_stencil_alpha_state *zsa = ctx->depth_stencil;
+ bool zs_enabled = fs->writes_depth || fs->writes_stencil;
- bool depth_enabled = fs->writes_depth ||
- (zsa && zsa->depth.enabled && zsa->depth.func != PIPE_FUNC_ALWAYS);
+ if (zsa) {
+ zs_enabled |= (zsa->depth.enabled && zsa->depth.func != PIPE_FUNC_ALWAYS);
+ zs_enabled |= zsa->stencil[0].enabled;
+ }
SET_BIT(fragmeta->midgard1.flags_lo, MALI_READS_TILEBUFFER,
- fs->outputs_read || (!depth_enabled && fs->can_discard));
- SET_BIT(fragmeta->midgard1.flags_lo, MALI_READS_ZS, depth_enabled && fs->can_discard);
+ fs->outputs_read || (!zs_enabled && fs->can_discard));
+ SET_BIT(fragmeta->midgard1.flags_lo, MALI_READS_ZS, zs_enabled && fs->can_discard);
}
panfrost_frag_meta_rasterizer_update(ctx, fragmeta);
More information about the mesa-commit
mailing list