[Mesa-dev] [PATCH 2/2] st/mesa: fix mipmap image size computation w.r.t. texture arrays

Jakob Bornecrantz jakob at vmware.com
Fri Mar 23 07:42:07 PDT 2012


----- Original Message -----
> The image height or depth is the array_size for array textures.
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=47742
> 
> NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>

> ---
>  src/mesa/state_tracker/st_gen_mipmap.c |   18 +++++++++++++++---
>  1 files changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/src/mesa/state_tracker/st_gen_mipmap.c
> b/src/mesa/state_tracker/st_gen_mipmap.c
> index d349664..8892006 100644
> --- a/src/mesa/state_tracker/st_gen_mipmap.c
> +++ b/src/mesa/state_tracker/st_gen_mipmap.c
> @@ -233,10 +233,22 @@ st_generate_mipmap(struct gl_context *ctx,
> GLenum target,
>           = _mesa_get_tex_image(ctx, texObj, target, srcLevel);
>        struct gl_texture_image *dstImage;
>        struct st_texture_image *stImage;
> -      uint dstWidth = u_minify(pt->width0, dstLevel);
> -      uint dstHeight = u_minify(pt->height0, dstLevel);
> -      uint dstDepth = u_minify(pt->depth0, dstLevel);
>        uint border = srcImage->Border;
> +      uint dstWidth, dstHeight, dstDepth;
> +
> +      dstWidth = u_minify(pt->width0, dstLevel);
> +      if (texObj->Target == GL_TEXTURE_1D_ARRAY) {
> +         dstHeight = pt->array_size;
> +      }
> +      else {
> +         dstHeight = u_minify(pt->height0, dstLevel);
> +      }
> +      if (texObj->Target == GL_TEXTURE_2D_ARRAY) {
> +         dstDepth = pt->array_size;
> +      }
> +      else {
> +         dstDepth = u_minify(pt->depth0, dstLevel);
> +      }
>  
>        dstImage = _mesa_get_tex_image(ctx, texObj, target, dstLevel);
>        if (!dstImage) {
> --
> 1.7.3.4


More information about the mesa-dev mailing list