rendered paste bodydiff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.c b/src/mesa/drivers/dri/unichrome/via_ioctl.c
index c8c6dc0..9f77af1 100644
--- a/src/mesa/drivers/dri/unichrome/via_ioctl.c
+++ b/src/mesa/drivers/dri/unichrome/via_ioctl.c
@@ -577,6 +577,10 @@ void viaResetPageFlippingLocked(struct via_context *vmesa)
vmesa->doPageFlip = vmesa->allowPageFlip = 0;
}
+void viaCheckWaitIdle(struct via_context *vmesa)
+{
+ while(!viaCheckIdle(vmesa));
+}
/*
* Copy the back buffer to the front buffer.
@@ -597,11 +601,14 @@ void viaCopyBuffer(const __DRIdrawablePrivate *dPriv)
VIA_FLUSH_DMA(vmesa);
- if (vmesa->vblank_flags == VBLANK_FLAG_SYNC &&
+/* if (vmesa->vblank_flags == VBLANK_FLAG_SYNC &&
vmesa->lastBreadcrumbWrite > 1)
viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastBreadcrumbWrite-1);
else
- viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastSwap[1]);
+ viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastSwap[1]); */
+ if (vmesa->vblank_flags == VBLANK_FLAG_SYNC) {
+ viaCheckWaitIdle(vmesa);
+ }
LOCK_HARDWARE(vmesa);
@@ -631,11 +638,16 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv)
struct via_renderbuffer buffer_tmp;
VIA_FLUSH_DMA(vmesa);
- if (vmesa->vblank_flags == VBLANK_FLAG_SYNC &&
+/* if (vmesa->vblank_flags == VBLANK_FLAG_SYNC &&
vmesa->lastBreadcrumbWrite > 1)
viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastBreadcrumbWrite - 1);
else
viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastSwap[0]);
+*/
+
+ if (vmesa->vblank_flags == VBLANK_FLAG_SYNC) {
+ viaCheckWaitIdle(vmesa);
+ }
LOCK_HARDWARE(vmesa);
viaDoPageFlipLocked(vmesa, vmesa->back.offset);