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

Juan A. Suarez Romero jasuarez at igalia.com
Thu Feb 1 17:47:41 UTC 2018


On Thu, 2018-02-01 at 12:45 +0100, Juan A. Suarez Romero wrote:
> On Mon, 2018-01-29 at 16:25 -0800, Eric Anholt wrote:
> > "Juan A. Suarez Romero" <jasuarez at igalia.com> writes:
> > 
> > > Enable these kind of 3D texture when proper extensions are available.
> > > 
> > > Fixes KHR-GLES2.texture_3d.* with these textures.
> > > 
> > > v2: add better clarification (Eric)
> > > ---
> > >  src/mesa/main/teximage.c | 31 ++++++++++++++++++++++++-------
> > >  1 file changed, 24 insertions(+), 7 deletions(-)
> > > 
> > > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> > > index e5f8bb0718f..56235898c66 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. */
> > 
> > OK, I took a look at the ETC2/EAC comment above, this time, and it looks
> > like 3D textures are supposed to be not supported with ETC2 or ASTC
> > according to table 8.17 in GLES 3.2.
> > 
> > This is looking more like a testcase bug to me.
> 
> 
> Yes, you're right. This is similar to another patch I sent for review
> and that turned out it was wrong for the same reason (both patches are
> related with the same test).
> 
> So I withdraw this patch, and I'll send a fix for the testcase instead.
> 
> Thanks.
> 

After re-reading again more carefully, I think the patch is partially
correct, though it needs changes.

According to spec KHR_texture_compression_astc_{hdr,ldr} if hdr is
supported then the 3D textures column must be checked for all ASTC
textures.

If only LDR is supported, then it is kept unchecked, unless
KHR_texture_compression_astc_sliced_3d is also supported, which again mark as checked all ASTC textures for 3D Textures.

This is already correctly implemented in Mesa for CompressedTexImage3D.

But the last part of the patch was doing the check for
CompressedTexSubImage3D (incorrectly, which needs to be fixed). 

According to KHR_texture_compression_astc_{hdr,ldr}:


  An INVALID_OPERATION error is generated by CompressedTexSubImage3D if
  <format> is TEXTURE_CUBE_MAP_ARRAY and the "Cube Map Array" column of
  table 8.19 is *not* checked, or if <format> is TEXTURE_3D and the "3D
  Tex." column of table 8.19 is *not* checked"


My understanding is that if HDR is implemented, or LDR and
astc_sliced_3d are implemented, then the 3D Tex. column is checked and
thus it is correct to call either CompressedTexImage3D a
CompressedTexSubImage3D.

I'll send a new patch.

> KHR_texture_compression_astc_sliced_3d
> 	J.A.
> 
> _______________________________________________
> 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