nouveau: temporary workaround for dodgy buffer code
authorBen Skeggs <skeggsb@gmail.com>
Tue, 20 Nov 2007 11:09:56 +0000 (22:09 +1100)
committerBen Skeggs <skeggsb@gmail.com>
Tue, 20 Nov 2007 11:09:56 +0000 (22:09 +1100)
src/mesa/drivers/dri/nouveau_winsys/nv04_region.c

index 98f0d55405834d32202ab571973c4916026de4c0..1160a8f340d1d793f7827e0c8772960b6a71a2b4 100644 (file)
@@ -108,6 +108,14 @@ nv04_region_copy(struct nouveau_context *nv, struct pipe_region *dst,
        OUT_RING  ((dy << 16) | dx);
        OUT_RING  (( h << 16) |  w);
 
+       nouveau_notifier_reset(nv->sync_notifier, 0);
+       BEGIN_RING(NvGdiRect, 0x104, 1);
+       OUT_RING  (0);
+       BEGIN_RING(NvGdiRect, 0x100, 1);
+       OUT_RING  (0);
+       FIRE_RING();
+       nouveau_notifier_wait_status(nv->sync_notifier, 0, 0, 2000);
+
        return 0;
 }
 
@@ -147,6 +155,14 @@ nv04_region_fill(struct nouveau_context *nv,
        OUT_RING  ((dx << 16) | dy);
        OUT_RING  (( w << 16) |  h);
 
+       nouveau_notifier_reset(nv->sync_notifier, 0);
+       BEGIN_RING(NvGdiRect, 0x104, 1);
+       OUT_RING  (0);
+       BEGIN_RING(NvGdiRect, 0x100, 1);
+       OUT_RING  (0);
+       FIRE_RING();
+       nouveau_notifier_wait_status(nv->sync_notifier, 0, 0, 2000);
+
        return 0;
 }