nouveau: remove sync hack, gallium got sort-of fixed.
authorBen Skeggs <skeggsb@gmail.com>
Wed, 19 Dec 2007 02:28:22 +0000 (13:28 +1100)
committerBen Skeggs <skeggsb@gmail.com>
Wed, 19 Dec 2007 02:36:20 +0000 (13:36 +1100)
src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c
src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h
src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c

index d31026b..46df588 100644 (file)
@@ -253,20 +253,15 @@ nouveau_bo_validate(struct nouveau_channel *chan, struct nouveau_bo *bo,
        if (!nvbo->drm.size) {
                nouveau_bo_realloc_gpu(nvbo, flags, nvbo->base.size);
                nouveau_bo_upload(nvbo);
+               if (!nvbo->user) {
+                       free(nvbo->sysmem);
+                       nvbo->sysmem = NULL;
+               }
        } else
        if (nvbo->user) {
                nouveau_bo_upload(nvbo);
-       } else
-       if (nvbo->base.map) {
-               nouveau_bo_upload(nvbo);
-               nvbo->sync_hack = 1;
-       }
-
-       if (!nvbo->user && !nvbo->base.map) {
-               free(nvbo->sysmem);
-               nvbo->sysmem = NULL;
        }
-
+       
        if (nvbo->fence)
                nouveau_fence_del(&nvbo->fence);
        nouveau_fence_ref(fence, &nvbo->fence);
index 6d6633f..9978652 100644 (file)
@@ -252,7 +252,6 @@ struct nouveau_bo_priv {
        int user;
 
        int refcount;
-       int sync_hack;
 };
 #define nouveau_bo(n) ((struct nouveau_bo_priv *)(n))
 
index 36f2017..981c4dd 100644 (file)
@@ -68,7 +68,6 @@ nouveau_pushbuf_flush(struct nouveau_channel *chan)
        struct nouveau_pushbuf_priv *nvpb = nouveau_pushbuf(nvchan->pb_tail);
        struct nouveau_pushbuf_bo *pbbo;
        struct nouveau_fence *fence = NULL;
-       int sync_hack = 0;
        int ret;
 
        if (!nvpb)
@@ -90,9 +89,6 @@ nouveau_pushbuf_flush(struct nouveau_channel *chan)
                ret = nouveau_bo_validate(chan, bo, fence, pbbo->flags);
                assert (ret == 0);
 
-               sync_hack |= nouveau_bo(bo)->sync_hack;
-               nouveau_bo(bo)->sync_hack = 0;
-
                while ((r = ptr_to_pbrel(pbbo->relocs))) {
                        uint32_t push;
 
@@ -144,12 +140,6 @@ nouveau_pushbuf_flush(struct nouveau_channel *chan)
        /* Kickoff */
        FIRE_RING_CH(chan);
 
-       if (sync_hack) {
-               struct nouveau_fence *f = NULL;
-               nouveau_fence_ref(nvpb->fence, &f);
-               nouveau_fence_wait(&f);
-       }
-
        /* Allocate space for next push buffer */
 out_realloc:
        nvpb = calloc(1, sizeof(struct nouveau_pushbuf_priv));