summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nvc0
diff options
context:
space:
mode:
authorBen Skeggs <[email protected]>2011-03-01 15:28:26 +1000
committerBen Skeggs <[email protected]>2011-03-01 17:23:31 +1000
commit1ba8e9510812f155359d380bda6876cdee5ba21e (patch)
treeed88f07edf5da16df482e1a3c35f5675f9ab7e2b /src/gallium/drivers/nvc0
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 <[email protected]>
Diffstat (limited to 'src/gallium/drivers/nvc0')
-rw-r--r--src/gallium/drivers/nvc0/nvc0_context.c26
-rw-r--r--src/gallium/drivers/nvc0/nvc0_context.h9
-rw-r--r--src/gallium/drivers/nvc0/nvc0_push.c4
-rw-r--r--src/gallium/drivers/nvc0/nvc0_query.c14
-rw-r--r--src/gallium/drivers/nvc0/nvc0_screen.c2
-rw-r--r--src/gallium/drivers/nvc0/nvc0_shader_state.c4
-rw-r--r--src/gallium/drivers/nvc0/nvc0_state.c116
-rw-r--r--src/gallium/drivers/nvc0/nvc0_surface.c8
-rw-r--r--src/gallium/drivers/nvc0/nvc0_tex.c2
-rw-r--r--src/gallium/drivers/nvc0/nvc0_transfer.c10
-rw-r--r--src/gallium/drivers/nvc0/nvc0_vbo.c18
11 files changed, 111 insertions, 102 deletions
diff --git a/src/gallium/drivers/nvc0/nvc0_context.c b/src/gallium/drivers/nvc0/nvc0_context.c
index 4979aab51c4..d5dcf1fb028 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 {
diff --git a/src/gallium/drivers/nvc0/nvc0_context.h b/src/gallium/drivers/nvc0/nvc0_context.h
index d779777ed3a..114e664fc58 100644
--- a/src/gallium/drivers/nvc0/nvc0_context.h
+++ b/src/gallium/drivers/nvc0/nvc0_context.h
@@ -19,6 +19,8 @@
#include "nvc0_program.h"
#include "nvc0_resource.h"
+#include "nouveau/nouveau_context.h"
+
#include "nvc0_3ddefs.xml.h"
#include "nvc0_3d.xml.h"
#include "nvc0_2d.xml.h"
@@ -64,7 +66,7 @@
#define NVC0_BUFCTX_COUNT 4
struct nvc0_context {
- struct pipe_context pipe;
+ struct nouveau_context base;
struct nvc0_screen *screen;
@@ -123,7 +125,6 @@ struct nvc0_context {
unsigned sample_mask;
- boolean vbo_dirty;
boolean vbo_push_hint;
struct nvc0_transform_feedback_state *tfb;
@@ -211,11 +212,11 @@ nvc0_create_sampler_view(struct pipe_context *,
/* nvc0_transfer.c */
void
-nvc0_m2mf_push_linear(struct pipe_context *pipe,
+nvc0_m2mf_push_linear(struct nouveau_context *nv,
struct nouveau_bo *dst, unsigned offset, unsigned domain,
unsigned size, void *data);
void
-nvc0_m2mf_copy_linear(struct pipe_context *pipe,
+nvc0_m2mf_copy_linear(struct nouveau_context *nv,
struct nouveau_bo *dst, unsigned dstoff, unsigned dstdom,
struct nouveau_bo *src, unsigned srcoff, unsigned srcdom,
unsigned size);
diff --git a/src/gallium/drivers/nvc0/nvc0_push.c b/src/gallium/drivers/nvc0/nvc0_push.c
index 84533f0443e..68544c90d29 100644
--- a/src/gallium/drivers/nvc0/nvc0_push.c
+++ b/src/gallium/drivers/nvc0/nvc0_push.c
@@ -229,7 +229,7 @@ nvc0_push_vbo(struct nvc0_context *nvc0, const struct pipe_draw_info *info)
struct pipe_vertex_buffer *vb = &nvc0->vtxbuf[i];
struct nv04_resource *res = nv04_resource(vb->buffer);
- data = nouveau_resource_map_offset(&nvc0->pipe, res,
+ data = nouveau_resource_map_offset(&nvc0->base, res,
vb->buffer_offset, NOUVEAU_BO_RD);
if (apply_bias && likely(!(nvc0->vertex->instance_bufs & (1 << i))))
@@ -239,7 +239,7 @@ nvc0_push_vbo(struct nvc0_context *nvc0, const struct pipe_draw_info *info)
}
if (info->indexed) {
- ctx.idxbuf = nouveau_resource_map_offset(&nvc0->pipe,
+ ctx.idxbuf = nouveau_resource_map_offset(&nvc0->base,
nv04_resource(nvc0->idxbuf.buffer),
nvc0->idxbuf.offset, NOUVEAU_BO_RD);
if (!ctx.idxbuf)
diff --git a/src/gallium/drivers/nvc0/nvc0_query.c b/src/gallium/drivers/nvc0/nvc0_query.c
index 338359bdfd2..ead015b6b84 100644
--- a/src/gallium/drivers/nvc0/nvc0_query.c
+++ b/src/gallium/drivers/nvc0/nvc0_query.c
@@ -330,10 +330,12 @@ nvc0_render_condition(struct pipe_context *pipe,
void
nvc0_init_query_functions(struct nvc0_context *nvc0)
{
- nvc0->pipe.create_query = nvc0_query_create;
- nvc0->pipe.destroy_query = nvc0_query_destroy;
- nvc0->pipe.begin_query = nvc0_query_begin;
- nvc0->pipe.end_query = nvc0_query_end;
- nvc0->pipe.get_query_result = nvc0_query_result;
- nvc0->pipe.render_condition = nvc0_render_condition;
+ struct pipe_context *pipe = &nvc0->base.pipe;
+
+ pipe->create_query = nvc0_query_create;
+ pipe->destroy_query = nvc0_query_destroy;
+ pipe->begin_query = nvc0_query_begin;
+ pipe->end_query = nvc0_query_end;
+ pipe->get_query_result = nvc0_query_result;
+ pipe->render_condition = nvc0_render_condition;
}
diff --git a/src/gallium/drivers/nvc0/nvc0_screen.c b/src/gallium/drivers/nvc0/nvc0_screen.c
index 82209c58c2c..b84a1bee8da 100644
--- a/src/gallium/drivers/nvc0/nvc0_screen.c
+++ b/src/gallium/drivers/nvc0/nvc0_screen.c
@@ -377,8 +377,6 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
screen->base.vertex_buffer_flags = NOUVEAU_BO_GART;
screen->base.index_buffer_flags = 0;
- screen->base.copy_data = nvc0_m2mf_copy_linear;
- screen->base.push_data = nvc0_m2mf_push_linear;
ret = nouveau_bo_new(dev, NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0, 4096,
&screen->fence.bo);
diff --git a/src/gallium/drivers/nvc0/nvc0_shader_state.c b/src/gallium/drivers/nvc0/nvc0_shader_state.c
index 765f1dae576..79b5f3d81cc 100644
--- a/src/gallium/drivers/nvc0/nvc0_shader_state.c
+++ b/src/gallium/drivers/nvc0/nvc0_shader_state.c
@@ -59,9 +59,9 @@ nvc0_program_validate(struct nvc0_context *nvc0, struct nvc0_program *prog)
prog->code_base = prog->res->start;
- nvc0_m2mf_push_linear(&nvc0->pipe, nvc0->screen->text, prog->code_base,
+ nvc0_m2mf_push_linear(&nvc0->base, nvc0->screen->text, prog->code_base,
NOUVEAU_BO_VRAM, NVC0_SHADER_HEADER_SIZE, prog->hdr);
- nvc0_m2mf_push_linear(&nvc0->pipe, nvc0->screen->text,
+ nvc0_m2mf_push_linear(&nvc0->base, nvc0->screen->text,
prog->code_base + NVC0_SHADER_HEADER_SIZE,
NOUVEAU_BO_VRAM, prog->code_size, prog->code);
diff --git a/src/gallium/drivers/nvc0/nvc0_state.c b/src/gallium/drivers/nvc0/nvc0_state.c
index 36c751e251c..ee4680efeca 100644
--- a/src/gallium/drivers/nvc0/nvc0_state.c
+++ b/src/gallium/drivers/nvc0/nvc0_state.c
@@ -876,62 +876,64 @@ nvc0_set_transform_feedback_buffers(struct pipe_context *pipe,
void
nvc0_init_state_functions(struct nvc0_context *nvc0)
{
- nvc0->pipe.create_blend_state = nvc0_blend_state_create;
- nvc0->pipe.bind_blend_state = nvc0_blend_state_bind;
- nvc0->pipe.delete_blend_state = nvc0_blend_state_delete;
-
- nvc0->pipe.create_rasterizer_state = nvc0_rasterizer_state_create;
- nvc0->pipe.bind_rasterizer_state = nvc0_rasterizer_state_bind;
- nvc0->pipe.delete_rasterizer_state = nvc0_rasterizer_state_delete;
-
- nvc0->pipe.create_depth_stencil_alpha_state = nvc0_zsa_state_create;
- nvc0->pipe.bind_depth_stencil_alpha_state = nvc0_zsa_state_bind;
- nvc0->pipe.delete_depth_stencil_alpha_state = nvc0_zsa_state_delete;
-
- nvc0->pipe.create_sampler_state = nvc0_sampler_state_create;
- nvc0->pipe.delete_sampler_state = nvc0_sampler_state_delete;
- nvc0->pipe.bind_vertex_sampler_states = nvc0_vp_sampler_states_bind;
- nvc0->pipe.bind_fragment_sampler_states = nvc0_fp_sampler_states_bind;
- nvc0->pipe.bind_geometry_sampler_states = nvc0_gp_sampler_states_bind;
-
- nvc0->pipe.create_sampler_view = nvc0_create_sampler_view;
- nvc0->pipe.sampler_view_destroy = nvc0_sampler_view_destroy;
- nvc0->pipe.set_vertex_sampler_views = nvc0_vp_set_sampler_views;
- nvc0->pipe.set_fragment_sampler_views = nvc0_fp_set_sampler_views;
- nvc0->pipe.set_geometry_sampler_views = nvc0_gp_set_sampler_views;
-
- nvc0->pipe.create_vs_state = nvc0_vp_state_create;
- nvc0->pipe.create_fs_state = nvc0_fp_state_create;
- nvc0->pipe.create_gs_state = nvc0_gp_state_create;
- nvc0->pipe.bind_vs_state = nvc0_vp_state_bind;
- nvc0->pipe.bind_fs_state = nvc0_fp_state_bind;
- nvc0->pipe.bind_gs_state = nvc0_gp_state_bind;
- nvc0->pipe.delete_vs_state = nvc0_sp_state_delete;
- nvc0->pipe.delete_fs_state = nvc0_sp_state_delete;
- nvc0->pipe.delete_gs_state = nvc0_sp_state_delete;
-
- nvc0->pipe.set_blend_color = nvc0_set_blend_color;
- nvc0->pipe.set_stencil_ref = nvc0_set_stencil_ref;
- nvc0->pipe.set_clip_state = nvc0_set_clip_state;
- nvc0->pipe.set_sample_mask = nvc0_set_sample_mask;
- nvc0->pipe.set_constant_buffer = nvc0_set_constant_buffer;
- nvc0->pipe.set_framebuffer_state = nvc0_set_framebuffer_state;
- nvc0->pipe.set_polygon_stipple = nvc0_set_polygon_stipple;
- nvc0->pipe.set_scissor_state = nvc0_set_scissor_state;
- nvc0->pipe.set_viewport_state = nvc0_set_viewport_state;
-
- nvc0->pipe.create_vertex_elements_state = nvc0_vertex_state_create;
- nvc0->pipe.delete_vertex_elements_state = nvc0_vertex_state_delete;
- nvc0->pipe.bind_vertex_elements_state = nvc0_vertex_state_bind;
-
- nvc0->pipe.set_vertex_buffers = nvc0_set_vertex_buffers;
- nvc0->pipe.set_index_buffer = nvc0_set_index_buffer;
-
- nvc0->pipe.create_stream_output_state = nvc0_tfb_state_create;
- nvc0->pipe.delete_stream_output_state = nvc0_tfb_state_delete;
- nvc0->pipe.bind_stream_output_state = nvc0_tfb_state_bind;
- nvc0->pipe.set_stream_output_buffers = nvc0_set_transform_feedback_buffers;
-
- nvc0->pipe.redefine_user_buffer = u_default_redefine_user_buffer;
+ struct pipe_context *pipe = &nvc0->base.pipe;
+
+ pipe->create_blend_state = nvc0_blend_state_create;
+ pipe->bind_blend_state = nvc0_blend_state_bind;
+ pipe->delete_blend_state = nvc0_blend_state_delete;
+
+ pipe->create_rasterizer_state = nvc0_rasterizer_state_create;
+ pipe->bind_rasterizer_state = nvc0_rasterizer_state_bind;
+ pipe->delete_rasterizer_state = nvc0_rasterizer_state_delete;
+
+ pipe->create_depth_stencil_alpha_state = nvc0_zsa_state_create;
+ pipe->bind_depth_stencil_alpha_state = nvc0_zsa_state_bind;
+ pipe->delete_depth_stencil_alpha_state = nvc0_zsa_state_delete;
+
+ pipe->create_sampler_state = nvc0_sampler_state_create;
+ pipe->delete_sampler_state = nvc0_sampler_state_delete;
+ pipe->bind_vertex_sampler_states = nvc0_vp_sampler_states_bind;
+ pipe->bind_fragment_sampler_states = nvc0_fp_sampler_states_bind;
+ pipe->bind_geometry_sampler_states = nvc0_gp_sampler_states_bind;
+
+ pipe->create_sampler_view = nvc0_create_sampler_view;
+ pipe->sampler_view_destroy = nvc0_sampler_view_destroy;
+ pipe->set_vertex_sampler_views = nvc0_vp_set_sampler_views;
+ pipe->set_fragment_sampler_views = nvc0_fp_set_sampler_views;
+ pipe->set_geometry_sampler_views = nvc0_gp_set_sampler_views;
+
+ pipe->create_vs_state = nvc0_vp_state_create;
+ pipe->create_fs_state = nvc0_fp_state_create;
+ pipe->create_gs_state = nvc0_gp_state_create;
+ pipe->bind_vs_state = nvc0_vp_state_bind;
+ pipe->bind_fs_state = nvc0_fp_state_bind;
+ pipe->bind_gs_state = nvc0_gp_state_bind;
+ pipe->delete_vs_state = nvc0_sp_state_delete;
+ pipe->delete_fs_state = nvc0_sp_state_delete;
+ pipe->delete_gs_state = nvc0_sp_state_delete;
+
+ pipe->set_blend_color = nvc0_set_blend_color;
+ pipe->set_stencil_ref = nvc0_set_stencil_ref;
+ pipe->set_clip_state = nvc0_set_clip_state;
+ pipe->set_sample_mask = nvc0_set_sample_mask;
+ pipe->set_constant_buffer = nvc0_set_constant_buffer;
+ pipe->set_framebuffer_state = nvc0_set_framebuffer_state;
+ pipe->set_polygon_stipple = nvc0_set_polygon_stipple;
+ pipe->set_scissor_state = nvc0_set_scissor_state;
+ pipe->set_viewport_state = nvc0_set_viewport_state;
+
+ pipe->create_vertex_elements_state = nvc0_vertex_state_create;
+ pipe->delete_vertex_elements_state = nvc0_vertex_state_delete;
+ pipe->bind_vertex_elements_state = nvc0_vertex_state_bind;
+
+ pipe->set_vertex_buffers = nvc0_set_vertex_buffers;
+ pipe->set_index_buffer = nvc0_set_index_buffer;
+
+ pipe->create_stream_output_state = nvc0_tfb_state_create;
+ pipe->delete_stream_output_state = nvc0_tfb_state_delete;
+ pipe->bind_stream_output_state = nvc0_tfb_state_bind;
+ pipe->set_stream_output_buffers = nvc0_set_transform_feedback_buffers;
+
+ pipe->redefine_user_buffer = u_default_redefine_user_buffer;
}
diff --git a/src/gallium/drivers/nvc0/nvc0_surface.c b/src/gallium/drivers/nvc0/nvc0_surface.c
index 6f39bbbb170..a4b2b948123 100644
--- a/src/gallium/drivers/nvc0/nvc0_surface.c
+++ b/src/gallium/drivers/nvc0/nvc0_surface.c
@@ -367,9 +367,11 @@ nvc0_clear(struct pipe_context *pipe, unsigned buffers,
void
nvc0_init_surface_functions(struct nvc0_context *nvc0)
{
- nvc0->pipe.resource_copy_region = nvc0_resource_copy_region;
- nvc0->pipe.clear_render_target = nvc0_clear_render_target;
- nvc0->pipe.clear_depth_stencil = nvc0_clear_depth_stencil;
+ struct pipe_context *pipe = &nvc0->base.pipe;
+
+ pipe->resource_copy_region = nvc0_resource_copy_region;
+ pipe->clear_render_target = nvc0_clear_render_target;
+ pipe->clear_depth_stencil = nvc0_clear_depth_stencil;
}
diff --git a/src/gallium/drivers/nvc0/nvc0_tex.c b/src/gallium/drivers/nvc0/nvc0_tex.c
index f651e54e1db..6822e597b36 100644
--- a/src/gallium/drivers/nvc0/nvc0_tex.c
+++ b/src/gallium/drivers/nvc0/nvc0_tex.c
@@ -252,7 +252,7 @@ nvc0_validate_tsc(struct nvc0_context *nvc0, int s)
if (tsc->id < 0) {
tsc->id = nvc0_screen_tsc_alloc(nvc0->screen, tsc);
- nvc0_m2mf_push_linear(&nvc0->pipe, nvc0->screen->txc,
+ nvc0_m2mf_push_linear(&nvc0->base, nvc0->screen->txc,
65536 + tsc->id * 32, NOUVEAU_BO_VRAM,
32, tsc->tsc);
need_flush = TRUE;
diff --git a/src/gallium/drivers/nvc0/nvc0_transfer.c b/src/gallium/drivers/nvc0/nvc0_transfer.c
index bbb24fa0528..a38bdb8f0a6 100644
--- a/src/gallium/drivers/nvc0/nvc0_transfer.c
+++ b/src/gallium/drivers/nvc0/nvc0_transfer.c
@@ -104,12 +104,11 @@ nvc0_m2mf_transfer_rect(struct pipe_screen *pscreen,
}
void
-nvc0_m2mf_push_linear(struct pipe_context *pipe,
+nvc0_m2mf_push_linear(struct nouveau_context *nv,
struct nouveau_bo *dst, unsigned offset, unsigned domain,
unsigned size, void *data)
{
- struct nvc0_context *nvc0 = nvc0_context(pipe);
- struct nouveau_channel *chan = nvc0->screen->base.channel;
+ struct nouveau_channel *chan = nv->screen->channel;
uint32_t *src = (uint32_t *)data;
unsigned count = (size + 3) / 4;
@@ -144,13 +143,12 @@ nvc0_m2mf_push_linear(struct pipe_context *pipe,
}
void
-nvc0_m2mf_copy_linear(struct pipe_context *pipe,
+nvc0_m2mf_copy_linear(struct nouveau_context *nv,
struct nouveau_bo *dst, unsigned dstoff, unsigned dstdom,
struct nouveau_bo *src, unsigned srcoff, unsigned srcdom,
unsigned size)
{
- struct nvc0_context *nvc0 = nvc0_context(pipe);
- struct nouveau_channel *chan = nvc0->screen->base.channel;
+ struct nouveau_channel *chan = nv->screen->channel;
while (size) {
unsigned bytes = MIN2(size, 1 << 17);
diff --git a/src/gallium/drivers/nvc0/nvc0_vbo.c b/src/gallium/drivers/nvc0/nvc0_vbo.c
index 14bea675a11..e7e7ce7dc22 100644
--- a/src/gallium/drivers/nvc0/nvc0_vbo.c
+++ b/src/gallium/drivers/nvc0/nvc0_vbo.c
@@ -136,7 +136,7 @@ nvc0_emit_vtxattr(struct nvc0_context *nvc0, struct pipe_vertex_buffer *vb,
int i;
const unsigned nc = util_format_get_nr_components(ve->src_format);
- data = nouveau_resource_map_offset(&nvc0->pipe, res, vb->buffer_offset +
+ data = nouveau_resource_map_offset(&nvc0->base, res, vb->buffer_offset +
ve->src_offset, NOUVEAU_BO_RD);
util_format_read_4f(ve->src_format, v, 0, data, 0, 0, 0, 1, 1);
@@ -193,13 +193,13 @@ nvc0_prevalidate_vbufs(struct nvc0_context *nvc0)
nvc0_vbuf_range(nvc0, i, &base, &size);
nouveau_user_buffer_upload(buf, base, size);
} else {
- nouveau_buffer_migrate(&nvc0->pipe, buf, NOUVEAU_BO_GART);
+ nouveau_buffer_migrate(&nvc0->base, buf, NOUVEAU_BO_GART);
}
- nvc0->vbo_dirty = TRUE;
+ nvc0->base.vbo_dirty = TRUE;
}
}
nvc0_bufctx_add_resident(nvc0, NVC0_BUFCTX_VERTEX, buf, NOUVEAU_BO_RD);
- nouveau_buffer_adjust_score(&nvc0->pipe, buf, 1);
+ nouveau_buffer_adjust_score(&nvc0->base, buf, 1);
}
}
@@ -240,7 +240,7 @@ nvc0_update_user_vbufs(struct nvc0_context *nvc0)
OUT_RESRCh(chan, buf, offset, NOUVEAU_BO_RD);
OUT_RESRCl(chan, buf, offset, NOUVEAU_BO_RD);
}
- nvc0->vbo_dirty = TRUE;
+ nvc0->base.vbo_dirty = TRUE;
}
static INLINE void
@@ -518,7 +518,7 @@ nvc0_draw_elements(struct nvc0_context *nvc0, boolean shorten,
unsigned offset = nvc0->idxbuf.offset;
unsigned limit = nvc0->idxbuf.buffer->width0 - 1;
- nouveau_buffer_adjust_score(&nvc0->pipe, res, 1);
+ nouveau_buffer_adjust_score(&nvc0->base, res, 1);
while (instance_count--) {
MARK_RING (chan, 11, 4);
@@ -539,7 +539,7 @@ nvc0_draw_elements(struct nvc0_context *nvc0, boolean shorten,
mode |= NVC0_3D_VERTEX_BEGIN_GL_INSTANCE_NEXT;
}
} else {
- data = nouveau_resource_map_offset(&nvc0->pipe,
+ data = nouveau_resource_map_offset(&nvc0->base,
nv04_resource(nvc0->idxbuf.buffer),
nvc0->idxbuf.offset, NOUVEAU_BO_RD);
if (!data)
@@ -610,10 +610,10 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
OUT_RING (chan, info->start_instance);
}
- if (nvc0->vbo_dirty) {
+ if (nvc0->base.vbo_dirty) {
BEGIN_RING(chan, RING_3D(VERTEX_ARRAY_FLUSH), 1);
OUT_RING (chan, 0);
- nvc0->vbo_dirty = FALSE;
+ nvc0->base.vbo_dirty = FALSE;
}
if (!info->indexed) {