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>