[Mesa-dev] [PATCH 1/4] panfrost: Use NIR helper invocations info

Alyssa Rosenzweig alyssa.rosenzweig at collabora.com
Wed Jul 24 00:05:57 UTC 2019


We don't need to guesstimate this ourselves. This will help when we
bringup derivatives.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
---
 src/gallium/drivers/panfrost/pan_assemble.c | 1 +
 src/gallium/drivers/panfrost/pan_context.c  | 2 +-
 src/gallium/drivers/panfrost/pan_context.h  | 3 +++
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/panfrost/pan_assemble.c b/src/gallium/drivers/panfrost/pan_assemble.c
index 5e6f9448668..334ea83305a 100644
--- a/src/gallium/drivers/panfrost/pan_assemble.c
+++ b/src/gallium/drivers/panfrost/pan_assemble.c
@@ -94,6 +94,7 @@ panfrost_shader_compile(struct panfrost_context *ctx, struct mali_shader_meta *m
         state->can_discard = program.can_discard;
         state->writes_point_size = program.writes_point_size;
         state->reads_point_coord = false;
+        state->helper_invocations = s->info.fs.needs_helper_invocations;
 
         /* Separate as primary uniform count is truncated */
         state->uniform_count = program.uniform_count;
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 2f19113e703..9aeb1ba9055 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -1128,7 +1128,7 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data)
                 /* Any time texturing is used, derivatives are implicitly
                  * calculated, so we need to enable helper invocations */
 
-                if (ctx->sampler_view_count[PIPE_SHADER_FRAGMENT])
+                if (variant->helper_invocations)
                         flags |= MALI_HELPER_INVOCATIONS;
 
                 ctx->fragment_shader_core.midgard1.flags = flags;
diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h
index 5584003b2dd..a398691f0ba 100644
--- a/src/gallium/drivers/panfrost/pan_context.h
+++ b/src/gallium/drivers/panfrost/pan_context.h
@@ -234,6 +234,9 @@ struct panfrost_shader_state {
 
         uint16_t point_sprite_mask;
         unsigned point_sprite_upper_left : 1;
+
+        /* Should we enable helper invocations */
+        bool helper_invocations;
 };
 
 /* A collection of varyings (the CSO) */
-- 
2.20.1



More information about the mesa-dev mailing list