[Mesa-dev] [PATCH] mesa: expose EXT_texture_compression_s3tc on GLES

Erik Faye-Lund erik.faye-lund at collabora.com
Fri Oct 26 11:14:53 UTC 2018


On Thu, 2018-10-25 at 10:45 -0400, Ilia Mirkin wrote:
> Please confirm that this passes the piglit tests you sent to the list
> when run with ES2 forced, i.e. not ES3.
> (MESA_GLES_VERSION_OVERRIDE=2.0 iirc.) I'm concerned that the extra
> logic was only added to _mesa_es3_error_check_bla and not the es2
> paths.

Yeah, the test still passes.

The _mesa_es3_error_check_format_and_type function seems to be a bit
unfortunately named; it seems to be used for *all* es versions. I don't
know why it's named like it is.

But thanks for pointing this out to me; testing this revealed a
porting-bug, where I tried to use glGetTexLevelParameteriv on gles2,
which isn't supported. I'll send out and updated version of the piglit 
patches for that also.

> On Thu, Oct 25, 2018 at 6:59 AM Erik Faye-Lund
> <erik.faye-lund at collabora.com> wrote:
> > 
> > From: Marek Olšák <marek.olsak at amd.com>
> > 
> > The spec was modified to support GLES.
> > 
> > Tested-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
> > ---
> > This replaces this patch:
> > https://patchwork.freedesktop.org/patch/257423/
> > 
> >  docs/relnotes/18.3.0.html        |  1 +
> >  src/mesa/main/extensions_table.h |  2 +-
> >  src/mesa/main/glformats.c        | 11 +++++++++++
> >  3 files changed, 13 insertions(+), 1 deletion(-)
> > 
> > diff --git a/docs/relnotes/18.3.0.html b/docs/relnotes/18.3.0.html
> > index 5874d3fa330..e0061872de4 100644
> > --- a/docs/relnotes/18.3.0.html
> > +++ b/docs/relnotes/18.3.0.html
> > @@ -57,6 +57,7 @@ Note: some of the new features are only available
> > with certain drivers.
> >  <li>GL_AMD_multi_draw_indirect on all GL 4.x drivers.</li>
> >  <li>GL_AMD_query_buffer_object on i965, nvc0, r600, radeonsi.</li>
> >  <li>GL_EXT_disjoint_timer_query on radeonsi and most other Gallium
> > drivers (ES extension)</li>
> > +<li>GL_EXT_texture_compression_s3tc on all drivers (ES
> > extension)<li>
> >  <li>GL_EXT_vertex_attrib_64bit on i965, nvc0, radeonsi.</li>
> >  <li>GL_EXT_window_rectangles on radeonsi.</li>
> >  <li>GL_KHR_texture_compression_astc_sliced_3d on radeonsi.</li>
> > diff --git a/src/mesa/main/extensions_table.h
> > b/src/mesa/main/extensions_table.h
> > index 09bf923bd0e..47db1583135 100644
> > --- a/src/mesa/main/extensions_table.h
> > +++ b/src/mesa/main/extensions_table.h
> > @@ -278,7 +278,7 @@ EXT(EXT_texture_buffer                      ,
> > OES_texture_buffer
> >  EXT(EXT_texture_compression_dxt1            ,
> > ANGLE_texture_compression_dxt          , GLL, GLC, ES1, ES2, 2004)
> >  EXT(EXT_texture_compression_latc            ,
> > EXT_texture_compression_latc           , GLL,  x ,  x ,  x , 2006)
> >  EXT(EXT_texture_compression_rgtc            ,
> > ARB_texture_compression_rgtc           , GLL, GLC,  x ,  x , 2004)
> > -EXT(EXT_texture_compression_s3tc            ,
> > EXT_texture_compression_s3tc           , GLL, GLC,  x ,  x , 2000)
> > +EXT(EXT_texture_compression_s3tc            ,
> > EXT_texture_compression_s3tc           , GLL, GLC,  x , ES2, 2000)
> >  EXT(EXT_texture_cube_map                    ,
> > ARB_texture_cube_map                   , GLL,  x ,  x ,  x , 2001)
> >  EXT(EXT_texture_cube_map_array              ,
> > OES_texture_cube_map_array             ,  x ,  x ,  x ,  31, 2014)
> >  EXT(EXT_texture_edge_clamp                  ,
> > dummy_true                             , GLL,  x ,  x ,  x , 1997)
> > diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
> > index 6cb3435dea2..f8fc36e9311 100644
> > --- a/src/mesa/main/glformats.c
> > +++ b/src/mesa/main/glformats.c
> > @@ -2803,6 +2803,17 @@ _mesa_es3_error_check_format_and_type(const
> > struct gl_context *ctx,
> >        internalFormat = effectiveInternalFormat;
> >     }
> > 
> > +   /* The GLES variant of EXT_texture_compression_s3tc is very
> > vague and
> > +    * doesn't list valid types. Just do exactly what the spec
> > says.
> > +    */
> > +   if (ctx->Extensions.EXT_texture_compression_s3tc &&
> > +       (internalFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT ||
> > +        internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ||
> > +        internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ||
> > +        internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT5_EXT))
> > +      return format == GL_RGB || format == GL_RGBA ? GL_NO_ERROR :
> > +                                                     GL_INVALID_OP
> > ERATION;
> > +
> >     switch (format) {
> >     case GL_BGRA_EXT:
> >        if (type != GL_UNSIGNED_BYTE || internalFormat != GL_BGRA)
> > --
> > 2.17.2
> > 
> > _______________________________________________
> > 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