summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_vs_sse.c
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-04-11 19:58:22 -0400
committerKeith Whitwell <keith@tungstengraphics.com>2008-04-14 11:00:35 +0100
commit808f968f3ad0cb32e86f517753d5715d00e9ec2c (patch)
treea75a2d4f267b8d36e668e8fd02de534ffa6e8ad6 /src/gallium/auxiliary/draw/draw_vs_sse.c
parentaadbb1d7fbbaada6e378cb60194e5861cadf98d1 (diff)
return true if one of the vertices has been clipped
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_vs_sse.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_vs_sse.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/draw/draw_vs_sse.c b/src/gallium/auxiliary/draw/draw_vs_sse.c
index bfec89254e..6e8d2021f5 100644
--- a/src/gallium/auxiliary/draw/draw_vs_sse.c
+++ b/src/gallium/auxiliary/draw/draw_vs_sse.c
@@ -78,7 +78,7 @@ vs_sse_prepare( struct draw_vertex_shader *base,
* \param count number of vertices to shade [1..4]
* \param vOut array of pointers to four output vertices
*/
-static void
+static boolean
vs_sse_run( struct draw_vertex_shader *base,
struct draw_context *draw,
const unsigned *elts,
@@ -88,6 +88,7 @@ vs_sse_run( struct draw_vertex_shader *base,
struct draw_sse_vertex_shader *shader = (struct draw_sse_vertex_shader *)base;
struct tgsi_exec_machine *machine = &draw->machine;
unsigned int i, j;
+ unsigned int clipped = 0;
ALIGN16_DECL(struct tgsi_exec_vector, inputs, PIPE_MAX_ATTRIBS);
ALIGN16_DECL(struct tgsi_exec_vector, outputs, PIPE_MAX_ATTRIBS);
@@ -143,6 +144,7 @@ vs_sse_run( struct draw_vertex_shader *base,
if (!draw->rasterizer->bypass_clipping) {
vOut[i + j]->clipmask = compute_clipmask(vOut[i + j]->clip, draw->plane,
draw->nr_planes);
+ clipped += vOut[i + j]->clipmask;
/* divide by w */
w = 1.0f / w;
@@ -180,6 +182,7 @@ vs_sse_run( struct draw_vertex_shader *base,
}
}
}
+ return clipped != 0;
}