|
|
@@ -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; |
|
|
|
} |
|
|
|
} |
|
|
|
|