panfrost: Track coverage, early fragment tests

These extra pieces of data are needed to correctly compute pixel kill /
zs update settings.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9105>
This commit is contained in:
Alyssa Rosenzweig 2021-02-16 13:23:08 -05:00 committed by Marge Bot
parent 3399673ba4
commit a25b9cd8d0
2 changed files with 5 additions and 0 deletions

View File

@ -174,6 +174,8 @@ pan_shader_compile(const struct panfrost_device *dev,
info->fs.writes_depth = true;
if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_STENCIL))
info->fs.writes_stencil = true;
if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_SAMPLE_MASK))
info->fs.writes_coverage = true;
uint64_t outputs_read = s->info.outputs_read;
if (outputs_read & BITFIELD64_BIT(FRAG_RESULT_COLOR))
@ -187,6 +189,7 @@ pan_shader_compile(const struct panfrost_device *dev,
info->fs.can_discard = s->info.fs.uses_discard;
info->fs.helper_invocations = s->info.fs.needs_quad_helper_invocations;
info->fs.early_fragment_tests = s->info.fs.early_fragment_tests;
/* List of reasons we need to execute frag shaders when things
* are masked off */

View File

@ -163,12 +163,14 @@ struct pan_shader_info {
bool can_discard;
bool writes_depth;
bool writes_stencil;
bool writes_coverage;
bool sidefx;
bool reads_sample_id;
bool reads_sample_pos;
bool reads_sample_mask_in;
bool reads_helper_invocation;
bool sample_shading;
bool early_fragment_tests;
BITSET_WORD outputs_read;
} fs;