diff options
author | marha <marha@users.sourceforge.net> | 2009-12-22 18:18:58 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2009-12-22 18:18:58 +0000 |
commit | 3b79162ea5c5be078326f2e0ea85b0f84c02f166 (patch) | |
tree | 6826d1ef026f16ec12d35ee6bd4a892d0a05b7e0 /mesalib/src/mesa/main/mipmap.c | |
parent | 4284aeba874b9168f2228c59639bec8346a56796 (diff) | |
parent | b729d9e1cc1c60e415da24143cabcbaccb525ed7 (diff) | |
download | vcxsrv-3b79162ea5c5be078326f2e0ea85b0f84c02f166.tar.gz vcxsrv-3b79162ea5c5be078326f2e0ea85b0f84c02f166.tar.bz2 vcxsrv-3b79162ea5c5be078326f2e0ea85b0f84c02f166.zip |
svn merge ^/branches/released
Diffstat (limited to 'mesalib/src/mesa/main/mipmap.c')
-rw-r--r-- | mesalib/src/mesa/main/mipmap.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/mesalib/src/mesa/main/mipmap.c b/mesalib/src/mesa/main/mipmap.c index 3dca09d9f..c3928fa51 100644 --- a/mesalib/src/mesa/main/mipmap.c +++ b/mesalib/src/mesa/main/mipmap.c @@ -1501,8 +1501,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target, GLuint comps; ASSERT(texObj); - /* XXX choose cube map face here??? */ - srcImage = texObj->Image[0][texObj->BaseLevel]; + srcImage = _mesa_select_tex_image(ctx, texObj, target, texObj->BaseLevel); ASSERT(srcImage); maxLevels = _mesa_max_texture_levels(ctx, texObj->Target); @@ -1510,7 +1509,9 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target, /* Find convertFormat - the format that do_row() will process */ if (srcImage->IsCompressed) { - /* setup for compressed textures */ + /* setup for compressed textures - need to allocate temporary + * image buffers to hold uncompressed images. + */ GLuint row; GLint components, size; GLchan *dst; @@ -1587,11 +1588,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target, &dstWidth, &dstHeight, &dstDepth); if (!nextLevel) { /* all done */ - if (srcImage->IsCompressed) { - _mesa_free((void *) srcData); - _mesa_free(dstData); - } - return; + break; } /* get dest gl_texture_image */ @@ -1682,6 +1679,12 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target, } } /* loop over mipmap levels */ + + if (srcImage->IsCompressed) { + /* free uncompressed image buffers */ + _mesa_free((void *) srcData); + _mesa_free(dstData); + } } |