[Mesa-dev] [PATCH 4/4] Revert "i965: Disable guardband clipping in the smaller-than-viewport case."
Jason Ekstrand
jason at jlekstrand.net
Tue Jan 31 19:08:03 UTC 2017
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
On Sun, Jan 22, 2017 at 10:42 PM, Kenneth Graunke <kenneth at whitecape.org>
wrote:
> This reverts commit 0bac2551e40410e2251daf4fd9faf69310ab34ce.
>
> Now that we position the guardband correctly (applying translations
> in addition to scaling) and made it as large (or larger) than the
> render target, this shouldn't be necessary.
>
> Now we leave guardband clipping enabled 100% of the time, like the
> Windows driver does.
>
> Fixes GL45-CTS.gtf21.GL2FixedTests.clip.clip. It tries to draw a
> 16384x64 rectangle, and it appears that some kind of numerical
> imprecisions in the clipper result in some edge pixels going missing.
> The Windows driver passes this test because of guardband clipping.
> ---
> src/mesa/drivers/dri/i965/gen6_clip_state.c | 31
> -----------------------------
> 1 file changed, 31 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/gen6_clip_state.c
> b/src/mesa/drivers/dri/i965/gen6_clip_state.c
> index 8e893f5668f..1c8c23730be 100644
> --- a/src/mesa/drivers/dri/i965/gen6_clip_state.c
> +++ b/src/mesa/drivers/dri/i965/gen6_clip_state.c
> @@ -172,37 +172,6 @@ upload_clip_state(struct brw_context *brw)
> /* BRW_NEW_VIEWPORT_COUNT */
> const unsigned viewport_count = brw->clip.viewport_count;
>
> - /* We need to disable guardband clipping if the guardband (which we
> always
> - * program to the maximum screen-space bounding box of 8K x 8K) will be
> - * smaller than the viewport.
> - *
> - * Closely examining the clip determination formulas in the
> documentation
> - * reveals that objects will be discarded entirely if they're outside
> the
> - * (small) guardband, even if they're within the (large) viewport:
> - *
> - * TR = TR_GB || TR_VPXY || TR_VPZ || TR_UC || TR_NEGW
> - * TA = !TR && TA_GB && TA_VPZ && TA_NEGW
> - * MC = !(TA || TR)
> - *
> - * (TA is "Trivial Accept", TR is "Trivial Reject", MC is "Must Clip".)
> - *
> - * Disabling guardband clipping removes the TR_GB condition, which
> means
> - * they'll be considered MC ("Must Clip") unless they're rejected for
> - * some other reason.
> - *
> - * Note that there is no TA_VPXY condition. If there were, objects
> entirely
> - * inside a 16384x16384 viewport would be trivially accepted, breaking
> the
> - * "objects must have a screenspace bounding box not exceeding 8K in
> the X
> - * or Y direction" restriction. Instead, they're clipped.
> - */
> - for (unsigned i = 0; i < viewport_count; i++) {
> - if (ctx->ViewportArray[i].Width > 8192 ||
> - ctx->ViewportArray[i].Height > 8192) {
> - dw2 &= ~GEN6_CLIP_GB_TEST;
> - break;
> - }
> - }
> -
> /* BRW_NEW_RASTERIZER_DISCARD */
> if (ctx->RasterDiscard) {
> dw2 |= GEN6_CLIP_MODE_REJECT_ALL;
> --
> 2.11.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170131/d05afdbd/attachment-0001.html>
More information about the mesa-dev
mailing list