Attached patch fixes flag corruption at beginning of RTCW.



-- 
Michael.
Index: radeon_state.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/lib/GL/mesa/src/drv/radeon/radeon_state.c,v
retrieving revision 1.9.6.7
diff -u -3 -p -r1.9.6.7 radeon_state.c
--- radeon_state.c      2001/11/21 13:34:03     1.9.6.7
+++ radeon_state.c      2002/01/28 18:22:10
@@ -309,15 +309,16 @@ static void radeonUpdateScissor( GLconte
    if ( rmesa->dri.drawable ) {
       __DRIdrawablePrivate *dPriv = rmesa->dri.drawable;
 
-      int x = ctx->Scissor.X;
-      int y = dPriv->h - ctx->Scissor.Y - ctx->Scissor.Height;
-      int w = ctx->Scissor.X + ctx->Scissor.Width - 1;
-      int h = dPriv->h - ctx->Scissor.Y - 1;
+      int x, y, w, h;
+      x = MAX2(ctx->Scissor.X, dPriv->x);
+      y = MAX2(dPriv->h - ctx->Scissor.Y - ctx->Scissor.Height, 0);
+      w = MIN2(ctx->Scissor.X + ctx->Scissor.Width, dPriv->w);
+      h = MIN2(dPriv->h - ctx->Scissor.Y, dPriv->h);
 
       rmesa->state.scissor.rect.x1 = x + dPriv->x;
       rmesa->state.scissor.rect.y1 = y + dPriv->y;
-      rmesa->state.scissor.rect.x2 = w + dPriv->x + 1;
-      rmesa->state.scissor.rect.y2 = h + dPriv->y + 1;
+      rmesa->state.scissor.rect.x2 = w + dPriv->x;
+      rmesa->state.scissor.rect.y2 = h + dPriv->y;
 
       if ( ctx->Scissor.Enabled )
         rmesa->upload_cliprects = 1;

Reply via email to