Mesa (master): st/mesa: fix computation of last_level in GenerateMipmap
Marek Olšák
mareko at kemper.freedesktop.org
Mon Nov 12 20:38:33 UTC 2012
Module: Mesa
Branch: master
Commit: e7dde5c8fb8ae6964bd5972d5962c2a26fc6ee0f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e7dde5c8fb8ae6964bd5972d5962c2a26fc6ee0f
Author: Marek Olšák <maraeo at gmail.com>
Date: Sun Nov 11 15:32:59 2012 +0100
st/mesa: fix computation of last_level in GenerateMipmap
Array textures were broken.
NOTE: This is a candidate for the stable branches.
Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Dave Airlie <airlied at redhat.com>
---
src/mesa/state_tracker/st_gen_mipmap.c | 28 +++++++---------------------
1 files changed, 7 insertions(+), 21 deletions(-)
diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
index 8892006..c092613 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -121,30 +121,16 @@ compute_num_levels(struct gl_context *ctx,
struct gl_texture_object *texObj,
GLenum target)
{
- if (target == GL_TEXTURE_RECTANGLE_ARB) {
- return 1;
- }
- else {
- const struct gl_texture_image *baseImage =
- _mesa_get_tex_image(ctx, texObj, target, texObj->BaseLevel);
- GLuint size, numLevels;
+ const struct gl_texture_image *baseImage;
+ GLuint numLevels;
- size = MAX2(baseImage->Width2, baseImage->Height2);
- size = MAX2(size, baseImage->Depth2);
+ baseImage = _mesa_get_tex_image(ctx, texObj, target, texObj->BaseLevel);
- numLevels = texObj->BaseLevel;
-
- while (size > 0) {
- numLevels++;
- size >>= 1;
- }
+ numLevels = texObj->BaseLevel + baseImage->MaxNumLevels;
+ numLevels = MIN2(numLevels, texObj->MaxLevel + 1);
+ assert(numLevels >= 1);
- numLevels = MIN2(numLevels, texObj->MaxLevel + 1);
-
- assert(numLevels >= 1);
-
- return numLevels;
- }
+ return numLevels;
}
More information about the mesa-commit
mailing list