summaryrefslogtreecommitdiffstats
path: root/src/gallium/include
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2009-12-23 12:39:21 -0500
committerZack Rusin <[email protected]>2009-12-25 05:52:18 -0500
commitf658fa5e8febc41836980ad1b4cb385445833a02 (patch)
tree72196749f5674aac6212ac64650139db14b4433d /src/gallium/include
parent42eefb8235437655632b36490f49a3a8fdc69401 (diff)
gallium: add an inline that returns number of vertices per primitive
Diffstat (limited to 'src/gallium/include')
-rw-r--r--src/gallium/include/pipe/p_inlines.h32
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