<div dir="ltr"><div><div>I'll admit that I don't know that portion of the code all that well, but it looks sensible to me.<br><br></div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 26, 2015 at 3:55 PM, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">_mesa_choose_tex_format (texformat.c) tries I8_SNORM, L8_SNORM, and<br>
either L8A8_SNORM or A8L8_SNORM, none of which are supported by our<br>
driver.  Failing that, it falls back to RGBX for luminance, and RGBA<br>
intensity and luminance alpha.  So, we need to use swizzle overrrides<br>
to obtain the correct values.<br>
<br>
Fixes Piglit's EXT_texture_snorm/fbo-blending-formats and<br>
fbo-clear-formats on Gen6-8.<br>
<br>
v2: Rebase forward 3 years, don't require texformat.c changes.<br>
<br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 20 +++++++++++++++++++-<br>
 1 file changed, 19 insertions(+), 1 deletion(-)<br>
<br>
Tue Jul 17 11:08:59 2012 -0700.<br>
<br>
I'm down to 135 branches...making progress...<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c<br>
index ec4dfdb..f479f44 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c<br>
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c<br>
@@ -187,6 +187,8 @@ brw_get_texture_swizzle(const struct gl_context *ctx,<br>
       }<br>
    }<br>
<br>
+   GLenum datatype = _mesa_get_format_datatype(img->TexFormat);<br>
+<br>
    /* If the texture's format is alpha-only, force R, G, and B to<br>
     * 0.0. Similarly, if the texture's format has no alpha channel,<br>
     * force the alpha value read to 1.0. This allows for the<br>
@@ -200,13 +202,29 @@ brw_get_texture_swizzle(const struct gl_context *ctx,<br>
       swizzles[2] = SWIZZLE_ZERO;<br>
       break;<br>
    case GL_LUMINANCE:<br>
-      if (t->_IsIntegerFormat) {<br>
+      if (t->_IsIntegerFormat || datatype == GL_SIGNED_NORMALIZED) {<br>
          swizzles[0] = SWIZZLE_X;<br>
          swizzles[1] = SWIZZLE_X;<br>
          swizzles[2] = SWIZZLE_X;<br>
          swizzles[3] = SWIZZLE_ONE;<br>
       }<br>
       break;<br>
+   case GL_LUMINANCE_ALPHA:<br>
+      if (datatype == GL_SIGNED_NORMALIZED) {<br>
+         swizzles[0] = SWIZZLE_X;<br>
+         swizzles[1] = SWIZZLE_X;<br>
+         swizzles[2] = SWIZZLE_X;<br>
+         swizzles[3] = SWIZZLE_W;<br>
+      }<br>
+      break;<br>
+   case GL_INTENSITY:<br>
+      if (datatype == GL_SIGNED_NORMALIZED) {<br>
+         swizzles[0] = SWIZZLE_X;<br>
+         swizzles[1] = SWIZZLE_X;<br>
+         swizzles[2] = SWIZZLE_X;<br>
+         swizzles[3] = SWIZZLE_X;<br>
+      }<br>
+      break;<br>
    case GL_RED:<br>
    case GL_RG:<br>
    case GL_RGB:<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.2.2<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>