added GL_ARB_texture_env_combine, GL_ARB_texture_env_dot3
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 22 Mar 2001 04:54:58 +0000 (04:54 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 22 Mar 2001 04:54:58 +0000 (04:54 +0000)
docs/VERSIONS
src/mesa/main/extensions.c
src/mesa/main/texstate.c
src/mesa/swrast/s_texture.c

index b6ea9b1..cde1cd3 100644 (file)
@@ -1,4 +1,4 @@
-$Id: VERSIONS,v 1.51 2001/03/17 00:47:19 brianp Exp $
+$Id: VERSIONS,v 1.52 2001/03/22 04:55:48 brianp Exp $
 
 
 Mesa Version History
@@ -821,6 +821,8 @@ Mesa Version History
        - GL_SGIX_depth_texture extension
        - GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
        - demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
+       - GL_ARB_texture_env_combine extension
+       - GL_ARB_texture_env_dot3 extension
        - OSMesaCreateContextExt() function
        - libOSMesa.so library, contains the OSMesa driver interface
        - GL/glxext.h header file for GLX extensions
index 6a7d25f..e3b9592 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: extensions.c,v 1.53 2001/03/18 08:53:49 gareth Exp $ */
+/* $Id: extensions.c,v 1.54 2001/03/22 04:54:58 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -61,6 +61,8 @@ static struct {
    { OFF, "GL_ARB_texture_compression",        F(ARB_texture_compression) },
    { OFF, "GL_ARB_texture_cube_map",           F(ARB_texture_cube_map) },
    { OFF, "GL_ARB_texture_env_add",            F(EXT_texture_env_add) },
+   { OFF, "GL_ARB_texture_env_combine",        F(EXT_texture_env_combine) },
+   { OFF, "GL_ARB_texture_env_dot3",           F(EXT_texture_env_dot3) },
    { ON,  "GL_ARB_tranpose_matrix",            0 },
    { ON,  "GL_EXT_abgr",                       0 },
    { ON,  "GL_EXT_bgra",                       0 },
index 1a6a42a..438ba6f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: texstate.c,v 1.37 2001/03/18 08:53:50 gareth Exp $ */
+/* $Id: texstate.c,v 1.38 2001/03/22 04:54:58 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 #endif
 
 
+/* XXX this is temporary, until GL/glext.h is updated. */
+#ifndef GL_DOT3_RGB_ARB
+#define GL_DOT3_RGB_ARB 0x86AE
+#endif
+#ifndef GL_DOT3_RGBA_ARB
+#define GL_DOT3_RGBA_ARB 0x86AF
+#endif
+
 
 
 /**********************************************************************/
@@ -127,6 +135,8 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
               break;
            case GL_DOT3_RGB_EXT:
            case GL_DOT3_RGBA_EXT:
+           case GL_DOT3_RGB_ARB:
+           case GL_DOT3_RGBA_ARB:
               if (!ctx->Extensions.EXT_texture_env_dot3) {
                  _mesa_error(ctx, GL_INVALID_ENUM, "glTexEnv(param)");
                  return;
@@ -272,7 +282,10 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
         if (ctx->Extensions.EXT_texture_env_combine) {
            GLenum operand = (GLenum) (GLint) *param;
            switch (operand) {
+           case GL_SRC_COLOR:           /* ARB combine only */
+           case GL_ONE_MINUS_SRC_COLOR: /* ARB combine only */
            case GL_SRC_ALPHA:
+           case GL_ONE_MINUS_SRC_ALPHA: /* ARB combine only */
               if (texUnit->CombineOperandRGB[2] == operand)
                  return;
               FLUSH_VERTICES(ctx, _NEW_TEXTURE);
@@ -292,6 +305,7 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
            GLenum operand = (GLenum) (GLint) *param;
            switch (operand) {
            case GL_SRC_ALPHA:
+           case GL_ONE_MINUS_SRC_ALPHA: /* ARB combine only */
               if (texUnit->CombineOperandA[2] == operand)
                  return;
               FLUSH_VERTICES(ctx, _NEW_TEXTURE);
index 6bbf482..c451248 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_texture.c,v 1.17 2001/03/21 16:04:49 brianp Exp $ */
+/* $Id: s_texture.c,v 1.18 2001/03/22 04:54:58 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 #include "s_texture.h"
 
 
+/* XXX this is temporary, until GL/glext.h is updated. */
+#ifndef GL_DOT3_RGB_ARB
+#define GL_DOT3_RGB_ARB 0x86AE
+#endif
+#ifndef GL_DOT3_RGBA_ARB
+#define GL_DOT3_RGBA_ARB 0x86AF
+#endif
+
 
 /*
  * These values are used in the fixed-point arithmetic used
@@ -1689,6 +1697,9 @@ texture_combine(const GLcontext *ctx,
 
    ASSERT(ctx->Extensions.EXT_texture_env_combine);
 
+   /*
+    * Do operand setup for up to 3 operands.  Loop over the terms.
+    */
    for (j = 0; j < 3; j++) {
       switch (textureUnit->CombineSourceA[j]) {
          case GL_TEXTURE:
@@ -1763,7 +1774,8 @@ texture_combine(const GLcontext *ctx,
                dst[i][BCOMP] = src[i][ACOMP];
             }
          }
-         else {                      /*  GL_ONE_MINUS_SRC_ALPHA  */
+         else {
+            ASSERT(textureUnit->CombineOperandRGB[j] ==GL_ONE_MINUS_SRC_ALPHA);
             src = (const GLchan (*)[4]) argA[j];
             for (i = 0; i < n; i++) {
                dst[i][RCOMP] = CHAN_MAX - src[i][ACOMP];
@@ -1794,6 +1806,9 @@ texture_combine(const GLcontext *ctx,
       }
    }
 
+   /*
+    * Do the texture combine.
+    */
    switch (textureUnit->CombineModeRGB) {
       case GL_REPLACE:
          {
@@ -1887,6 +1902,8 @@ texture_combine(const GLcontext *ctx,
          break;
       case GL_DOT3_RGB_EXT:
       case GL_DOT3_RGBA_EXT:
+      case GL_DOT3_RGB_ARB:
+      case GL_DOT3_RGBA_ARB:
          {
             const GLubyte (*arg0)[4] = (const GLubyte (*)[4]) argRGB[0];
             const GLubyte (*arg1)[4] = (const GLubyte (*)[4]) argRGB[1];
@@ -1980,7 +1997,8 @@ texture_combine(const GLcontext *ctx,
 
    /* Fix the alpha component for GL_DOT3_RGBA_EXT combining.
     */
-   if (textureUnit->CombineModeRGB == GL_DOT3_RGBA_EXT) {
+   if (textureUnit->CombineModeRGB == GL_DOT3_RGBA_EXT ||
+       textureUnit->CombineModeRGB == GL_DOT3_RGBA_ARB) {
       for (i = 0; i < n; i++) {
         rgba[i][ACOMP] = rgba[i][RCOMP];
       }