ETC1 Texture compression guaranteed to be available on OpenGL ES 2.0 Android Devices?

1.1k Views Asked by At

I'm a little confused as to the availability (or not) of ETC1 Textue compression on Android devices.

I see this (from the Android Docs) being quoted in various places:

Caution: The ETC1 format is supported by most Android devices, but it not guaranteed to be available. To check if the ETC1 format is supported on a device, call the ETC1Util.isETC1Supported() method.

I also believe (and please correct me if I'm wrong) that ETC1 support is mandated by OpenGL ES 2.0.

Therefore can someone please clarify if the above statement from the docs means simply that ETC1 Compression support is not guaranteed to be available OpenGL ES 1.x, devices, but might be available by way of an extenstion, therfore on these devices you should call the ETC1Util.isETC1Supported() method to check availability.

If my assumption is correct I would also assume then that I can be 100% guaranteed that ETC1 is available on all of my target devices (as my app uses OpenGL ES 2.0, which I check the availability of in-app). And therefore I don't need to check ETC1Util.isETC1Supported()?

Or maybe I'm misunderstanding it and I still need to check?

1

There are 1 best solutions below

1
On

Based on the official Android documentation, it is guaranteed that devices with ES 2.0 support also support ETC1. I found at least two pages stating that:

  • On the page Creating Multiple APKs for Different GL Textures, under "Chart Your Requirements":

    Note that it’s generally a good idea for one of your APKs to support ETC1, as that texture format is supported by all Android-powered devices that support the OpenGL ES 2.0 spec.

  • On the page with the documentation for supports-gl-texture, in the table with the individual formats, it says for GL_OES_compressed_ETC1_RGB8_texture:

    Ericsson texture compression. Specified in OpenGL ES 2.0 and available in all Android-powered devices that support OpenGL ES 2.0.