mesa/st: Passthrough scissor when clearing by quad

The scissor state -is- setup, but the scissor test is not enabled. This
can prevent certain optimizations from occurring on tilers where
unaffected tiles are thrown out entirely.

v2: Only enable scissor test if the scissor test is actually set by the
app, to avoid regressing quad-based clears used for other reasons (like
a color mask).

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Alyssa Rosenzweig 2019-06-18 13:37:16 -07:00
parent 8845a23698
commit 0a88aa3025
1 changed files with 3 additions and 0 deletions

View File

@ -323,6 +323,9 @@ clear_with_quad(struct gl_context *ctx, unsigned clear_buffers)
cso_set_stream_outputs(cso, 0, NULL, NULL);
cso_set_sample_mask(cso, ~0);
cso_set_min_samples(cso, 1);
/* set scissor if necessary to allow optimization */
st->clear.raster.scissor = ctx->Scissor.EnableFlags & 1;
cso_set_rasterizer(cso, &st->clear.raster);
/* viewport state: viewport matching window dims */