summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Rusin <zackr@vmware.com>2010-06-17 13:21:38 -0400
committerZack Rusin <zackr@vmware.com>2010-06-17 13:21:38 -0400
commit4320a451a313bbf4e145809ffb11c829ae84aa98 (patch)
tree9df76da068e9146bacfe6a06d49d27ddd8e0cff8
parentf542a2770a5ac3eb487cd3723cf98a383779a98d (diff)
draw: implement triangle strips with adjacency in geometry shader
-rw-r--r--src/gallium/auxiliary/draw/draw_gs_tmp.h13
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 ff83cebb45..7a8683cf7c 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");