mesa: disable texture unit error check in _mesa_MatrixMode()
authorBrian Paul <brianp@vmware.com>
Wed, 10 Jun 2009 14:39:10 +0000 (08:39 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 10 Jun 2009 15:31:01 +0000 (09:31 -0600)
See comments for details.

src/mesa/main/matrix.c

index 39b4967a58e5ab2400484497f619a48444fb7478..ebc3cbd59c32236846b42c9d4689d4159433c2f5 100644 (file)
@@ -160,11 +160,21 @@ _mesa_MatrixMode( GLenum mode )
       ctx->CurrentStack = &ctx->ProjectionMatrixStack;
       break;
    case GL_TEXTURE:
+      /* This error check is disabled because if we're called from
+       * glPopAttrib() when the active texture unit is >= MaxTextureCoordUnits
+       * we'll generate an unexpected error.
+       * From the GL_ARB_vertex_shader spec it sounds like we should instead
+       * do error checking in other places when we actually try to access
+       * texture matrices beyond MaxTextureCoordUnits.
+       */
+#if 0
       if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
          _mesa_error(ctx, GL_INVALID_OPERATION, "glMatrixMode(invalid tex unit %d)",
                      ctx->Texture.CurrentUnit);
          return;
       }
+#endif
+      ASSERT(ctx->Texture.CurrentUnit < Elements(ctx->TextureMatrixStack));
       ctx->CurrentStack = &ctx->TextureMatrixStack[ctx->Texture.CurrentUnit];
       break;
    case GL_COLOR: