<div dir="ltr"><div>Reviewed-by: Marek Olšák <<a href="mailto:marek.olsak@amd.com">marek.olsak@amd.com</a>><br><br></div>Marek<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 25, 2018 at 3:08 PM, Eric Anholt <span dir="ltr"><<a href="mailto:eric@anholt.net" target="_blank">eric@anholt.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">GLES's GL_EXT_texture_type_2_10_10_<wbr>10_REV allows uploading this type to an<br>
unsized internalformat, and it should be non-color-renderable.<br>
fbobject.c's implementation of the check for color-renderable is checks<br>
that the texture has a 2101010 mesa format, so make sure that we have<br>
chosen a 2101010 format so that check can do what it meant to.<br>
<br>
Fixes KHR-GLES3.packed_pixels.pbo_<wbr>rectangle.rgb on vc5.<br>
---<br>
 src/mesa/state_tracker/st_<wbr>format.c | 13 +++++++++++++<br>
 1 file changed, 13 insertions(+)<br>
<br>
diff --git a/src/mesa/state_tracker/st_<wbr>format.c b/src/mesa/state_tracker/st_<wbr>format.c<br>
index 3db3c7e967c6..418f5342025c 100644<br>
--- a/src/mesa/state_tracker/st_<wbr>format.c<br>
+++ b/src/mesa/state_tracker/st_<wbr>format.c<br>
@@ -2138,6 +2138,19 @@ st_choose_format(struct st_context *st, GLenum internalFormat,<br>
       goto success;<br>
    }<br>
<br>
+   /* For an unsized GL_RGB but a 2_10_10_10 type, try to pick one of the<br>
+    * 2_10_10_10 formats.  This is important for<br>
+    * GL_EXT_texture_type_2_10_10_<wbr>10_EXT support, which says that these<br>
+    * formats are not color-renderable.  Mesa's check for making those<br>
+    * non-color-renderable is based on our chosen format being 2101010.<br>
+    */<br>
+   if (type == GL_UNSIGNED_INT_2_10_10_10_<wbr>REV) {<br>
+      if (internalFormat == GL_RGB)<br>
+         internalFormat = GL_RGB10;<br>
+      else if (internalFormat == GL_RGBA)<br>
+         internalFormat = GL_RGB10_A2;<br>
+   }<br>
+<br>
    /* search table for internalFormat */<br>
    for (i = 0; i < ARRAY_SIZE(format_map); i++) {<br>
       const struct format_mapping *mapping = &format_map[i];<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.17.0<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>