initial work for GL_ARB_texture_compression

This commit is contained in:
Brian Paul
2000-05-23 20:10:49 +00:00
parent 35d5301a54
commit 1207bf057a
10 changed files with 339 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
/* $Id: texstate.c,v 1.12 2000/05/23 17:14:49 brianp Exp $ */
/* $Id: texstate.c,v 1.13 2000/05/23 20:10:50 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -463,6 +463,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
const struct gl_texture_image *img = NULL;
GLuint dimensions;
GLboolean isProxy;
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetTexLevelParameter");
@@ -486,6 +487,11 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
return;
}
isProxy = (target == GL_PROXY_TEXTURE_1D) ||
(target == GL_PROXY_TEXTURE_2D) ||
(target == GL_PROXY_TEXTURE_3D) ||
(target == GL_PROXY_TEXTURE_CUBE_MAP_ARB);
switch (pname) {
case GL_TEXTURE_WIDTH:
*params = img->Width;
@@ -535,9 +541,31 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
case GL_TEXTURE_INDEX_SIZE_EXT:
*params = img->IndexBits;
return;
/* GL_ARB_texture_compression */
case GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB:
if (ctx->Extensions.HaveTextureCompression) {
if (img->IsCompressed && !isProxy)
*params = img->CompressedSize;
else
gl_error(ctx, GL_INVALID_OPERATION,
"glGetTexLevelParameter[if]v(pname)");
}
else {
gl_error(ctx, GL_INVALID_ENUM, "glGetTexLevelParameter[if]v(pname)");
}
return;
case GL_TEXTURE_COMPRESSED_ARB:
if (ctx->Extensions.HaveTextureCompression) {
*params = (GLint) img->IsCompressed;
}
else {
gl_error(ctx, GL_INVALID_ENUM, "glGetTexLevelParameter[if]v(pname)");
}
return;
default:
gl_error( ctx, GL_INVALID_ENUM,
"glGetTexLevelParameter[if]v(pname)" );
gl_error(ctx, GL_INVALID_ENUM, "glGetTexLevelParameter[if]v(pname)");
}
}