gallium: new CAP, state for primitive restart
authorBrian Paul <brianp@vmware.com>
Fri, 22 Oct 2010 01:03:38 +0000 (19:03 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 22 Oct 2010 01:03:38 +0000 (19:03 -0600)
src/gallium/docs/source/context.rst
src/gallium/include/pipe/p_defines.h
src/gallium/include/pipe/p_state.h

index 5342fc25dc1d0929abb098653f4efa3ad35e6c25..e09a1304c4d3b383a6719ccc4e90013485d9e922 100644 (file)
@@ -156,6 +156,15 @@ If there is an index buffer bound, and ``indexed`` field is true, all vertex
 indices will be looked up in the index buffer.  ``min_index``, ``max_index``,
 and ``index_bias`` apply after index lookup.
 
+When drawing indexed primitives, the primitive restart index can be
+used to draw disjoint primitive strips.  For example, several separate
+line strips can be drawn by designating a special index value as the
+restart index.  The ``primitive_restart`` flag enables/disables this
+feature.  The ``restart_index`` field specifies the restart index value.
+
+When primitive restart is in use, array indexes are compared to the
+restart index before adding the index_bias offset.
+
 If a given vertex element has ``instance_divisor`` set to 0, it is said
 it contains per-vertex data and effective vertex attribute address needs
 to be recalculated for every index.
index b6894c09e827cf81de18feb2409043398dd31dba..53f7b601ad58a7a83d81f7c7c28741594852b57c 100644 (file)
@@ -452,6 +452,7 @@ enum pipe_cap {
    PIPE_CAP_BLEND_EQUATION_SEPARATE,
    PIPE_CAP_SM3,  /*< Shader Model, supported */
    PIPE_CAP_STREAM_OUTPUT,
+   PIPE_CAP_PRIMITIVE_RESTART,
    /** Maximum texture image units accessible from vertex and fragment shaders
     * combined */
    PIPE_CAP_MAX_COMBINED_SAMPLERS,
index 9a2b31da50dcef9566e49c5343626a4a3eab7a8e..fc6dba346daef50e81359cd06e50f2ff0a4ff797 100644 (file)
@@ -457,6 +457,12 @@ struct pipe_draw_info
    int index_bias; /**< a bias to be added to each index */
    unsigned min_index; /**< the min index */
    unsigned max_index; /**< the max index */
+
+   /**
+    * Primitive restart enable/index (only applies to indexed drawing)
+    */
+   boolean primitive_restart;
+   unsigned restart_index;
 };