Mesa (master): gallium: new CAP, state for primitive restart

Brian Paul brianp at kemper.freedesktop.org
Fri Oct 22 01:11:17 UTC 2010


Module: Mesa
Branch: master
Commit: adf35e80d3b3d37b97f0608a5a2f221dbd8c0d64
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=adf35e80d3b3d37b97f0608a5a2f221dbd8c0d64

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Oct 21 19:03:38 2010 -0600

gallium: new CAP, state for primitive restart

---

 src/gallium/docs/source/context.rst  |    9 +++++++++
 src/gallium/include/pipe/p_defines.h |    1 +
 src/gallium/include/pipe/p_state.h   |    6 ++++++
 3 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/src/gallium/docs/source/context.rst b/src/gallium/docs/source/context.rst
index 5342fc2..e09a130 100644
--- a/src/gallium/docs/source/context.rst
+++ b/src/gallium/docs/source/context.rst
@@ -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.
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index b6894c0..53f7b60 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -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,
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 9a2b31d..fc6dba3 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -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;
 };
 
 




More information about the mesa-commit mailing list