mesa: Prefix main includes with dir to avoid conflicts.
[mesa.git] / src / mesa / swrast / s_texcombine.c
index d8b897f21132f755a5e9479e051480af122fa9c2..b7724f7b20a6267c10c47a765e62391cf2fb1262 100644 (file)
  */
 
 
-#include "glheader.h"
-#include "context.h"
-#include "colormac.h"
-#include "imports.h"
-#include "macros.h"
-#include "pixel.h"
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/colormac.h"
+#include "main/imports.h"
+#include "main/macros.h"
+#include "image.h"
 
 #include "s_context.h"
 #include "s_texcombine.h"
@@ -72,13 +72,11 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
 #if CHAN_TYPE == GL_FLOAT
    const GLchan RGBmult = (GLfloat) (1 << RGBshift);
    const GLchan Amult = (GLfloat) (1 << Ashift);
-   static const GLchan one[4] = { 1.0, 1.0, 1.0, 1.0 };
-   static const GLchan zero[4] = { 0.0, 0.0, 0.0, 0.0 };
 #else
    const GLint half = (CHAN_MAX + 1) / 2;
+#endif
    static const GLchan one[4] = { CHAN_MAX, CHAN_MAX, CHAN_MAX, CHAN_MAX };
    static const GLchan zero[4] = { 0, 0, 0, 0 };
-#endif
    const GLuint numColorArgs = textureUnit->_CurrentCombine->_NumArgsRGB;
    const GLuint numAlphaArgs = textureUnit->_CurrentCombine->_NumArgsA;
    GLchan ccolor[3][MAX_WIDTH][4];
@@ -104,7 +102,6 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
    for (j = 0; j < numColorArgs; j++) {
       const GLenum srcRGB = textureUnit->_CurrentCombine->SourceRGB[j];
 
-
       switch (srcRGB) {
          case GL_TEXTURE:
             argRGB[j] = (const GLchan (*)[4])
@@ -1076,14 +1073,13 @@ texture_apply( const GLcontext *ctx,
  * Apply texture mapping to a span of fragments.
  */
 void
-_swrast_texture_span( GLcontext *ctx, struct sw_span *span )
+_swrast_texture_span( GLcontext *ctx, SWspan *span )
 {
    SWcontext *swrast = SWRAST_CONTEXT(ctx);
    GLchan primary_rgba[MAX_WIDTH][4];
    GLuint unit;
 
    ASSERT(span->end < MAX_WIDTH);
-   ASSERT(span->arrayMask & SPAN_TEXTURE);
 
    /*
     * Save copy of the incoming fragment colors (the GL_PRIMARY_COLOR)
@@ -1097,6 +1093,9 @@ _swrast_texture_span( GLcontext *ctx, struct sw_span *span )
     */
    for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
       if (ctx->Texture.Unit[unit]._ReallyEnabled) {
+         const GLfloat (*texcoords)[4]
+            = (const GLfloat (*)[4])
+            span->array->attribs[FRAG_ATTRIB_TEX0 + unit];
          const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
          const struct gl_texture_object *curObj = texUnit->_Current;
          GLfloat *lambda = span->array->lambda[unit];
@@ -1130,12 +1129,17 @@ _swrast_texture_span( GLcontext *ctx, struct sw_span *span )
 
          /* Sample the texture (span->end = number of fragments) */
          swrast->TextureSample[unit]( ctx, texUnit->_Current, span->end,
-                         (const GLfloat (*)[4]) span->array->texcoords[unit],
-                         lambda, texels );
+                                      texcoords, lambda, texels );
 
          /* GL_SGI_texture_color_table */
          if (texUnit->ColorTableEnabled) {
-            _mesa_lookup_rgba_chan(&texUnit->ColorTable, span->end, texels);
+#if CHAN_TYPE == GL_UNSIGNED_BYTE
+            _mesa_lookup_rgba_ubyte(&texUnit->ColorTable, span->end, texels);
+#elif CHAN_TYPE == GL_UNSIGNED_SHORT
+            _mesa_lookup_rgba_ubyte(&texUnit->ColorTable, span->end, texels);
+#else
+            _mesa_lookup_rgba_float(&texUnit->ColorTable, span->end, texels);
+#endif
          }
       }
    }