Clean-up/renaming of the per-vertex attribute bits, specifically, the
[mesa.git] / src / mesa / tnl / t_imm_elt.c
index c339897bc95e3590f7ebfbbb0ce0892e8f269448..ff01dc51bb0078670ca96d4ebe52429a25b28e2c 100644 (file)
@@ -1,10 +1,10 @@
-/* $Id: t_imm_elt.c,v 1.8 2001/04/28 08:39:18 keithw Exp $ */
+/* $Id: t_imm_elt.c,v 1.16 2002/01/22 14:35:16 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -138,7 +138,7 @@ static trans_elt_4f_func  _tnl_trans_elt_4f_tab[5][MAX_TYPES];
                GLuint start, GLuint n
 #define SRC_START  0
 #define DST_START  start
-#define CHECK  if ((flags[i]&match) == VERT_ELT)
+#define CHECK  if ((flags[i]&match) == VERT_BIT_ELT)
 #define NEXT_F  (void)1
 #define NEXT_F2 f = first + elts[i] * stride;
 
@@ -148,7 +148,7 @@ static trans_elt_4f_func  _tnl_trans_elt_4f_tab[5][MAX_TYPES];
 #define SRC GLbyte
 #define SRC_IDX TYPE_IDX(GL_BYTE)
 #define TRX_3F(f,n)   BYTE_TO_FLOAT( PTR_ELT(f,n) )
-#define TRX_4F(f,n)   (GLfloat)( PTR_ELT(f,n) )
+#define TRX_4F(f,n)   BYTE_TO_FLOAT( PTR_ELT(f,n) )
 #define TRX_UB(ub, f,n)  ub = BYTE_TO_UBYTE( PTR_ELT(f,n) )
 #define TRX_US(us, f,n)  us = BYTE_TO_USHORT( PTR_ELT(f,n) )
 #define TRX_UI(f,n)  (PTR_ELT(f,n) < 0 ? 0 : (GLuint)  PTR_ELT(f,n))
@@ -158,6 +158,7 @@ static trans_elt_4f_func  _tnl_trans_elt_4f_tab[5][MAX_TYPES];
 #define INIT init_trans_4_GLbyte_elt
 #define DEST_4F trans_4_GLbyte_4f_elt
 #define DEST_4UB trans_4_GLbyte_4ub_elt
+#define DEST_4US trans_4_GLbyte_4us_elt
 #include "math/m_trans_tmp.h"
 
 #define SZ 3
@@ -192,17 +193,24 @@ static trans_elt_4f_func  _tnl_trans_elt_4f_tab[5][MAX_TYPES];
  */
 #define SRC GLubyte
 #define SRC_IDX TYPE_IDX(GL_UNSIGNED_BYTE)
-#define TRX_3F(f,n)            /* unused */
-#define TRX_4F(f,n)            /* unused */
+#define TRX_3F(f,n)         UBYTE_TO_FLOAT( PTR_ELT(f,n) )
+#define TRX_4F(f,n)         UBYTE_TO_FLOAT( PTR_ELT(f,n) )
 #define TRX_UB(ub, f,n)             ub = PTR_ELT(f,n)
 #define TRX_US(us, f,n)             us = PTR_ELT(f,n)
 #define TRX_UI(f,n)          (GLuint)PTR_ELT(f,n)
 
 /* 4ub->4ub handled in special case below.
  */
+#define SZ 4
+#define INIT init_trans_4_GLubyte_elt
+#define DEST_4F trans_4_GLubyte_4f_elt
+#define DEST_4US trans_4_GLubyte_4us_elt
+#include "math/m_trans_tmp.h"
 
 #define SZ 3
 #define INIT init_trans_3_GLubyte_elt
+#define DEST_4F trans_3_GLubyte_4f_elt
+#define DEST_3F trans_3_GLubyte_3f_elt
 #define DEST_4UB trans_3_GLubyte_4ub_elt
 #define DEST_4US trans_3_GLubyte_4us_elt
 #include "math/m_trans_tmp.h"
@@ -417,12 +425,12 @@ static trans_elt_4f_func  _tnl_trans_elt_4f_tab[5][MAX_TYPES];
  */
 #define SRC GLdouble
 #define SRC_IDX TYPE_IDX(GL_DOUBLE)
-#define TRX_3F(f,n)   PTR_ELT(f,n)
-#define TRX_4F(f,n)   PTR_ELT(f,n)
+#define TRX_3F(f,n)    (GLfloat) PTR_ELT(f,n)
+#define TRX_4F(f,n)    (GLfloat) PTR_ELT(f,n)
 #define TRX_UB(ub,f,n) UNCLAMPED_FLOAT_TO_UBYTE(ub, PTR_ELT(f,n))
 #define TRX_US(us,f,n) UNCLAMPED_FLOAT_TO_USHORT(us, PTR_ELT(f,n))
-#define TRX_UI(f,n)  (GLuint) (GLint) PTR_ELT(f,n)
-#define TRX_1F(f,n)   PTR_ELT(f,n)
+#define TRX_UI(f,n)    (GLuint) (GLint) PTR_ELT(f,n)
+#define TRX_1F(f,n)    (GLfloat) PTR_ELT(f,n)
 
 
 #define SZ 4
@@ -546,6 +554,7 @@ static void init_translate_elt(void)
    init_trans_1_GLbyte_elt();
    init_trans_1_GLubyte_elt();
    init_trans_3_GLubyte_elt();
+   init_trans_4_GLubyte_elt();
    init_trans_4_GLshort_elt();
    init_trans_3_GLshort_elt();
    init_trans_2_GLshort_elt();
@@ -588,6 +597,7 @@ void _tnl_imm_elt_init( void )
 }
 
 
+#if 00
 static void _tnl_trans_elt_1f(GLfloat *to,
                       const struct gl_client_array *from,
                       GLuint *flags,
@@ -606,6 +616,7 @@ static void _tnl_trans_elt_1f(GLfloat *to,
                                              n );
 
 }
+#endif
 
 static void _tnl_trans_elt_1ui(GLuint *to,
                        const struct gl_client_array *from,
@@ -710,6 +721,7 @@ static void _tnl_trans_elt_4f(GLfloat (*to)[4],
 
 
 
+#if 0
 static void _tnl_trans_elt_3f(GLfloat (*to)[3],
                       const struct gl_client_array *from,
                       GLuint *flags,
@@ -727,7 +739,7 @@ static void _tnl_trans_elt_3f(GLfloat (*to)[3],
                                              start,
                                              n );
 }
-
+#endif
 
 
 
@@ -748,63 +760,63 @@ void _tnl_translate_array_elts( GLcontext *ctx, struct immediate *IM,
    if (MESA_VERBOSE&VERBOSE_IMMEDIATE)
       fprintf(stderr, "exec_array_elements %d .. %d\n", start, count);
 
-   if (translate & VERT_OBJ) {
-      _tnl_trans_elt_4f( IM->Obj,
+   if (translate & VERT_BIT_POS) {
+      _tnl_trans_elt_4f( IM->Attrib[VERT_ATTRIB_POS],
                         &ctx->Array.Vertex,
-                        flags, elts, (VERT_ELT|VERT_OBJ),
+                        flags, elts, (VERT_BIT_ELT|VERT_BIT_POS),
                         start, count);
 
       if (ctx->Array.Vertex.Size == 4)
-        translate |= VERT_OBJ_234;
+        translate |= VERT_BITS_OBJ_234;
       else if (ctx->Array.Vertex.Size == 3)
-        translate |= VERT_OBJ_23;
+        translate |= VERT_BITS_OBJ_23;
    }
 
 
-   if (translate & VERT_NORM)
-      _tnl_trans_elt_3f( IM->Normal,
+   if (translate & VERT_BIT_NORMAL)
+      _tnl_trans_elt_4f( IM->Attrib[VERT_ATTRIB_NORMAL],
                         &ctx->Array.Normal,
-                        flags, elts, (VERT_ELT|VERT_NORM),
+                        flags, elts, (VERT_BIT_ELT|VERT_BIT_NORMAL),
                         start, count);
 
-   if (translate & VERT_EDGE)
+   if (translate & VERT_BIT_EDGEFLAG)
       _tnl_trans_elt_1ub( IM->EdgeFlag,
                          &ctx->Array.EdgeFlag,
-                         flags, elts, (VERT_ELT|VERT_EDGE),
+                         flags, elts, (VERT_BIT_ELT|VERT_BIT_EDGEFLAG),
                          start, count);
 
-   if (translate & VERT_RGBA) {
-      _tnl_trans_elt_4f( IM->Color,
+   if (translate & VERT_BIT_COLOR0) {
+      _tnl_trans_elt_4f( IM->Attrib[VERT_ATTRIB_COLOR0],
                         &ctx->Array.Color,
-                        flags, elts, (VERT_ELT|VERT_RGBA),
+                        flags, elts, (VERT_BIT_ELT|VERT_BIT_COLOR0),
                         start, count);
    }
 
-   if (translate & VERT_SPEC_RGB) {
-      _tnl_trans_elt_4f( IM->SecondaryColor,
+   if (translate & VERT_BIT_COLOR1) {
+      _tnl_trans_elt_4f( IM->Attrib[VERT_ATTRIB_COLOR1],
                         &ctx->Array.SecondaryColor,
-                        flags, elts, (VERT_ELT|VERT_SPEC_RGB),
+                        flags, elts, (VERT_BIT_ELT|VERT_BIT_COLOR1),
                         start, count);
    }
 
-   if (translate & VERT_FOG_COORD)
-      _tnl_trans_elt_1f( IM->FogCoord,
+   if (translate & VERT_BIT_FOG)
+      _tnl_trans_elt_4f( IM->Attrib[VERT_ATTRIB_FOG],
                         &ctx->Array.FogCoord,
-                        flags, elts, (VERT_ELT|VERT_FOG_COORD),
+                        flags, elts, (VERT_BIT_ELT|VERT_BIT_FOG),
                         start, count);
 
-   if (translate & VERT_INDEX)
+   if (translate & VERT_BIT_INDEX)
       _tnl_trans_elt_1ui( IM->Index,
                          &ctx->Array.Index,
-                         flags, elts, (VERT_ELT|VERT_INDEX),
+                         flags, elts, (VERT_BIT_ELT|VERT_BIT_INDEX),
                          start, count);
 
-   if (translate & VERT_TEX_ANY) {
+   if (translate & VERT_BITS_TEX_ANY) {
       for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++)
-        if (translate & VERT_TEX(i)) {
-           _tnl_trans_elt_4f( IM->TexCoord[i],
+        if (translate & VERT_BIT_TEX(i)) {
+           _tnl_trans_elt_4f( IM->Attrib[VERT_ATTRIB_TEX0 + i],
                               &ctx->Array.TexCoord[i],
-                              flags, elts, (VERT_ELT|VERT_TEX(i)),
+                              flags, elts, (VERT_BIT_ELT|VERT_BIT_TEX(i)),
                               start, count);
 
            if (ctx->Array.TexCoord[i].Size == 4)
@@ -815,7 +827,7 @@ void _tnl_translate_array_elts( GLcontext *ctx, struct immediate *IM,
    }
 
    for (i = start ; i < count ; i++)
-      if (flags[i] & VERT_ELT) flags[i] |= translate;
+      if (flags[i] & VERT_BIT_ELT) flags[i] |= translate;
 
-   IM->CopyOrFlag |= translate;
+   IM->FlushElt = 0;
 }