add inf and nan tests to swrast functions
authorKeith Whitwell <keith@tungstengraphics.com>
Wed, 5 Dec 2001 10:24:31 +0000 (10:24 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Wed, 5 Dec 2001 10:24:31 +0000 (10:24 +0000)
src/mesa/swrast/s_aalinetemp.h
src/mesa/swrast/s_aatritemp.h
src/mesa/swrast/s_linetemp.h
src/mesa/swrast/s_pointtemp.h
src/mesa/swrast/s_tritemp.h

index 2d8f8492e0e64e8db6033f7f6b85936f97d399ae..f645e552417d86ac28cf24826b82037262e13b97 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_aalinetemp.h,v 1.14 2001/09/19 20:30:44 kschultz Exp $ */
+/* $Id: s_aalinetemp.h,v 1.15 2001/12/05 10:24:31 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -162,7 +162,7 @@ NAME(line)(GLcontext *ctx, const SWvertex *v0, const SWvertex *v1)
    line.len = (GLfloat) sqrt(line.dx * line.dx + line.dy * line.dy);
    line.halfWidth = 0.5F * ctx->Line.Width;
 
-   if (line.len == 0.0)
+   if (line.len == 0.0 || IS_INF_OR_NAN(line.len))
       return;
 
    line.xAdj = line.dx / line.len * line.halfWidth;
index 69f102858f68a88b73620cac93378317241d6b02..dac2111051e88678297f1539f2dac1dacd18e3f4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_aatritemp.h,v 1.21 2001/09/19 20:30:44 kschultz Exp $ */
+/* $Id: s_aatritemp.h,v 1.22 2001/12/05 10:24:31 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
       const GLfloat area = majDx * botDy - botDx * majDy;
       ltor = (GLboolean) (area < 0.0F);
       /* Do backface culling */
-      if (area * bf < 0 || area * area < .0025)
+      if (area * bf < 0 || area == 0 || IS_INF_OR_NAN(area))
         return;
    }
 
index 063569434086527d9658d24f32f43647fba796dd..a305a45d58d84537fec549f655c35207ee6118ee 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_linetemp.h,v 1.9 2001/07/13 20:07:37 brianp Exp $ */
+/* $Id: s_linetemp.h,v 1.10 2001/12/05 10:24:31 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
    }
 #endif
 
+   /* Cull primitives with malformed coordinates.
+    */
+   {
+      float tmp = vert0->win[0] + vert0->win[1] + vert1->win[0] + vert1->win[1];
+      if (IS_INF_OR_NAN(tmp))
+        return;
+   }
 
 /*
  * Despite being clipped to the view volume, the line's window coordinates
index 482f42b8eb611ac6dc5d064272c2061de487f21b..4c843b3f84e45b1d40227d53fcfe6832e3092beb 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_pointtemp.h,v 1.10 2001/09/19 20:30:44 kschultz Exp $ */
+/* $Id: s_pointtemp.h,v 1.11 2001/12/05 10:24:31 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -119,6 +119,14 @@ NAME ( GLcontext *ctx, const SWvertex *vert )
    size = ctx->Point._Size;
 #endif
 
+   /* Cull primitives with malformed coordinates.
+    */
+   {
+      float tmp = vert->win[0] + vert->win[1];
+      if (IS_INF_OR_NAN(tmp))
+        return;
+   }
+
 #if FLAGS & SPRITE
    {
       SWcontext *swctx = SWRAST_CONTEXT(ctx);
index 5c9d79d5f1fa4d12bafa0e6ac7047368bf97986a..4940dab17eae10aceb751f0a6957d329d4f1b430 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_tritemp.h,v 1.27 2001/09/19 20:30:44 kschultz Exp $ */
+/* $Id: s_tritemp.h,v 1.28 2001/12/05 10:24:31 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
       if (area * bf < 0.0)
          return;
 
-      if (area == 0.0F)
+      if (area == 0.0F || IS_INF_OR_NAN(area))
          return;
 
       oneOverArea = 1.0F / area;