diff options
author | Marek Olšák <[email protected]> | 2011-11-20 03:47:29 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2011-11-20 16:24:12 +0100 |
commit | c95bd12bec0834715894ee42e89e26c31a4ffac4 (patch) | |
tree | 8a91a5e7a8118ceeb92aec338e6a2046ced8aab4 /src/gallium/drivers | |
parent | a18dad8055b452595a1ddece7da912ab67a850af (diff) |
r600g: use u_vbuf_mgr to set/get the index buffer
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 18 |
2 files changed, 5 insertions, 14 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 92cb34dacad..d5bb298418f 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -192,7 +192,6 @@ struct r600_pipe_context { struct r600_vertex_element *vertex_elements; struct r600_pipe_resource_state fs_resource[PIPE_MAX_ATTRIBS]; struct pipe_framebuffer_state framebuffer; - struct pipe_index_buffer index_buffer; unsigned cb_target_mask; /* for saving when using blitter */ struct pipe_stencil_ref stencil_ref; diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 24d07be25be..9ecbc53522b 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -190,15 +190,7 @@ void r600_set_index_buffer(struct pipe_context *ctx, { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; - if (ib) { - pipe_resource_reference(&rctx->index_buffer.buffer, ib->buffer); - memcpy(&rctx->index_buffer, ib, sizeof(rctx->index_buffer)); - } else { - pipe_resource_reference(&rctx->index_buffer.buffer, NULL); - memset(&rctx->index_buffer, 0, sizeof(rctx->index_buffer)); - } - - /* TODO make this more like a state */ + u_vbuf_set_index_buffer(rctx->vbuf_mgr, ib); } void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, @@ -537,7 +529,7 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *dinfo) unsigned prim, mask, ls_mask = 0; if (!info.count || - (info.indexed && !rctx->index_buffer.buffer) || + (info.indexed && !rctx->vbuf_mgr->index_buffer.buffer) || !r600_conv_pipe_prim(info.mode, &prim)) { return; } @@ -552,9 +544,9 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *dinfo) if (info.indexed) { /* Initialize the index buffer struct. */ - pipe_resource_reference(&ib.buffer, rctx->index_buffer.buffer); - ib.index_size = rctx->index_buffer.index_size; - ib.offset = rctx->index_buffer.offset + info.start * ib.index_size; + pipe_resource_reference(&ib.buffer, rctx->vbuf_mgr->index_buffer.buffer); + ib.index_size = rctx->vbuf_mgr->index_buffer.index_size; + ib.offset = rctx->vbuf_mgr->index_buffer.offset + info.start * ib.index_size; /* Translate or upload, if needed. */ r600_translate_index_buffer(rctx, &ib, info.count); |