summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2013-01-21 11:32:49 -0700
committerBrian Paul <[email protected]>2013-01-22 14:53:58 -0700
commit4a938ef7136a89c828ebb16effe1bc5bea08b7d7 (patch)
treef9deb4a2fc2c896a7770aec5b7ca0a9a20cc10a4
parent547a418888c455a3f5158c147a155292f398ea34 (diff)
draw: add new debug code and comments in clip code template
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 <[email protected]>
-rw-r--r--src/gallium/auxiliary/draw/draw_cliptest_tmp.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/draw/draw_cliptest_tmp.h b/src/gallium/auxiliary/draw/draw_cliptest_tmp.h
index bff266b8f98..8b2dcdabe01 100644
--- a/src/gallium/auxiliary/draw/draw_cliptest_tmp.h
+++ b/src/gallium/auxiliary/draw/draw_cliptest_tmp.h
@@ -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];