fixed pointer arithmetic error in glCopyPixels
[mesa.git] / src / mesa / main / texstate.c
index 827a6bd8943f9278f84458ff3bb84591e1f54bf6..19e8984ad96ef8b79690a3ee6dc13262caf7b503 100644 (file)
@@ -1,10 +1,10 @@
-/* $Id: texstate.c,v 1.62 2001/12/18 04:06:45 brianp Exp $ */
+/* $Id: texstate.c,v 1.64 2002/02/15 16:32:06 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
  * 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"),
@@ -46,7 +46,6 @@
 #ifndef GL_TEXTURE_COMPARE_MODE_ARB
 #define GL_TEXTURE_COMPARE_MODE_ARB    0x9990
 #define GL_TEXTURE_COMPARE_FUNC_ARB    0x9991
-#define GL_TEXTURE_COMPARE_RESULT_ARB  0x9992
 #define GL_COMPARE_R_TO_TEXTURE_ARB    0x9993
 #endif
 
@@ -469,10 +468,16 @@ void
 _mesa_TexEnviv( GLenum target, GLenum pname, const GLint *param )
 {
    GLfloat p[4];
-   p[0] = INT_TO_FLOAT( param[0] );
-   p[1] = INT_TO_FLOAT( param[1] );
-   p[2] = INT_TO_FLOAT( param[2] );
-   p[3] = INT_TO_FLOAT( param[3] );
+   if (pname == GL_TEXTURE_ENV_COLOR) {
+      p[0] = INT_TO_FLOAT( param[0] );
+      p[1] = INT_TO_FLOAT( param[1] );
+      p[2] = INT_TO_FLOAT( param[2] );
+      p[3] = INT_TO_FLOAT( param[3] );
+   }
+   else {
+      p[0] = (GLint) param[0];
+      p[1] = p[2] = p[3] = 0;  /* init to zero, just to be safe */
+   }
    _mesa_TexEnvfv( target, pname, p );
 }
 
@@ -1103,7 +1108,7 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
       case GL_TEXTURE_COMPARE_MODE_ARB:
          if (ctx->Extensions.ARB_shadow) {
             const GLenum mode = (GLenum) params[0];
-            if (mode == GL_LUMINANCE || mode == GL_COMPARE_R_TO_TEXTURE_ARB) {
+            if (mode == GL_NONE || mode == GL_COMPARE_R_TO_TEXTURE_ARB) {
                FLUSH_VERTICES(ctx, _NEW_TEXTURE);
                texObj->CompareMode = params[0];
             }
@@ -1138,23 +1143,23 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
             return;
          }
          break;
-      case GL_TEXTURE_COMPARE_RESULT_ARB:
-         if (ctx->Extensions.ARB_shadow) {
+      case GL_DEPTH_TEXTURE_MODE_ARB:
+         if (ctx->Extensions.ARB_depth_texture) {
             const GLenum result = (GLenum) params[0];
             if (result == GL_LUMINANCE || result == GL_INTENSITY
                 || result == GL_ALPHA) {
                FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-               texObj->CompareResult = params[0];
+               texObj->DepthMode = params[0];
             }
             else {
                _mesa_error(ctx, GL_INVALID_ENUM,
-                          "glTexParameter(bad GL_TEXTURE_COMPARE_RESULT_ARB)");
+                          "glTexParameter(bad GL_DEPTH_TEXTURE_MODE_ARB)");
                return;
             }
          }
          else {
             _mesa_error(ctx, GL_INVALID_ENUM,
-                        "glTexParameter(pname=GL_TEXTURE_COMPARE_RESULT_ARB)");
+                        "glTexParameter(pname=GL_DEPTH_TEXTURE_MODE_ARB)");
             return;
          }
          break;
@@ -1498,9 +1503,9 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
             return;
          }
          break;
-      case GL_TEXTURE_COMPARE_RESULT_ARB:
-         if (ctx->Extensions.ARB_shadow) {
-            *params = (GLfloat) obj->CompareResult;
+      case GL_DEPTH_TEXTURE_MODE_ARB:
+         if (ctx->Extensions.ARB_depth_texture) {
+            *params = (GLfloat) obj->DepthMode;
             return;
          }
          break;
@@ -1627,9 +1632,9 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
             return;
          }
          break;
-      case GL_TEXTURE_COMPARE_RESULT_ARB:
-         if (ctx->Extensions.ARB_shadow) {
-            *params = (GLint) obj->CompareResult;
+      case GL_DEPTH_TEXTURE_MODE_ARB:
+         if (ctx->Extensions.ARB_depth_texture) {
+            *params = (GLint) obj->DepthMode;
             return;
          }
          break;