more work on GL_ARB_texture_compression
[mesa.git] / src / mesa / main / get.c
index e6e4a59717cd7a5e5091652730b01a29ead9aae5..2c349c77191293b82420c5745e0447bc0415459b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: get.c,v 1.26 2000/05/22 16:33:21 brianp Exp $ */
+/* $Id: get.c,v 1.29 2000/05/23 20:10:49 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -963,7 +963,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
          return;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
          if (ctx->Extensions.HaveTextureCubeMap)
-            *params = INT_TO_BOOL(textureUnit->CurrentPosX->Name);
+            *params = INT_TO_BOOL(textureUnit->CurrentCubeMap->Name);
          else
             gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
          return;
@@ -974,6 +974,31 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
             gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
          break;
 
+      /* GL_ARB_texture_compression */
+      case GL_TEXTURE_COMPRESSION_HINT_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = INT_TO_BOOL(ctx->Hint.TextureCompression);
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+         break;
+      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = INT_TO_BOOL(ctx->Const.NumCompressedTextureFormats);
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+         break;
+      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            GLuint i;
+            for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
+               params[i] = INT_TO_BOOL(ctx->Const.CompressedTextureFormats[i]);
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+         break;
+
       /* GL_PGI_misc_hints */
       case GL_STRICT_DEPTHFUNC_HINT_PGI:
         *params = ENUM_TO_BOOL(GL_NICEST);
@@ -2077,21 +2102,46 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
          if (ctx->Extensions.HaveTextureCubeMap)
             *params = (GLdouble) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
          return;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
          if (ctx->Extensions.HaveTextureCubeMap)
-            *params = (GLdouble) textureUnit->CurrentPosX->Name;
+            *params = (GLdouble) textureUnit->CurrentCubeMap->Name;
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
          return;
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
          if (ctx->Extensions.HaveTextureCubeMap)
             *params = (GLdouble) ctx->Const.MaxCubeTextureSize;
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
          return;
 
+      /* GL_ARB_texture_compression */
+      case GL_TEXTURE_COMPRESSION_HINT_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = (GLdouble) ctx->Hint.TextureCompression;
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
+         break;
+      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = (GLdouble) ctx->Const.NumCompressedTextureFormats;
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
+         break;
+      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            GLuint i;
+            for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
+               params[i] = (GLdouble) ctx->Const.CompressedTextureFormats[i];
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
+         break;
+
       /* GL_PGI_misc_hints */
       case GL_STRICT_DEPTHFUNC_HINT_PGI:
         *params = ENUM_TO_DOUBLE(GL_NICEST);
@@ -3194,21 +3244,46 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
          if (ctx->Extensions.HaveTextureCubeMap)
             *params = (GLfloat) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetFloatv");
          return;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
          if (ctx->Extensions.HaveTextureCubeMap)
-            *params = (GLfloat) textureUnit->CurrentPosX->Name;
+            *params = (GLfloat) textureUnit->CurrentCubeMap->Name;
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetFloatv");
          return;
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
          if (ctx->Extensions.HaveTextureCubeMap)
             *params = (GLfloat) ctx->Const.MaxCubeTextureSize;
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetFloatv");
          return;
 
+      /* GL_ARB_texture_compression */
+      case GL_TEXTURE_COMPRESSION_HINT_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = (GLfloat) ctx->Hint.TextureCompression;
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetFloatv");
+         break;
+      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = (GLfloat) ctx->Const.NumCompressedTextureFormats;
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetFloatv");
+         break;
+      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            GLuint i;
+            for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
+               params[i] = (GLfloat) ctx->Const.CompressedTextureFormats[i];
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetFloatv");
+         break;
+
       /* GL_PGI_misc_hints */
       case GL_STRICT_DEPTHFUNC_HINT_PGI:
         *params = ENUM_TO_FLOAT(GL_NICEST);
@@ -4285,21 +4360,46 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
          if (ctx->Extensions.HaveTextureCubeMap)
             *params = (GLint) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
          return;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
          if (ctx->Extensions.HaveTextureCubeMap)
-            *params = textureUnit->CurrentPosX->Name;
+            *params = textureUnit->CurrentCubeMap->Name;
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
          return;
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
          if (ctx->Extensions.HaveTextureCubeMap)
             *params = ctx->Const.MaxCubeTextureSize;
          else
-            gl_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+            gl_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
          return;
 
+      /* GL_ARB_texture_compression */
+      case GL_TEXTURE_COMPRESSION_HINT_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = (GLint) ctx->Hint.TextureCompression;
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
+         break;
+      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            *params = (GLint) ctx->Const.NumCompressedTextureFormats;
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
+         break;
+      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
+         if (ctx->Extensions.HaveTextureCompression) {
+            GLuint i;
+            for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
+               params[i] = (GLint) ctx->Const.CompressedTextureFormats[i];
+         }
+         else
+            gl_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
+         break;
+
       /* GL_PGI_misc_hints */
       case GL_STRICT_DEPTHFUNC_HINT_PGI:
         *params = (GL_NICEST);
@@ -4309,10 +4409,10 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
         break;
       case GL_STRICT_SCISSOR_HINT_PGI:
       case GL_FULL_STIPPLE_HINT_PGI:
-        *params = (GL_TRUE);
+        *params = GL_TRUE;
         break;
       case GL_CONSERVE_MEMORY_HINT_PGI:
-        *params = (GL_FALSE);
+        *params = GL_FALSE;
         break;
       case GL_ALWAYS_FAST_HINT_PGI:
         *params = (ctx->Hint.AllowDrawWin == GL_TRUE &&
@@ -4344,7 +4444,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
         *params = GL_DONT_CARE;
         break;
       case GL_BACK_NORMALS_HINT_PGI:
-        *params = (GL_TRUE);
+        *params = GL_TRUE;
         break;
       case GL_NATIVE_GRAPHICS_HANDLE_PGI:
         *params = 0;