[Mesa-dev] [PATCH] mesa: enable ASTC/ETC1 compressed textures

Juan A. Suarez Romero jasuarez at igalia.com
Wed Jan 24 16:03:55 UTC 2018


On Mon, 2018-01-22 at 08:38 +0800, Eric Anholt wrote:
> "Juan A. Suarez Romero" <jasuarez at igalia.com> writes:
> 
> > Enable these kind of texture when proper extensions are available.
> 
> In the subject, s/textures/3D textures/ since it's surprising to hear
> that they're not supported yet :)

Good point! :)

> 
> > Fixes KHR-GLES2.texture_3d.* with these textures.
> > ---
> >  src/mesa/main/teximage.c | 26 +++++++++++++++++++-------
> >  1 file changed, 19 insertions(+), 7 deletions(-)
> > 
> > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> > index e5f8bb0718f..a9940de88b1 100644
> > --- a/src/mesa/main/teximage.c
> > +++ b/src/mesa/main/teximage.c
> > @@ -1487,6 +1487,9 @@ _mesa_target_can_be_compressed(const struct gl_context *ctx, GLenum target,
> >        break;
> >     case GL_TEXTURE_3D:
> >        switch (layout) {
> > +      case MESA_FORMAT_LAYOUT_ETC1:
> > +         target_can_be_compresed = ctx->Extensions.OES_compressed_ETC1_RGB8_texture;
> > +         break;
> >        case MESA_FORMAT_LAYOUT_ETC2:
> >           /* See ETC2/EAC comment in case GL_TEXTURE_CUBE_MAP_ARRAY. */
> >           if (_mesa_is_gles3(ctx))
> > @@ -4648,10 +4651,12 @@ out:
> >   */
> >  static GLboolean
> >  compressed_subtexture_target_check(struct gl_context *ctx, GLenum target,
> > -                                   GLint dims, GLenum format, bool dsa,
> > +                                   GLint dims, GLenum intFormat, bool dsa,
> >                                     const char *caller)
> >  {
> >     GLboolean targetOK;
> > +   mesa_format format;
> > +   enum mesa_format_layout layout;
> >  
> >     if (dsa && target == GL_TEXTURE_RECTANGLE) {
> >        _mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid target %s)", caller,
> > @@ -4712,21 +4717,28 @@ compressed_subtexture_target_check(struct gl_context *ctx, GLenum target,
> >            * which is (at this time) only bptc. Otherwise we'd say s3tc (and
> >            * more) are valid here, which they are not, but of course not
> >            * mentioned by core spec.
> > +          *
> > +          * We add also other formats supported due extensions.
> 
> I think the explanation could use some expansion, like:
> 
> "The OES_texture_3D spec doesn't specify any list of supported formats
> for CompressedTex*Image3D, and OES_texture_compressed_ETC1_RGB8_texture
> mentions only 2D for a function supporting it.  However, given a KHR
> conformance test expects that the two work together in the obvious way,
> follow the tests not the specs."
> 

Thanks. I'll use that wording.

	J.A.

> 
> >            */
> > -         switch (format) {
> > +         format = _mesa_glenum_to_compressed_format(intFormat);
> > +         layout = _mesa_get_format_layout(format);
> > +         switch (layout) {
> >           /* These are the only 3D compression formats supported at this time */
> > -         case GL_COMPRESSED_RGBA_BPTC_UNORM:
> > -         case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:
> > -         case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:
> > -         case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
> > +         case MESA_FORMAT_LAYOUT_BPTC:
> >              /* valid format */
> >              break;
> > +         case MESA_FORMAT_LAYOUT_ASTC:
> > +            targetOK = ctx->Extensions.KHR_texture_compression_astc_ldr;
> > +            break;
> > +         case MESA_FORMAT_LAYOUT_ETC1:
> > +            targetOK = ctx->Extensions.OES_compressed_ETC1_RGB8_texture;
> > +            break;
> >           default:
> >              /* invalid format */
> >              _mesa_error(ctx, GL_INVALID_OPERATION,
> >                          "%s(invalid target %s for format %s)", caller,
> >                          _mesa_enum_to_string(target),
> > -                        _mesa_enum_to_string(format));
> > +                        _mesa_enum_to_string(intFormat));
> >              return GL_TRUE;
> >           }
> >           break;
> > -- 
> > 2.14.3
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list