From 491d6397fcbe8eabfdd69500b91dbc6efc4dd894 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 13 Nov 2013 11:24:41 -0700 Subject: [PATCH] indices: add comments, assertions in u_indices.c file MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: José Fonseca Reviewed-by: Roland Scheidegger --- src/gallium/auxiliary/indices/u_indices.c | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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 -- 2.30.2