[Mesa-dev] [PATCH] i965: Fix I/L/LA SNORM formats.

Jason Ekstrand jason at jlekstrand.net
Thu Feb 26 20:52:11 PST 2015


I'll admit that I don't know that portion of the code all that well, but it
looks sensible to me.

Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

On Thu, Feb 26, 2015 at 3:55 PM, Kenneth Graunke <kenneth at whitecape.org>
wrote:

> _mesa_choose_tex_format (texformat.c) tries I8_SNORM, L8_SNORM, and
> either L8A8_SNORM or A8L8_SNORM, none of which are supported by our
> driver.  Failing that, it falls back to RGBX for luminance, and RGBA
> intensity and luminance alpha.  So, we need to use swizzle overrrides
> to obtain the correct values.
>
> Fixes Piglit's EXT_texture_snorm/fbo-blending-formats and
> fbo-clear-formats on Gen6-8.
>
> v2: Rebase forward 3 years, don't require texformat.c changes.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
>
> Tue Jul 17 11:08:59 2012 -0700.
>
> I'm down to 135 branches...making progress...
>
> diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> index ec4dfdb..f479f44 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> @@ -187,6 +187,8 @@ brw_get_texture_swizzle(const struct gl_context *ctx,
>        }
>     }
>
> +   GLenum datatype = _mesa_get_format_datatype(img->TexFormat);
> +
>     /* If the texture's format is alpha-only, force R, G, and B to
>      * 0.0. Similarly, if the texture's format has no alpha channel,
>      * force the alpha value read to 1.0. This allows for the
> @@ -200,13 +202,29 @@ brw_get_texture_swizzle(const struct gl_context *ctx,
>        swizzles[2] = SWIZZLE_ZERO;
>        break;
>     case GL_LUMINANCE:
> -      if (t->_IsIntegerFormat) {
> +      if (t->_IsIntegerFormat || datatype == GL_SIGNED_NORMALIZED) {
>           swizzles[0] = SWIZZLE_X;
>           swizzles[1] = SWIZZLE_X;
>           swizzles[2] = SWIZZLE_X;
>           swizzles[3] = SWIZZLE_ONE;
>        }
>        break;
> +   case GL_LUMINANCE_ALPHA:
> +      if (datatype == GL_SIGNED_NORMALIZED) {
> +         swizzles[0] = SWIZZLE_X;
> +         swizzles[1] = SWIZZLE_X;
> +         swizzles[2] = SWIZZLE_X;
> +         swizzles[3] = SWIZZLE_W;
> +      }
> +      break;
> +   case GL_INTENSITY:
> +      if (datatype == GL_SIGNED_NORMALIZED) {
> +         swizzles[0] = SWIZZLE_X;
> +         swizzles[1] = SWIZZLE_X;
> +         swizzles[2] = SWIZZLE_X;
> +         swizzles[3] = SWIZZLE_X;
> +      }
> +      break;
>     case GL_RED:
>     case GL_RG:
>     case GL_RGB:
> --
> 2.2.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150226/5fd08fe1/attachment.html>


More information about the mesa-dev mailing list