diff options
author | Zack Rusin <zackr@vmware.com> | 2013-04-18 03:08:41 -0700 |
---|---|---|
committer | Zack Rusin <zackr@vmware.com> | 2013-04-18 11:51:22 -0700 |
commit | 12eab7cc564a6928197f9b87ded9e368e56976f0 (patch) | |
tree | e4d157930258f4cfe4ab173cf178ea9b7e51478f /src/gallium/auxiliary/util | |
parent | e4752d0f56b90a5565936b1e05bb48edb1baa3ac (diff) | |
download | external_mesa3d-12eab7cc564a6928197f9b87ded9e368e56976f0.zip external_mesa3d-12eab7cc564a6928197f9b87ded9e368e56976f0.tar.gz external_mesa3d-12eab7cc564a6928197f9b87ded9e368e56976f0.tar.bz2 |
draw: implement primitive assembler
Input assembler needs to be able to decompose adjacency primitives
into something that can be understood by the rest of the pipeline.
The specs say that the adjacency primitives are *only* visible
in the geometry shader, for everything else they need to be
decomposed. Which in most of the cases is not an issue, because
the geometry shader always decomposes them for us, but without
geometry shader we were passing unchanged adjacency primitives
to the rest of the pipeline and causing crashes everywhere. This
commit introduces a primitive assembler which, if geometry
shader is missing and the input primitive is one of the
adjacency primitives, decomposes them into something
that the rest of the pipeline can understand.
Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Diffstat (limited to 'src/gallium/auxiliary/util')
-rw-r--r-- | src/gallium/auxiliary/util/u_prim.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_prim.h b/src/gallium/auxiliary/util/u_prim.h index 507d12e..e477444 100644 --- a/src/gallium/auxiliary/util/u_prim.h +++ b/src/gallium/auxiliary/util/u_prim.h @@ -213,6 +213,27 @@ u_decomposed_prims_for_vertices(int primitive, int vertices) } } +static INLINE unsigned +u_assembled_primitive(unsigned prim) +{ + switch (prim) { + case PIPE_PRIM_LINES_ADJACENCY: + return PIPE_PRIM_LINES; + case PIPE_PRIM_LINE_STRIP_ADJACENCY: + return PIPE_PRIM_LINES; + case PIPE_PRIM_TRIANGLES_ADJACENCY: + return PIPE_PRIM_TRIANGLES; + case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: + return PIPE_PRIM_TRIANGLES; + default: + return prim; + } + + return prim; +} + + + const char *u_prim_name( unsigned pipe_prim ); #endif |