summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-06-17 23:55:23 +1000
committerBen Skeggs <skeggsb@gmail.com>2008-06-29 15:46:19 +1000
commit714cb4a86c1f503334b37ca6c24272fa1bdf7899 (patch)
tree5b1f6f81bc3ec761a8fd4a9d6fd48a1603bb7a07
parent3b88c3f4112a8bac52b7f7e613b1c2df8a14b752 (diff)
nv50: make sure static buffers (constbuf, tex control etc) get on reloc list
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.c2
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.h2
-rw-r--r--src/gallium/drivers/nv50/nv50_state_validate.c1
3 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
index 18f22c5960..5b4c5f96ac 100644
--- a/src/gallium/drivers/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nv50/nv50_screen.c
@@ -273,7 +273,7 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *nvws)
so_data (so, 1);
so_emit(nvws, so);
- so_ref(NULL, &so);
+ so_ref(so, &screen->static_init);
nvws->push_flush(nvws, 0, NULL);
screen->pipe.winsys = ws;
diff --git a/src/gallium/drivers/nv50/nv50_screen.h b/src/gallium/drivers/nv50/nv50_screen.h
index 08d1f45089..400ddcef06 100644
--- a/src/gallium/drivers/nv50/nv50_screen.h
+++ b/src/gallium/drivers/nv50/nv50_screen.h
@@ -18,6 +18,8 @@ struct nv50_screen {
struct pipe_buffer *tic;
struct pipe_buffer *tsc;
+
+ struct nouveau_stateobj *static_init;
};
static INLINE struct nv50_screen *
diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c b/src/gallium/drivers/nv50/nv50_state_validate.c
index d99cdc73ca..8229bce89e 100644
--- a/src/gallium/drivers/nv50/nv50_state_validate.c
+++ b/src/gallium/drivers/nv50/nv50_state_validate.c
@@ -151,6 +151,7 @@ nv50_state_emit(struct nv50_context *nv50)
so_emit_reloc_markers(nvws, nv50->state.vertprog);
so_emit_reloc_markers(nvws, nv50->state.fragprog);
so_emit_reloc_markers(nvws, nv50->state.vtxbuf);
+ so_emit_reloc_markers(nvws, nv50->screen->static_init);
}
boolean