summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_pt.h
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2010-08-07 03:36:18 +0800
committerChia-I Wu <olv@lunarg.com>2010-08-16 20:46:28 +0800
commit04bc530dbdbe5d004219c9100e35f5d56cfedd80 (patch)
treee64232d9f3d1f9f36aeeca085fe30fba168d613b /src/gallium/auxiliary/draw/draw_pt.h
parent56213a64fe9e4270fd7886675b1e8224b2d88794 (diff)
draw: Add vsplit frontend.
vsplit is based on varray. It sets the split flags when a primitive is splitted. It also has support for indexed primitives. For indexed primitives, unlike vcache, vsplit splits the primitives instead of decomposes them.
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pt.h')
-rw-r--r--src/gallium/auxiliary/draw/draw_pt.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt.h b/src/gallium/auxiliary/draw/draw_pt.h
index 688b15c4fa..de3f638db5 100644
--- a/src/gallium/auxiliary/draw/draw_pt.h
+++ b/src/gallium/auxiliary/draw/draw_pt.h
@@ -52,8 +52,19 @@ struct draw_vertex_info;
/* The "front end" - prepare sets of fetch, draw elements for the
* middle end.
*
- * Currenly one version of this:
+ * The fetch elements are indices to the vertices. The draw elements are
+ * indices to the fetched vertices. When both arrays of elements are both
+ * linear, middle->run_linear is called; When only the fetch elements are
+ * linear, middle->run_linear_elts is called; Otherwise, middle->run is
+ * called.
+ *
+ * When the number of the draw elements exceeds max_vertex of the middle end,
+ * the draw elements (as well as the fetch elements) are splitted and the
+ * middle end is called multiple times.
+ *
+ * Currenly there are:
* - vcache - catchall implementation, decomposes to TRI/LINE/POINT prims
+ * - vsplit - catchall implementation, splits big prims
* Later:
* - varray, varray_split
* - velement, velement_split
@@ -138,6 +149,7 @@ const void *draw_pt_elt_ptr( struct draw_context *draw,
*/
struct draw_pt_front_end *draw_pt_vcache( struct draw_context *draw );
struct draw_pt_front_end *draw_pt_varray(struct draw_context *draw);
+struct draw_pt_front_end *draw_pt_vsplit(struct draw_context *draw);
/* Middle-ends: