added dispatch override mechanism, used by trace extension
[mesa.git] / src / mesa / swrast / s_tritemp.h
index be1fab9b497f43b69dc7f4456f4c0cf8fe2b3a33..7abb933f6cb49913ce9dce52c53182774707535e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_tritemp.h,v 1.4 2000/11/19 23:10:26 brianp Exp $ */
+/* $Id: s_tritemp.h,v 1.6 2000/12/08 00:09:24 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
          return;
 
       /* check for very tiny triangle */
-      if (area * area < 0.0025F)  /* square it to ensure positive value */
-         oneOverArea = 1.0F / 0.0025F;  /* a close-enough value */
+      if (area * area < (0.05F * 0.05F))  /* square to ensure positive value */
+         oneOverArea = 1.0F / 0.05F;  /* a close-enough value */
       else
          oneOverArea = 1.0F / area;
    }
       GLfixed vMax_fy = FloatToFixed(vMax->win[1] - 0.5F);
 
       eMaj.fsy = FixedCeil(vMin_fy);
-      eMaj.lines = FixedToInt(vMax_fy + FIXED_ONE - FIXED_EPSILON - eMaj.fsy);
+      eMaj.lines = FixedToInt(FixedCeil(vMax_fy - eMaj.fsy));
       if (eMaj.lines > 0) {
          GLfloat dxdy = eMaj.dx / eMaj.dy;
          eMaj.fdxdy = SignedFloatToFixed(dxdy);
       }
 
       eTop.fsy = FixedCeil(vMid_fy);
-      eTop.lines = FixedToInt(vMax_fy + FIXED_ONE - FIXED_EPSILON - eTop.fsy);
+      eTop.lines = FixedToInt(FixedCeil(vMax_fy - eTop.fsy));
       if (eTop.lines > 0) {
          GLfloat dxdy = eTop.dx / eTop.dy;
          eTop.fdxdy = SignedFloatToFixed(dxdy);
       }
 
       eBot.fsy = FixedCeil(vMin_fy);
-      eBot.lines = FixedToInt(vMid_fy + FIXED_ONE - FIXED_EPSILON - eBot.fsy);
+      eBot.lines = FixedToInt(FixedCeil(vMid_fy - eBot.fsy));
       if (eBot.lines > 0) {
          GLfloat dxdy = eBot.dx / eBot.dy;
          eBot.fdxdy = SignedFloatToFixed(dxdy);
          dsdx = oneOverArea * (eMaj_ds * eBot.dy - eMaj.dy * eBot_ds);
          dsdy = oneOverArea * (eMaj.dx * eBot_ds - eMaj_ds * eBot.dx);
 
-
         eMaj_dt = vMax->texcoord[0][1] * wMax - vMin->texcoord[0][1] * wMin;
         eBot_dt = vMid->texcoord[0][1] * wMid - vMin->texcoord[0][1] * wMin;
         dtdx = oneOverArea * (eMaj_dt * eBot.dy - eMaj.dy * eBot_dt);
                dsdy[u] = oneOverArea * (eMaj.dx * eBot_ds - eMaj_ds * eBot.dx);
 
               eMaj_dt = vMax->texcoord[u][1] * wMax
-                 - vMin->texcoord[u][1] * wMin;
+                      - vMin->texcoord[u][1] * wMin;
               eBot_dt = vMid->texcoord[u][1] * wMid
-                 - vMin->texcoord[u][1] * wMin;
+                      - vMin->texcoord[u][1] * wMin;
               dtdx[u] = oneOverArea * (eMaj_dt * eBot.dy - eMaj.dy * eBot_dt);
               dtdy[u] = oneOverArea * (eMaj.dx * eBot_dt - eMaj_dt * eBot.dx);
               
               eMaj_du = vMax->texcoord[u][2] * wMax
-                 - vMin->texcoord[u][2] * wMin;
+                       - vMin->texcoord[u][2] * wMin;
               eBot_du = vMid->texcoord[u][2] * wMid
-                 - vMin->texcoord[u][2] * wMin;
+                       - vMin->texcoord[u][2] * wMin;
               dudx[u] = oneOverArea * (eMaj_du * eBot.dy - eMaj.dy * eBot_du);
               dudy[u] = oneOverArea * (eMaj.dx * eBot_du - eMaj_du * eBot.dx);
               
               eMaj_dv = vMax->texcoord[u][3] * wMax
-                 - vMin->texcoord[u][3] * wMin;
+                       - vMin->texcoord[u][3] * wMin;
               eBot_dv = vMid->texcoord[u][3] * wMid
-                 - vMin->texcoord[u][3] * wMin;
+                       - vMin->texcoord[u][3] * wMin;
               dvdx[u] = oneOverArea * (eMaj_dv * eBot.dy - eMaj.dy * eBot_dv);
               dvdy[u] = oneOverArea * (eMaj.dx * eBot_dv - eMaj_dv * eBot.dx);
             }