meta: Bind texture to unit 0 for mipmap generation
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 9 Dec 2009 19:03:49 +0000 (11:03 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 9 Dec 2009 19:05:15 +0000 (11:05 -0800)
If the active texture unit on entry to mipmap generation is not zero, bind the
texture to unit zero.

Fixes bug #24219.

src/mesa/drivers/common/meta.c

index a4315191434e1a229101f26a5a2f97144e5a692b..39b0ab13c6bda0b1047083cd61968d8e6413fb40 100644 (file)
@@ -2149,6 +2149,7 @@ _mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target,
    const GLenum wrapTSave = texObj->WrapT;
    const GLenum wrapRSave = texObj->WrapR;
    const GLuint fboSave = ctx->DrawBuffer->Name;
+   const GLuint original_active_unit = ctx->Texture.CurrentUnit;
    GLenum faceTarget;
    GLuint dstLevel;
    GLuint border = 0;
@@ -2288,6 +2289,9 @@ _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;