Module: Mesa
Branch: master
Commit: 742832434abc8caff2425fcc174966b2834ac552
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=742832434abc8caff2425fcc174966b2834ac552

Author: Ilia Mirkin <imir...@alum.mit.edu>
Date:   Sun Sep 11 13:37:30 2016 -0400

st/mesa: fix is_scissor_enabled when X/Y are negative

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 <imir...@alum.mit.edu>
Reviewed-by: Michel Dänzer <michel.daen...@amd.com>
Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Cc: <mesa-sta...@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);
 }
 
 /**

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to