From: Chia-I Wu Date: Thu, 2 May 2013 06:12:27 +0000 (+0800) Subject: util/prim: assorted fixes for u_decomposed_prims_for_vertices() X-Git-Tag: mesa-9.2.1~1361 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F17%2F6417%2F1;p=platform%2Fupstream%2Fmesa.git util/prim: assorted fixes for u_decomposed_prims_for_vertices() Switch to '>=' for comparisons, and it becomes obvious that the comparison for PIPE_PRIM_QUAD_STRIP was wrong. Add minimum vertex count check for PIPE_PRIM_LINE_LOOP. Return 1 for PIPE_PRIM_POLYGON with 3 vertices. Signed-off-by: Chia-I Wu Acked-by: Zack Rusin --- diff --git a/src/gallium/auxiliary/util/u_prim.h b/src/gallium/auxiliary/util/u_prim.h index 94312c2..624a508 100644 --- a/src/gallium/auxiliary/util/u_prim.h +++ b/src/gallium/auxiliary/util/u_prim.h @@ -204,42 +204,42 @@ u_vertices_per_prim(int primitive) static INLINE unsigned u_decomposed_prims_for_vertices(int primitive, int vertices) { - switch(primitive) { + switch (primitive) { case PIPE_PRIM_POINTS: return vertices; case PIPE_PRIM_LINES: return vertices / 2; case PIPE_PRIM_LINE_LOOP: - return vertices; + return (vertices >= 2) ? vertices : 0; case PIPE_PRIM_LINE_STRIP: - return (vertices > 1) ? vertices - 1 : 0; + return (vertices >= 2) ? vertices - 1 : 0; case PIPE_PRIM_TRIANGLES: - return vertices / 3; + return vertices / 3; case PIPE_PRIM_TRIANGLE_STRIP: - return (vertices > 2) ? vertices - 2 : 0; + return (vertices >= 3) ? vertices - 2 : 0; case PIPE_PRIM_TRIANGLE_FAN: - return (vertices > 2) ? vertices - 2 : 0; + return (vertices >= 3) ? vertices - 2 : 0; case PIPE_PRIM_LINES_ADJACENCY: return vertices / 4; case PIPE_PRIM_LINE_STRIP_ADJACENCY: - return (vertices > 3) ? vertices - 3 : 0; + return (vertices >= 4) ? vertices - 3 : 0; case PIPE_PRIM_TRIANGLES_ADJACENCY: return vertices / 6; case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: - return (vertices > 5) ? 1 + (vertices - 6)/2 : 0; + return (vertices >= 6) ? 1 + (vertices - 6) / 2 : 0; case PIPE_PRIM_QUADS: return vertices / 4; case PIPE_PRIM_QUAD_STRIP: - return (vertices > 4) ? (vertices - 2) / 2 : 0; + return (vertices >= 4) ? (vertices - 2) / 2 : 0; /* Polygons can't be decomposed * because the number of their vertices isn't known so * for them and whatever else we don't recognize just * return 1 if the number of vertices is greater than - * 3 and zero otherwise */ + * or equal to 3 and zero otherwise */ case PIPE_PRIM_POLYGON: default: debug_printf("Invalid decomposition primitive!\n"); - return (vertices > 3) ? 1 : 0; + return (vertices >= 3) ? 1 : 0; } }