From d67c2c1cd5d0bb77a08a46d2e9a2bdae6b2c8ff3 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Wed, 19 Dec 2007 13:28:22 +1100 Subject: [PATCH] nouveau: remove sync hack, gallium got sort-of fixed. --- src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c | 15 +++++---------- src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h | 1 - src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c | 10 ---------- 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c b/src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c index d31026b..46df588 100644 --- a/src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c +++ b/src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c @@ -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); diff --git a/src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h b/src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h index 6d6633f..9978652 100644 --- a/src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h +++ b/src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h @@ -252,7 +252,6 @@ struct nouveau_bo_priv { int user; int refcount; - int sync_hack; }; #define nouveau_bo(n) ((struct nouveau_bo_priv *)(n)) diff --git a/src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c b/src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c index 36f2017..981c4dd 100644 --- a/src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c +++ b/src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c @@ -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)); -- 2.7.4