diff options
author | Keith Whitwell <keith@tungstengraphics.com> | 2007-09-25 13:20:53 +0100 |
---|---|---|
committer | Keith Whitwell <keith@tungstengraphics.com> | 2007-09-25 13:23:20 +0100 |
commit | a37e0daeb97bb36ba10038b12a909e22e08b52c4 (patch) | |
tree | 6c8a10ceb9a7764a63db627f0602f552709631d2 /src/mesa/pipe/draw/draw_private.h | |
parent | 45b37dc078130b64e110d1a965960c60c56f0e60 (diff) |
First attempt at building vertex buffers post-clip.
Build a buffer of contigous vertices and indices at the backend of our
software transformation/clipping path. This will become the mechanism
for emitting buffers of vertices to rasterization hardware.
This is similar to but not the same as the post-transform vertex cache.
In particular, these vertices are subject to clipping, culling, poly offset,
etc. The vertices emitted will all be used by hardware.
TODOs include the actual transformation to hardware vertex formats, moving
this out of softpipe to somewhere more useful and allowing >1 primitive to
share the generated VB.
Diffstat (limited to 'src/mesa/pipe/draw/draw_private.h')
-rw-r--r-- | src/mesa/pipe/draw/draw_private.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/pipe/draw/draw_private.h b/src/mesa/pipe/draw/draw_private.h index 1285f3200c..04d38c4e0c 100644 --- a/src/mesa/pipe/draw/draw_private.h +++ b/src/mesa/pipe/draw/draw_private.h @@ -54,7 +54,8 @@ struct vertex_header { unsigned clipmask:12; unsigned edgeflag:1; - unsigned pad:19; + unsigned pad:3; + unsigned vertex_id:16; float clip[4]; @@ -230,6 +231,8 @@ extern int draw_vertex_cache_check_space( struct draw_context *draw, extern void draw_vertex_cache_validate( struct draw_context *draw ); extern void draw_vertex_cache_invalidate( struct draw_context *draw ); extern void draw_vertex_cache_unreference( struct draw_context *draw ); +extern void draw_vertex_cache_reset_vertex_ids( struct draw_context *draw ); + extern void draw_vertex_shader_queue_flush( struct draw_context *draw ); @@ -255,6 +258,7 @@ dup_vert( struct draw_stage *stage, { struct vertex_header *tmp = stage->tmp[idx]; memcpy(tmp, vert, stage->draw->vertex_info.size * sizeof(float) ); + tmp->vertex_id = ~0; return tmp; } |