diff options
author | Zack Rusin <[email protected]> | 2009-12-23 12:39:21 -0500 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2009-12-25 05:52:18 -0500 |
commit | f658fa5e8febc41836980ad1b4cb385445833a02 (patch) | |
tree | 72196749f5674aac6212ac64650139db14b4433d /src/gallium | |
parent | 42eefb8235437655632b36490f49a3a8fdc69401 (diff) |
gallium: add an inline that returns number of vertices per primitive
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/include/pipe/p_inlines.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/gallium/include/pipe/p_inlines.h b/src/gallium/include/pipe/p_inlines.h index 5fbd62a03d2..95ec55d145e 100644 --- a/src/gallium/include/pipe/p_inlines.h +++ b/src/gallium/include/pipe/p_inlines.h @@ -192,6 +192,38 @@ pipe_transfer_buffer_flags( struct pipe_transfer *transf ) } } +static INLINE unsigned +pipe_vertices_per_primitive(int primitive) +{ + switch(primitive) { + case PIPE_PRIM_POINTS: + return 1; + case PIPE_PRIM_LINES: + case PIPE_PRIM_LINE_LOOP: + case PIPE_PRIM_LINE_STRIP: + return 2; + case PIPE_PRIM_TRIANGLES: + case PIPE_PRIM_TRIANGLE_STRIP: + case PIPE_PRIM_TRIANGLE_FAN: + return 3; + case PIPE_PRIM_LINES_ADJACENCY: + case PIPE_PRIM_LINE_STRIP_ADJACENCY: + return 4; + case PIPE_PRIM_TRIANGLES_ADJACENCY: + case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: + return 6; + + /* following primitives should never be used + * with geometry shaders */ + case PIPE_PRIM_POLYGON: + case PIPE_PRIM_QUADS: + case PIPE_PRIM_QUAD_STRIP: + default: + debug_printf("Unrecognized geometry shader primitive"); + return 3; + } +} + #ifdef __cplusplus } #endif |