summaryrefslogtreecommitdiffstats
path: root/src/mesa/pipe/draw/draw_private.h
diff options
context:
space:
mode:
authorKeith Whitwell <[email protected]>2007-09-25 13:20:53 +0100
committerKeith Whitwell <[email protected]>2007-09-25 13:23:20 +0100
commita37e0daeb97bb36ba10038b12a909e22e08b52c4 (patch)
tree6c8a10ceb9a7764a63db627f0602f552709631d2 /src/mesa/pipe/draw/draw_private.h
parent45b37dc078130b64e110d1a965960c60c56f0e60 (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.h6
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 1285f3200c8..04d38c4e0c2 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;
}