diff options
| author | Zack Rusin <zackr@vmware.com> | 2009-12-23 12:39:21 -0500 |
|---|---|---|
| committer | Zack Rusin <zackr@vmware.com> | 2009-12-25 05:52:18 -0500 |
| commit | f658fa5e8febc41836980ad1b4cb385445833a02 (patch) | |
| tree | 72196749f5674aac6212ac64650139db14b4433d /src | |
| parent | 42eefb8235437655632b36490f49a3a8fdc69401 (diff) | |
gallium: add an inline that returns number of vertices per primitive
Diffstat (limited to 'src')
| -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 5fbd62a03d..95ec55d145 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 |
