[Mesa-dev] [PATCH] st/mesa: fix is_scissor_enabled when X/Y are negative

Marek Olšák maraeo at gmail.com
Mon Sep 12 15:52:18 UTC 2016


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Sun, Sep 11, 2016 at 7:40 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Similar to commit 49c24d8a24 ("i965: fix noop_scissor range issue on
> width/height") - take the X/Y into account to determine whether the
> scissor covers the whole area or not.
>
> Fixes the recently-added gl-1.0-scissor-depth-clear-negative-xy piglit
> test.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/state_tracker/st_cb_clear.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c
> index e70cba6..813ba9b 100644
> --- a/src/mesa/state_tracker/st_cb_clear.c
> +++ b/src/mesa/state_tracker/st_cb_clear.c
> @@ -313,11 +313,13 @@ clear_with_quad(struct gl_context *ctx, unsigned clear_buffers)
>  static inline GLboolean
>  is_scissor_enabled(struct gl_context *ctx, struct gl_renderbuffer *rb)
>  {
> +   const struct gl_scissor_rect *scissor = &ctx->Scissor.ScissorArray[0];
> +
>     return (ctx->Scissor.EnableFlags & 1) &&
> -          (ctx->Scissor.ScissorArray[0].X > 0 ||
> -           ctx->Scissor.ScissorArray[0].Y > 0 ||
> -           (unsigned) ctx->Scissor.ScissorArray[0].Width < rb->Width ||
> -           (unsigned) ctx->Scissor.ScissorArray[0].Height < rb->Height);
> +          (scissor->X > 0 ||
> +           scissor->Y > 0 ||
> +           scissor->X + scissor->Width < rb->Width ||
> +           scissor->Y + scissor->Height < rb->Height);
>  }
>
>  /**
> --
> 2.7.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list