aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 18f22c59609..5b4c5f96ac3 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 08d1f450891..400ddcef06d 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 d99cdc73cac..8229bce89ee 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