[Mesa-dev] [PATCH] mesa: Skip mipmap generation if there is no source image.

Brian Paul brianp at vmware.com
Tue Oct 18 15:56:48 PDT 2011


On 10/18/2011 04:09 PM, Eric Anholt wrote:
> The spec doesn't explicitly mandate this behavior, but it seems like
> the only sensible thing to do (as opposed to assertion failing or
> segfaulting).
>
> v2: Do the early return before calling into the driver function.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40308
> ---
>   src/mesa/main/fbobject.c |    8 ++++++++
>   1 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index f9da54e..c56062a 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -2486,6 +2486,7 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
>   void GLAPIENTRY
>   _mesa_GenerateMipmapEXT(GLenum target)
>   {
> +   struct gl_texture_image *srcImage;
>      struct gl_texture_object *texObj;
>      GLboolean error;
>
> @@ -2532,6 +2533,13 @@ _mesa_GenerateMipmapEXT(GLenum target)
>      }
>
>      _mesa_lock_texture(ctx, texObj);
> +
> +   srcImage = _mesa_select_tex_image(ctx, texObj, target, texObj->BaseLevel);
> +   if (!srcImage) {
> +      _mesa_unlock_texture(ctx, texObj);
> +      return;
> +   }
> +
>      if (target == GL_TEXTURE_CUBE_MAP) {
>         GLuint face;
>         for (face = 0; face<  6; face++)

Reviewed-by: Brian Paul <brianp at vmware.com>

BTW, for anyone else reading along, the earlier _mesa_cube_complete() 
test (if it passes) will ensure that checking just the positive-X face 
image is sufficient for cubemaps.

-Brian


More information about the mesa-dev mailing list