Here are some basic patches for bugs in the r128 driver. They don't by
themselves fix my problem, but they contribute.

Thanks in advance,
--
Martijn van Oosterhout <[EMAIL PROTECTED]> http://svana.org/kleptog/
--- Mesa-6.4.2/src/mesa/drivers/dri/r128/r128_state.c	2005-05-04 22:11:38.000000000 +0200
+++ mesa-6.4.2/src/mesa/drivers/dri/r128/r128_state.c	2006-06-28 11:26:07.000000000 +0200
@@ -423,8 +423,14 @@
       x2 += drawable->x;
       y2 += drawable->y;
 
-      rmesa->setup.sc_top_left_c     = ((y1 << 16) | x1);
-      rmesa->setup.sc_bottom_right_c = ((y2 << 16) | x2);
+      /* Clamp values to screen to avoid wrapping problems */
+      if( x1 < 0 ) x1 = 0;
+      if( x1 >= rmesa->driScreen->fbWidth ) x1 = rmesa->driScreen->fbWidth - 1;
+      if( y1 < 0 ) y1 = 0;
+      if( y1 >= rmesa->driScreen->fbHeight ) y1 = rmesa->driScreen->fbHeight - 1;
+
+      rmesa->setup.sc_top_left_c     = (((y1 & 0x3FFF) << 16) | (x1 & 0x3FFF));
+      rmesa->setup.sc_bottom_right_c = (((y2 & 0x3FFF) << 16) | (x2 & 0x3FFF));
 
       rmesa->dirty |= R128_UPLOAD_CONTEXT;
    }
@@ -634,8 +640,8 @@
    int x = rmesa->driDrawable->x;
    int y = rmesa->driDrawable->y;
 
-   rmesa->setup.window_xy_offset = ((y << R128_WINDOW_Y_SHIFT) |
-				    (x << R128_WINDOW_X_SHIFT));
+   rmesa->setup.window_xy_offset = (((y & 0xFFF) << R128_WINDOW_Y_SHIFT) |
+				    ((x & 0xFFF) << R128_WINDOW_X_SHIFT));
 
    rmesa->dirty |= R128_UPLOAD_CONTEXT | R128_UPLOAD_WINDOW;
 }
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to