mesa: Fix valid texture target test in _mesa_GetTexLevelParameteriv()
authorAnuj Phogat <anuj.phogat@gmail.com>
Fri, 2 Mar 2012 20:00:51 +0000 (12:00 -0800)
committerAnuj Phogat <anuj.phogat@gmail.com>
Tue, 6 Mar 2012 03:02:08 +0000 (19:02 -0800)
_mesa_max_texture_levels() is also used to test valid texture target
in _mesa_GetTexLevelParameteriv(). GL_TEXTURE_CUBE_MAP is not allowed
as texture target in glGetTexLevelParameter(). So, this should throw
GL_INVALID_ENUM error.

Few other functions which use _mesa_max_texture_levels() like
getcompressedteximage_error_check() and getteximage_error_check()
also don't accept GL_TEXTURE_CUBE_MAP.

Above fix makes piglit fbo-cubemap test to fail. This is because of
incorrect texture target passed to _mesa_max_texture_levels() in
framebuffer_texture(). Fixing that as well

Note: This is a candidate for the stable branches

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/fbobject.c
src/mesa/main/teximage.c

index 6ee062d0b119c4cce77124a8913f7cf947d371f8..281b1ca2fe4168be9c9ef3ef782643c1bbcfdeec 100644 (file)
@@ -1994,7 +1994,7 @@ framebuffer_texture(struct gl_context *ctx, const char *caller, GLenum target,
       }
 
       if ((level < 0) ||
-          (level >= _mesa_max_texture_levels(ctx, texObj->Target))) {
+          (level >= _mesa_max_texture_levels(ctx, textarget))) {
          _mesa_error(ctx, GL_INVALID_VALUE,
                      "glFramebufferTexture%sEXT(level)", caller);
          return;
index 4fb81e62d23b84ae33666c21347b8d0a2850d179..c0e5b9bec14df5486d191ca4e0bef1b3351fad64 100644 (file)
@@ -915,7 +915,6 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target)
    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB:
    case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB:
    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB:
-   case GL_TEXTURE_CUBE_MAP_ARB:
    case GL_PROXY_TEXTURE_CUBE_MAP_ARB:
       return ctx->Extensions.ARB_texture_cube_map
          ? ctx->Const.MaxCubeTextureLevels : 0;