radeon: fix scissor regression
authorAlex Deucher <alexdeucher@gmail.com>
Fri, 9 Oct 2009 19:44:32 +0000 (15:44 -0400)
committerAlex Deucher <alexdeucher@gmail.com>
Fri, 9 Oct 2009 19:44:32 +0000 (15:44 -0400)
fixes fdo bug 24248

src/mesa/drivers/dri/r600/r700_state.c
src/mesa/drivers/dri/radeon/radeon_common.c

index 124469b5a6953b6cbc2d773d3266aba6ca3344a7..98f116d0a6a1a48f58e3612443a1b44a7c38438c 100644 (file)
@@ -1269,11 +1269,15 @@ void r700SetScissor(context_t *context) //---------------
                return;
        }
        if (context->radeon.state.scissor.enabled) {
-               /* r600 has exclusive scissors */
                x1 = context->radeon.state.scissor.rect.x1;
                y1 = context->radeon.state.scissor.rect.y1;
-               x2 = context->radeon.state.scissor.rect.x2 + 1;
-               y2 = context->radeon.state.scissor.rect.y2 + 1;
+               x2 = context->radeon.state.scissor.rect.x2;
+               y2 = context->radeon.state.scissor.rect.y2;
+               /* r600 has exclusive BR scissors */
+               if (context->radeon.radeonScreen->kernel_mm) {
+                       x2++;
+                       y2++;
+               }
        } else {
                if (context->radeon.radeonScreen->driScreen->dri2.enabled) {
                        x1 = 0;
index 9817ff856b94f9becb34feaf492c6986c8484e4c..8032cbcd6958a7afca439daa9e285e3523b9ec6d 100644 (file)
@@ -229,16 +229,15 @@ void radeonUpdateScissor( GLcontext *ctx )
        }
        if (!rmesa->radeonScreen->kernel_mm) {
           /* Fix scissors for dri 1 */
-
           __DRIdrawablePrivate *dPriv = radeon_get_drawable(rmesa);
           x1 += dPriv->x;
-          x2 += dPriv->x;
+          x2 += dPriv->x + 1;
           min_x += dPriv->x;
-          max_x += dPriv->x;
+          max_x += dPriv->x + 1;
           y1 += dPriv->y;
-          y2 += dPriv->y;
+          y2 += dPriv->y + 1;
           min_y += dPriv->y;
-          max_y += dPriv->y;
+          max_y += dPriv->y + 1;
        }
 
        rmesa->state.scissor.rect.x1 = CLAMP(x1,  min_x, max_x);