[Mesa-dev] [PATCH] meta: Use float for temporary images, not (un)signed normalized.

Jordan Justen jljusten at gmail.com
Mon Sep 17 11:38:37 PDT 2012


Does this cause any regressions for the packed-px-uint test?

-Jordan

On Sat, Sep 15, 2012 at 11:18 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> In commit 091eb15b694, Jordan changed get_temp_image_type() to use
> _mesa_get_format_datatype() instead of returning GL_FLOAT.  That has
> several possible return values: GL_FLOAT, GL_INT, GL_UNSIGNED_INT,
> GL_SIGNED_NORMALIZED, and GL_UNSIGNED_NORMALIZED.
>
> We do want to use GL_INT/GL_UNSIGNED_INT for integer formats.  However,
> we want to continue using GL_FLOAT for the normalized fixed-point types.
> There isn't any code in pack.c to handle GL_(UN)SIGNED_NORMALIZED.
>
> Fixes oglconform's fboarb advanced.blit.copypix, which was regressed by
> commit 091eb15b694a396f8453093575ccec2db7f14eb8.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53573
> Cc: Jordan Justen <jljusten at gmail.com>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/common/meta.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index 3b13ad7..01bbb1c 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -3463,12 +3463,16 @@ get_temp_image_type(struct gl_context *ctx, gl_format format)
>     case GL_LUMINANCE:
>     case GL_LUMINANCE_ALPHA:
>     case GL_INTENSITY:
> -      if (ctx->DrawBuffer->Visual.redBits <= 8)
> +      if (ctx->DrawBuffer->Visual.redBits <= 8) {
>           return GL_UNSIGNED_BYTE;
> -      else if (ctx->DrawBuffer->Visual.redBits <= 16)
> +      } else if (ctx->DrawBuffer->Visual.redBits <= 16) {
>           return GL_UNSIGNED_SHORT;
> -      else
> -         return _mesa_get_format_datatype(format);
> +      } else {
> +         GLenum datatype = _mesa_get_format_datatype(format);
> +         if (datatype == GL_INT || datatype == GL_UNSIGNED_INT)
> +            return datatype;
> +         return GL_FLOAT;
> +      }
>     case GL_DEPTH_COMPONENT:
>        return GL_UNSIGNED_INT;
>     case GL_DEPTH_STENCIL:
> --
> 1.7.11.4
>


More information about the mesa-dev mailing list