Mesa (master): r300g: Correct scissor setting, subtract 1 from window' s width and height

Cooper Yuan cooperyuan at kemper.freedesktop.org
Thu Aug 27 09:51:54 UTC 2009


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

Author: Cooper Yuan <cooperyuan at gmail.com>
Date:   Thu Aug 27 17:46:59 2009 +0800

r300g: Correct scissor setting, subtract 1 from window's width and height

---

 src/gallium/drivers/r300/r300_state.c   |    8 ++++----
 src/gallium/drivers/r300/r300_surface.c |    6 +++---
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 27680a3..c16cadd 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -538,16 +538,16 @@ static void r300_set_scissor_state(struct pipe_context* pipe,
             (state->minx << R300_SCISSORS_X_SHIFT) |
             (state->miny << R300_SCISSORS_Y_SHIFT);
         r300->scissor_state->scissor_bottom_right =
-            (state->maxx << R300_SCISSORS_X_SHIFT) |
-            (state->maxy << R300_SCISSORS_Y_SHIFT);
+            ((state->maxx - 1) << R300_SCISSORS_X_SHIFT) |
+            ((state->maxy - 1) << R300_SCISSORS_Y_SHIFT);
     } else {
         /* Offset of 1440 in non-R500 chipsets. */
         r300->scissor_state->scissor_top_left =
             ((state->minx + 1440) << R300_SCISSORS_X_SHIFT) |
             ((state->miny + 1440) << R300_SCISSORS_Y_SHIFT);
         r300->scissor_state->scissor_bottom_right =
-            ((state->maxx + 1440) << R300_SCISSORS_X_SHIFT) |
-            ((state->maxy + 1440) << R300_SCISSORS_Y_SHIFT);
+            (((state->maxx - 1) + 1440) << R300_SCISSORS_X_SHIFT) |
+            (((state->maxy - 1) + 1440) << R300_SCISSORS_Y_SHIFT);
     }
 
     r300->dirty_state |= R300_NEW_SCISSOR;
diff --git a/src/gallium/drivers/r300/r300_surface.c b/src/gallium/drivers/r300/r300_surface.c
index a093f83..96e6e4a 100644
--- a/src/gallium/drivers/r300/r300_surface.c
+++ b/src/gallium/drivers/r300/r300_surface.c
@@ -58,13 +58,13 @@ static void r300_surface_setup(struct r300_context* r300,
     OUT_CS_REG_SEQ(R300_SC_SCISSORS_TL, 2);
     if (caps->is_r500) {
         OUT_CS((x << R300_SCISSORS_X_SHIFT) | (y << R300_SCISSORS_Y_SHIFT));
-        OUT_CS((w << R300_SCISSORS_X_SHIFT) | (h << R300_SCISSORS_Y_SHIFT));
+        OUT_CS(((w - 1) << R300_SCISSORS_X_SHIFT) | ((h - 1) << R300_SCISSORS_Y_SHIFT));
     } else {
         /* Non-R500 chipsets have an offset of 1440 in their scissors. */
         OUT_CS(((x + 1440) << R300_SCISSORS_X_SHIFT) |
                 ((y + 1440) << R300_SCISSORS_Y_SHIFT));
-        OUT_CS(((w + 1440) << R300_SCISSORS_X_SHIFT) |
-                ((h + 1440) << R300_SCISSORS_Y_SHIFT));
+        OUT_CS((((w - 1) + 1440) << R300_SCISSORS_X_SHIFT) |
+                (((h - 1) + 1440) << R300_SCISSORS_Y_SHIFT));
     }
 
     /* Flush colorbuffer and blend caches. */




More information about the mesa-commit mailing list