summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nvc0/nvc0_context.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-03-01 15:28:26 +1000
committerBen Skeggs <bskeggs@redhat.com>2011-03-01 17:23:31 +1000
commit1ba8e9510812f155359d380bda6876cdee5ba21e (patch)
treeed88f07edf5da16df482e1a3c35f5675f9ab7e2b /src/gallium/drivers/nvc0/nvc0_context.c
parent96d57722fda62e7710eb5281bcf014ddfb824ef9 (diff)
nouveau: ensure vbo_dirty is set when buffer write transfer complete
This introduces a shared nouveau_context struct to track such things. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'src/gallium/drivers/nvc0/nvc0_context.c')
-rw-r--r--src/gallium/drivers/nvc0/nvc0_context.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/gallium/drivers/nvc0/nvc0_context.c b/src/gallium/drivers/nvc0/nvc0_context.c
index 4979aab51c..d5dcf1fb02 100644
--- a/src/gallium/drivers/nvc0/nvc0_context.c
+++ b/src/gallium/drivers/nvc0/nvc0_context.c
@@ -84,22 +84,28 @@ nvc0_create(struct pipe_screen *pscreen, void *priv)
struct pipe_winsys *pipe_winsys = pscreen->winsys;
struct nvc0_screen *screen = nvc0_screen(pscreen);
struct nvc0_context *nvc0;
+ struct pipe_context *pipe;
nvc0 = CALLOC_STRUCT(nvc0_context);
if (!nvc0)
return NULL;
+ pipe = &nvc0->base.pipe;
+
nvc0->screen = screen;
+ nvc0->base.screen = &screen->base;
+ nvc0->base.copy_data = nvc0_m2mf_copy_linear;
+ nvc0->base.push_data = nvc0_m2mf_push_linear;
- nvc0->pipe.winsys = pipe_winsys;
- nvc0->pipe.screen = pscreen;
- nvc0->pipe.priv = priv;
+ pipe->winsys = pipe_winsys;
+ pipe->screen = pscreen;
+ pipe->priv = priv;
- nvc0->pipe.destroy = nvc0_destroy;
+ pipe->destroy = nvc0_destroy;
- nvc0->pipe.draw_vbo = nvc0_draw_vbo;
- nvc0->pipe.clear = nvc0_clear;
+ pipe->draw_vbo = nvc0_draw_vbo;
+ pipe->clear = nvc0_clear;
- nvc0->pipe.flush = nvc0_flush;
+ pipe->flush = nvc0_flush;
if (!screen->cur_ctx)
screen->cur_ctx = nvc0;
@@ -109,13 +115,13 @@ nvc0_create(struct pipe_screen *pscreen, void *priv)
nvc0_init_query_functions(nvc0);
nvc0_init_surface_functions(nvc0);
nvc0_init_state_functions(nvc0);
- nvc0_init_resource_functions(&nvc0->pipe);
+ nvc0_init_resource_functions(pipe);
- nvc0->draw = draw_create(&nvc0->pipe);
+ nvc0->draw = draw_create(pipe);
assert(nvc0->draw);
draw_set_rasterize_stage(nvc0->draw, nvc0_draw_render_stage(nvc0));
- return &nvc0->pipe;
+ return pipe;
}
struct resident {