Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Wed, Apr 25, 2018 at 3:08 PM, Eric Anholt <e...@anholt.net> wrote: > GLES's GL_EXT_texture_type_2_10_10_10_REV allows uploading this type to an > unsized internalformat, and it should be non-color-renderable. > fbobject.c's implementation of the check for color-renderable is checks > that the texture has a 2101010 mesa format, so make sure that we have > chosen a 2101010 format so that check can do what it meant to. > > Fixes KHR-GLES3.packed_pixels.pbo_rectangle.rgb on vc5. > --- > src/mesa/state_tracker/st_format.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/src/mesa/state_tracker/st_format.c > b/src/mesa/state_tracker/st_format.c > index 3db3c7e967c6..418f5342025c 100644 > --- a/src/mesa/state_tracker/st_format.c > +++ b/src/mesa/state_tracker/st_format.c > @@ -2138,6 +2138,19 @@ st_choose_format(struct st_context *st, GLenum > internalFormat, > goto success; > } > > + /* For an unsized GL_RGB but a 2_10_10_10 type, try to pick one of the > + * 2_10_10_10 formats. This is important for > + * GL_EXT_texture_type_2_10_10_10_EXT support, which says that these > + * formats are not color-renderable. Mesa's check for making those > + * non-color-renderable is based on our chosen format being 2101010. > + */ > + if (type == GL_UNSIGNED_INT_2_10_10_10_REV) { > + if (internalFormat == GL_RGB) > + internalFormat = GL_RGB10; > + else if (internalFormat == GL_RGBA) > + internalFormat = GL_RGB10_A2; > + } > + > /* search table for internalFormat */ > for (i = 0; i < ARRAY_SIZE(format_map); i++) { > const struct format_mapping *mapping = &format_map[i]; > -- > 2.17.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev