diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2007-12-19 13:28:22 +1100 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2007-12-19 13:36:20 +1100 |
commit | d67c2c1cd5d0bb77a08a46d2e9a2bdae6b2c8ff3 (patch) | |
tree | 274cc4ae31a0f26b0e66667fe2be35478a8163ed /src/mesa | |
parent | 3e1e40ee79317dc5817af25f65d4a483b08fe592 (diff) |
nouveau: remove sync hack, gallium got sort-of fixed.
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c | 15 | ||||
-rw-r--r-- | src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h | 1 | ||||
-rw-r--r-- | 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 d31026b52d..46df588b5b 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 6d6633fac3..9978652dd6 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 36f201712a..981c4dd7dd 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)); |