summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2007-12-19 13:28:22 +1100
committerBen Skeggs <skeggsb@gmail.com>2007-12-19 13:36:20 +1100
commitd67c2c1cd5d0bb77a08a46d2e9a2bdae6b2c8ff3 (patch)
tree274cc4ae31a0f26b0e66667fe2be35478a8163ed /src
parent3e1e40ee79317dc5817af25f65d4a483b08fe592 (diff)
nouveau: remove sync hack, gallium got sort-of fixed.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/nouveau_winsys/nouveau_bo.c15
-rw-r--r--src/mesa/drivers/dri/nouveau_winsys/nouveau_drmif.h1
-rw-r--r--src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c10
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));