gallium: use hardcoded cliptest code for fixed planes
authorKeith Whitwell <keith@tungstengraphics.com>
Mon, 10 Dec 2007 22:38:44 +0000 (22:38 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Mon, 10 Dec 2007 22:38:44 +0000 (22:38 +0000)
src/mesa/pipe/draw/draw_vertex_shader.c

index eef71a7a4a39825d9ff8ad841003d18edb6e9b0a..5294d38f47333a62af58908678fe8d1d5a72ef05 100644 (file)
@@ -51,7 +51,18 @@ compute_clipmask(const float *clip, /*const*/ float plane[][4], unsigned nr)
    unsigned mask = 0;
    unsigned i;
 
-   for (i = 0; i < nr; i++) {
+   /* Do the hardwired planes first:
+    */
+   if (-clip[0] + clip[3] < 0) mask |= CLIP_RIGHT_BIT;
+   if ( clip[0] + clip[3] < 0) mask |= CLIP_LEFT_BIT;
+   if (-clip[1] + clip[3] < 0) mask |= CLIP_TOP_BIT;
+   if ( clip[1] + clip[3] < 0) mask |= CLIP_BOTTOM_BIT;
+   if (-clip[2] + clip[3] < 0) mask |= CLIP_FAR_BIT;
+   if ( clip[2] + clip[3] < 0) mask |= CLIP_NEAR_BIT;
+
+   /* Followed by any remaining ones:
+    */
+   for (i = 6; i < nr; i++) {
       if (dot4(clip, plane[i]) < 0) 
          mask |= (1<<i);
    }