mesa/meta: move BindTexture() call in _mesa_meta_GenerateMipmap()
authorBrian Paul <brianp@vmware.com>
Mon, 14 Dec 2009 20:35:56 +0000 (13:35 -0700)
committerBrian Paul <brianp@vmware.com>
Mon, 14 Dec 2009 20:39:21 +0000 (13:39 -0700)
This is a follow-up to commit e3fa700c178e11e6735430119232919176ab7b42.

The call to _mesa_BindTexture() must be before we set any other texture
object state, namely the _mesa_TexParameteri() calls.

This fixes bug 25601 (piglit gen-nonzero-unit failure).

src/mesa/drivers/common/meta.c

index 39b0ab1..cd9075b 100644 (file)
@@ -2170,6 +2170,9 @@ _mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target,
 
    _mesa_meta_begin(ctx, META_ALL);
 
+   if (original_active_unit != 0)
+      _mesa_BindTexture(target, texObj->Name);
+
    if (mipmap->ArrayObj == 0) {
       /* one-time setup */
 
@@ -2289,9 +2292,6 @@ _mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target,
    /* texture is already locked, unlock now */
    _mesa_unlock_texture(ctx, texObj);
 
-   if (original_active_unit != 0)
-      _mesa_BindTexture(target, texObj->Name);
-
    for (dstLevel = baseLevel + 1; dstLevel <= maxLevel; dstLevel++) {
       const struct gl_texture_image *srcImage;
       const GLuint srcLevel = dstLevel - 1;