draw: add new debug code and comments in clip code template
authorBrian Paul <brianp@vmware.com>
Mon, 21 Jan 2013 18:32:49 +0000 (11:32 -0700)
committerBrian Paul <brianp@vmware.com>
Tue, 22 Jan 2013 21:53:58 +0000 (14:53 -0700)
In debug builds, set clipped vertex window coordinates to NaN values
to help debugging.  Otherwise, we're just leaving the coordinate in clip
space and it's invalid to use it later expecting it to be a window coord.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/draw/draw_cliptest_tmp.h

index bff266b8f98de6f61c34827938decd269f3ff528..8b2dcdabe013fd395388165c6bbfcf6395233160 100644 (file)
@@ -129,6 +129,10 @@ static boolean TAG(do_cliptest)( struct pt_post_vs *pvs,
          need_pipeline |= out->clipmask;
       }
 
+      /*
+       * Transform the vertex position from clip coords to window coords,
+       * if the vertex is unclipped.
+       */
       if ((flags & DO_VIEWPORT) && mask == 0)
       {
         /* divide by w */
@@ -140,6 +144,17 @@ static boolean TAG(do_cliptest)( struct pt_post_vs *pvs,
         position[2] = position[2] * w * scale[2] + trans[2];
         position[3] = w;
       }
+#ifdef DEBUG
+      /* For debug builds, set the clipped vertex's window coordinate
+       * to NaN to help catch potential errors later.
+       */
+      else {
+         position[0] =
+         position[1] =
+         position[2] =
+         position[3] = 0.0f / 0.0f;
+      }
+#endif
 
       if ((flags & DO_EDGEFLAG) && ef) {
          const float *edgeflag = out->data[ef];