diff options
author | Zack Rusin <[email protected]> | 2010-06-17 13:21:38 -0400 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2010-06-17 13:21:38 -0400 |
commit | 4320a451a313bbf4e145809ffb11c829ae84aa98 (patch) | |
tree | 9df76da068e9146bacfe6a06d49d27ddd8e0cff8 /src | |
parent | f542a2770a5ac3eb487cd3723cf98a383779a98d (diff) |
draw: implement triangle strips with adjacency in geometry shader
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_gs_tmp.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/draw/draw_gs_tmp.h b/src/gallium/auxiliary/draw/draw_gs_tmp.h index ff83cebb45a..7a8683cf7c2 100644 --- a/src/gallium/auxiliary/draw/draw_gs_tmp.h +++ b/src/gallium/auxiliary/draw/draw_gs_tmp.h @@ -9,7 +9,7 @@ static void FUNC( struct draw_geometry_shader *shader, boolean flatfirst = (draw->rasterizer->flatshade && draw->rasterizer->flatshade_first); - unsigned i; + unsigned i, j; unsigned count = input_prims->count; LOCAL_VARS @@ -124,6 +124,17 @@ static void FUNC( struct draw_geometry_shader *shader, i + 3, i + 4, i + 5); } break; + case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: + for (i = 0, j = 0; i+5 < count; i += 2, ++j) { + TRI_ADJ( shader, + i + 0, + i + 1 + 2*(j&1), + i + 2 + 2*(j&1), + i + 3 - 2*(j&1), + i + 4 - 2*(j&1), + i + 5); + } + break; default: debug_assert(!"Unsupported primitive in geometry shader"); |