check for flat/smooth interp for generic/specular attrib
authorBrian <brian.paul@tungstengraphics.com>
Fri, 25 May 2007 22:22:15 +0000 (16:22 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 29 May 2007 14:08:03 +0000 (08:08 -0600)
src/mesa/swrast/s_aalinetemp.h

index 8756f122d09eaab6e5189bdf5e8461df3f70cdb1..3d3511823d79615f530d33bec2cd129410395330 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5.3
+ * Version:  7.1
  *
  * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
  *
@@ -185,10 +185,18 @@ NAME(line)(GLcontext *ctx, const SWvertex *v0, const SWvertex *v1)
       compute_plane(line.x0, line.y0, line.x1, line.y1, invW0, invW1, line.wPlane);
       ATTRIB_LOOP_BEGIN
          GLuint c;
-         for (c = 0; c < 4; c++) {
-            const GLfloat a0 = v0->attrib[attr][c] * invW0;
-            const GLfloat a1 = v1->attrib[attr][c] * invW1;
-            compute_plane(line.x0, line.y0, line.x1, line.y1, a0, a1, line.attrPlane[attr][c]);
+         if (swrast->_InterpMode[attr] == GL_FLAT) {
+            for (c = 0; c < 4; c++) {
+               constant_plane(v1->attrib[attr][c], line.attrPlane[attr][c]);
+            }
+         }
+         else {
+            for (c = 0; c < 4; c++) {
+               const GLfloat a0 = v0->attrib[attr][c] * invW0;
+               const GLfloat a1 = v1->attrib[attr][c] * invW1;
+               compute_plane(line.x0, line.y0, line.x1, line.y1, a0, a1,
+                             line.attrPlane[attr][c]);
+            }
          }
          line.span.arrayAttribs |= (1 << attr);
          if (attr >= FRAG_ATTRIB_TEX0 && attr < FRAG_ATTRIB_VAR0) {