Date: Mon, 06 Nov 2006 00:46:42 -0800 From: vehemens <vehemens@verizon.net> To: freebsd-x11@freebsd.org Subject: GLX broken? Message-ID: <200611060046.42838.vehemens@verizon.net>
next in thread | raw e-mail | index | archive | help
Try 2. Got to love mailers
--- hw/xfree86/dri/dri.c.orig Fri Oct 13 15:52:55 2006
+++ hw/xfree86/dri/dri.c Mon Oct 30 22:06:48 2006
@@ -1577,8 +1577,12 @@
/* unwrap */
pScreen->WindowExposures = pDRIPriv->wrap.WindowExposures;
+ DRILock(pScreen, 0);
+
/* call lower layers */
(*pScreen->WindowExposures)(pWin, prgn, bsreg);
+
+ DRIUnlock(pScreen);
/* rewrap */
pDRIPriv->wrap.WindowExposures = pScreen->WindowExposures;
--- /usr/cvsup/xorg_current/mesa/drm/shared-core/radeon_cp.c Sat Sep 16
00:01:49 2006
+++ /usr/cvsup/drm-mine/shared-core/radeon_cp.c Sun Oct 22 03:54:49 2006
@@ -1937,7 +1937,7 @@
drm_radeon_private_t *dev_priv = dev->dev_private;
DRM_DEBUG("\n");
- LOCK_TEST_WITH_RETURN(dev, filp);
+// LOCK_TEST_WITH_RETURN(dev, filp);
return radeon_do_cp_idle(dev_priv);
}
@@ -1956,7 +1956,7 @@
DRM_DEVICE;
DRM_DEBUG("\n");
- LOCK_TEST_WITH_RETURN(dev, filp);
+// LOCK_TEST_WITH_RETURN(dev, filp);
return radeon_do_engine_reset(dev);
}
@@ -2150,7 +2150,7 @@
drm_dma_t __user *argp = (void __user *)data;
drm_dma_t d;
- LOCK_TEST_WITH_RETURN(dev, filp);
+// LOCK_TEST_WITH_RETURN(dev, filp);
DRM_COPY_FROM_USER_IOCTL(d, argp, sizeof(d));
--- /usr/cvsup/xorg_current/mesa/drm/shared-core/radeon_state.c Mon Oct 9
21:05:51 2006
+++ /usr/cvsup/drm-mine/shared-core/radeon_state.c Mon Oct 23 16:28:43
2006
@@ -1358,10 +1358,9 @@
/* Wait for the 3D stream to idle before dispatching the bitblt.
* This will prevent data corruption between the two streams.
*/
- BEGIN_RING(2);
-
- RADEON_WAIT_UNTIL_3D_IDLE();
+ BEGIN_RING(2);
+ RADEON_WAIT_UNTIL_IDLE();
ADVANCE_RING();
for (i = 0; i < nbox; i++) {
@@ -2485,7 +2484,7 @@
drm_radeon_indirect_t indirect;
RING_LOCALS;
- LOCK_TEST_WITH_RETURN(dev, filp);
+// LOCK_TEST_WITH_RETURN(dev, filp);
if (!dev_priv) {
DRM_ERROR("%s called with no initialization\n", __FUNCTION__);
@@ -2911,6 +2910,7 @@
drm_radeon_cmd_header_t header;
int orig_nbox, orig_bufsz;
char *kbuf = NULL;
+ RING_LOCALS;
LOCK_TEST_WITH_RETURN(dev, filp);
@@ -2950,6 +2950,14 @@
}
orig_nbox = cmdbuf.nbox;
+
+ /* Wait for the engine to idle before the indirect buffer
+ * is processed.
+ */
+
+ BEGIN_RING(2);
+ RADEON_WAIT_UNTIL_IDLE();
+ ADVANCE_RING();
if (dev_priv->microcode_version == UCODE_R300) {
int temp;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611060046.42838.vehemens>
