"Juan A. Suarez Romero" <jasua...@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 :)

> 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."


>            */
> -         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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to