summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_vs_exec.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_exec.c
parentaadbb1d7fbbaada6e378cb60194e5861cadf98d1 (diff)
return true if one of the vertices has been clipped
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_vs_exec.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_vs_exec.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/draw/draw_vs_exec.c b/src/gallium/auxiliary/draw/draw_vs_exec.c
index df0051d693..09e0d0eaab 100644
--- a/src/gallium/auxiliary/draw/draw_vs_exec.c
+++ b/src/gallium/auxiliary/draw/draw_vs_exec.c
@@ -64,7 +64,7 @@ vs_exec_prepare( struct draw_vertex_shader *shader,
* \param count number of vertices to shade [1..4]
* \param vOut array of pointers to four output vertices
*/
-static void
+static boolean
vs_exec_run( struct draw_vertex_shader *shader,
struct draw_context *draw,
const unsigned *elts,
@@ -73,6 +73,7 @@ vs_exec_run( struct draw_vertex_shader *shader,
{
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);
@@ -120,6 +121,7 @@ vs_exec_run( struct draw_vertex_shader *shader,
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;
@@ -168,6 +170,7 @@ vs_exec_run( struct draw_vertex_shader *shader,
#endif
} /* loop over vertices */
}
+ return clipped != 0;
}