summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2008-01-10 17:01:11 -0700
committerBrian <brian.paul@tungstengraphics.com>2008-01-10 17:01:11 -0700
commitcac8892ddb24ddb92b6f367689712925ee6c2d86 (patch)
tree1882b50046036a3602987a1b8fdfa68d44a2c34b
parent763e30748e99064fafeb0d9b34de8d732732689c (diff)
Additional parameters to vbuf_render->draw()
Pass complete information about vertex/index buffer location, size, etc.
-rw-r--r--src/mesa/pipe/draw/draw_vbuf.c14
-rw-r--r--src/mesa/pipe/draw/draw_vbuf.h6
-rw-r--r--src/mesa/pipe/i915simple/i915_prim_vbuf.c6
3 files changed, 20 insertions, 6 deletions
diff --git a/src/mesa/pipe/draw/draw_vbuf.c b/src/mesa/pipe/draw/draw_vbuf.c
index d010aaba07..3f6606de86 100644
--- a/src/mesa/pipe/draw/draw_vbuf.c
+++ b/src/mesa/pipe/draw/draw_vbuf.c
@@ -291,8 +291,14 @@ vbuf_flush_indices( struct draw_stage *stage )
assert(0);
}
- vbuf->render->draw(vbuf->render, vbuf->indices, vbuf->nr_indices);
-
+ vbuf->render->draw( vbuf->render,
+ vbuf->prim,
+ vbuf->indices,
+ vbuf->nr_indices,
+ vbuf->vertices,
+ vbuf->nr_vertices,
+ vbuf->vertex_size );
+
vbuf->nr_indices = 0;
}
@@ -373,7 +379,7 @@ static void vbuf_destroy( struct draw_stage *stage )
{
struct vbuf_stage *vbuf = vbuf_stage( stage );
- FREE( vbuf->indices );
+ align_free( vbuf->indices );
FREE( stage );
}
@@ -399,7 +405,7 @@ struct draw_stage *draw_vbuf_stage( struct draw_context *draw,
assert(render->max_indices < UNDEFINED_VERTEX_ID);
vbuf->max_indices = render->max_indices;
- vbuf->indices = MALLOC( vbuf->max_indices );
+ vbuf->indices = align_malloc( vbuf->max_indices, 16 );
vbuf->vertices = NULL;
vbuf->vertex_ptr = vbuf->vertices;
diff --git a/src/mesa/pipe/draw/draw_vbuf.h b/src/mesa/pipe/draw/draw_vbuf.h
index 43aa740f64..be4c4ab77b 100644
--- a/src/mesa/pipe/draw/draw_vbuf.h
+++ b/src/mesa/pipe/draw/draw_vbuf.h
@@ -82,8 +82,12 @@ struct vbuf_render {
* DrawElements, note indices are ushort:
*/
void (*draw)( struct vbuf_render *,
+ uint prim,
const ushort *indices,
- unsigned nr_indices );
+ uint nr_indices,
+ const void *vertices,
+ uint nr_vertices,
+ uint vertex_bytes);
/**
* Called when vbuf is done with this set of vertices:
diff --git a/src/mesa/pipe/i915simple/i915_prim_vbuf.c b/src/mesa/pipe/i915simple/i915_prim_vbuf.c
index 571ad40595..bdcc027ed7 100644
--- a/src/mesa/pipe/i915simple/i915_prim_vbuf.c
+++ b/src/mesa/pipe/i915simple/i915_prim_vbuf.c
@@ -136,8 +136,12 @@ i915_vbuf_render_set_primitive( struct vbuf_render *render,
static void
i915_vbuf_render_draw( struct vbuf_render *render,
+ uint prim,
const ushort *indices,
- unsigned nr_indices )
+ uint nr_indices,
+ const void *vertices,
+ uint nr_vertices,
+ uint vertex_bytes)
{
struct i915_vbuf_render *i915_render = i915_vbuf_render(render);
struct i915_context *i915 = i915_render->i915;