From da84f0b642a65614c2618121869d5cd45ad986f5 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 1 Sep 2005 20:10:17 +0000 Subject: fix page flipping breakage --- src/mesa/drivers/dri/radeon/radeon_lock.c | 44 ++++++------------------------- 1 file changed, 8 insertions(+), 36 deletions(-) (limited to 'src/mesa/drivers/dri/radeon/radeon_lock.c') diff --git a/src/mesa/drivers/dri/radeon/radeon_lock.c b/src/mesa/drivers/dri/radeon/radeon_lock.c index 2fc5bc7aef..c342b11508 100644 --- a/src/mesa/drivers/dri/radeon/radeon_lock.c +++ b/src/mesa/drivers/dri/radeon/radeon_lock.c @@ -40,8 +40,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_tex.h" #include "radeon_state.h" #include "radeon_ioctl.h" + #include "drirenderbuffer.h" + #if DEBUG_LOCKING char *prevLockFile = NULL; int prevLockLine = 0; @@ -52,40 +54,9 @@ int prevLockLine = 0; static void radeonUpdatePageFlipping( radeonContextPtr rmesa ) { - if (rmesa->doPageFlip != rmesa->sarea->pfState - || rmesa->sarea->pfState) { - /* If page flipping is on, re we're turning it on/off now we need - * to update the flipped buffer info. - */ - struct gl_framebuffer *fb = rmesa->glCtx->WinSysDrawBuffer; - driRenderbuffer *front_drb - = (driRenderbuffer *) fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer; - driRenderbuffer *back_drb - = (driRenderbuffer *) fb->Attachment[BUFFER_BACK_LEFT].Renderbuffer; - - if (rmesa->sarea->pfState && rmesa->sarea->pfCurrentPage == 1) { - /* flipped buffers */ - front_drb->flippedOffset = back_drb->offset; - front_drb->flippedPitch = back_drb->pitch; - back_drb->flippedOffset = front_drb->offset; - back_drb->flippedPitch = front_drb->pitch; - } - else { - /* unflipped buffers */ - front_drb->flippedOffset = front_drb->offset; - front_drb->flippedPitch = front_drb->pitch; - if (back_drb) { - /* back buffer is non-existant when single buffered */ - back_drb->flippedOffset = back_drb->offset; - back_drb->flippedPitch = back_drb->pitch; - } - } - - /* update local state */ - rmesa->doPageFlip = rmesa->sarea->pfState; - - /* set hw.ctx.cmd state here */ - radeonUpdateDrawBuffer(rmesa->glCtx); + rmesa->doPageFlip = rmesa->sarea->pfState; + if (!rmesa->doPageFlip) { + driFlipRenderbuffers(rmesa->glCtx->WinSysDrawBuffer, GL_FALSE); } } @@ -117,7 +88,6 @@ void radeonGetLock( radeonContextPtr rmesa, GLuint flags ) */ DRI_VALIDATE_DRAWABLE_INFO( sPriv, dPriv ); - if ( rmesa->lastStamp != dPriv->lastStamp ) { radeonUpdatePageFlipping( rmesa ); if (rmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT) @@ -132,7 +102,9 @@ void radeonGetLock( radeonContextPtr rmesa, GLuint flags ) if (rmesa->sarea->tiling_enabled) { rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] |= RADEON_COLOR_TILE_ENABLE; } - else rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] &= ~RADEON_COLOR_TILE_ENABLE; + else { + rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] &= ~RADEON_COLOR_TILE_ENABLE; + } if ( sarea->ctx_owner != rmesa->dri.hwContext ) { int i; -- cgit v1.2.3