diff options
author | Brian Paul <[email protected]> | 2013-11-13 11:24:41 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2013-11-15 10:23:48 -0700 |
commit | 491d6397fcbe8eabfdd69500b91dbc6efc4dd894 (patch) | |
tree | 8b49facb451b39c71615fa7d46dfbe0ec6175bc3 /src/gallium/auxiliary/indices/u_indices.c | |
parent | 2253fed4a05ece30e47b32a5f450f8192dba9497 (diff) |
indices: add comments, assertions in u_indices.c file
Reviewed-by: José Fonseca <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/indices/u_indices.c')
-rw-r--r-- | src/gallium/auxiliary/indices/u_indices.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/indices/u_indices.c b/src/gallium/auxiliary/indices/u_indices.c index 30b54b9fb6a..1b33f413fc4 100644 --- a/src/gallium/auxiliary/indices/u_indices.c +++ b/src/gallium/auxiliary/indices/u_indices.c @@ -42,6 +42,27 @@ static void translate_memcpy_uint( const void *in, } +/** + * Translate indexes when a driver can't support certain types + * of drawing. Example include: + * - Translate 1-byte indexes into 2-byte indexes + * - Translate PIPE_PRIM_QUADS into PIPE_PRIM_TRIANGLES when the hardware + * doesn't support the former. + * - Translate from first provoking vertex to last provoking vertex and + * vice versa. + * + * \param hw_mask mask of (1 << PIPE_PRIM_x) flags indicating which types + * of primitives are supported by the hardware. + * \param prim incoming PIPE_PRIM_x + * \param in_index_size bytes per index value (1, 2 or 4) + * \param nr number of incoming vertices + * \param in_pv incoming provoking vertex convention (PV_FIRST or PV_LAST) + * \param out_pv desired provoking vertex convention (PV_FIRST or PV_LAST) + * \param out_prim returns new PIPE_PRIM_x we'll translate to + * \param out_index_size returns bytes per new index value (2 or 4) + * \param out_nr returns number of new vertices + * \param out_translate returns the translation function to use by the caller + */ int u_index_translator( unsigned hw_mask, unsigned prim, unsigned in_index_size, @@ -57,6 +78,10 @@ int u_index_translator( unsigned hw_mask, unsigned out_idx; int ret = U_TRANSLATE_NORMAL; + assert(in_index_size == 1 || + in_index_size == 2 || + in_index_size == 4); + u_index_init(); in_idx = in_size_idx(in_index_size); @@ -67,6 +92,7 @@ int u_index_translator( unsigned hw_mask, in_index_size == *out_index_size && in_pv == out_pv) { + /* Index translation not really needed */ if (in_index_size == 4) *out_translate = translate_memcpy_uint; else |