diff options
author | Alyssa Rosenzweig <[email protected]> | 2019-07-23 16:49:37 -0700 |
---|---|---|
committer | Alyssa Rosenzweig <[email protected]> | 2019-07-25 06:34:21 -0700 |
commit | 48991c7a1f07dc00821e3505b5d13ffdd1143e07 (patch) | |
tree | 41f4622ed1a7e38e0644372fe5558e70957fb818 /src/gallium | |
parent | fb2fe6e7bc434c00f260a74a0373fc452161c88c (diff) |
panfrost: Use NIR helper invocations info
We don't need to guesstimate this ourselves. This will help when we
bringup derivatives.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/panfrost/pan_assemble.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/panfrost/pan_context.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/panfrost/pan_context.h | 3 |
3 files changed, 5 insertions, 1 deletions
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 0035f700518..8c2953cc219 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -1132,7 +1132,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 83128677b97..c294195b4b5 100644 --- a/src/gallium/drivers/panfrost/pan_context.h +++ b/src/gallium/drivers/panfrost/pan_context.h @@ -227,6 +227,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) */ |