On Wed, Apr 1, 2009 at 3:52 AM, Thomas Hellstrom <[email protected]> wrote: > Ian Romanick wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> [email protected] wrote: >> >>> From: Thomas Hellstrom <thellstrom-at-vmware-dot-com> >>> >>> /* >>> @@ -186,23 +183,20 @@ static int driBindContext(__DRIcontext *pcp, >>> */ >>> >>> if (!psp->dri2.enabled) { >>> - if (!pdp->pStamp || *pdp->pStamp != pdp->lastStamp) { >>> + if (pdp && !pdp->pStamp) { >>> DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); >>> __driUtilUpdateDrawableInfo(pdp); >>> DRM_SPINUNLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); >>> } >>> - >>> - if ((pdp != prp) && (!prp->pStamp || *prp->pStamp != prp->lastStamp)) { >>> + if (prp && pdp != prp && !prp->pStamp) { >>> DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); >>> __driUtilUpdateDrawableInfo(prp); >>> DRM_SPINUNLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); >>> - } >>> + } >>> >> >> These changes seem to do the opposite of what the commit message says. >> "Don't update drawables if the stamps aren't matching," but this code >> removes the check. >> > The previous code read the stamps outside of the lock on each > makeCurrent and went ahead updating the drawables. Their info > immediately became stale so the driver had to do it again anyway. > So this code removes that check and only updates the drawables if they > aren't initialized.
Just FYI, in driSwapBuffers() we check for cliprects and exit early if there are none (before calling down to the driver's SwapBuffers()), so we never get cliprects and never swap. I went ahead and fixed it. ------------------------------------------------------------------------------ This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ Mesa3d-dev mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
