We’re using PVRTC compressed textures pretty widely on iOS. ASTC is on the horizon but while we’re metal-only, we’re still supporting some devices that don’t support ASTC so we’re holding back still.
I’ve just noticed that all our supported devices support the ETC2/EAC pixel formats (https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf). I want to check that it’s actual hardware level support of these formats, not driver level decoding to some 16-bit or 32-bit equivalent.
The closest I can find to any advice is some (non-apple employee) forum postings advising against ETC2 on iOS, and this quote from the deprecated OpenGLES on iOS guide “OpenGL ES 3.0 also supports the ETC2 and EAC compressed texture formats; however, PVRTC textures are recommended on iOS devices.”.
The two situations I’m thinking about using ETC2/EAC are:
- Non-square compressed textures (PVRTC has to be square still I believe, although I’m having trouble finding any documentation that confirms that’s still the case on metal).
- We find that the EAC R11 compressed format is a good replacement for R8 in our ES3/Vulkan implementations. It’s half the size of R8 with minimal loss of detail, and PVRTC doesn’t really have an equivalent, so I’m tempted to use that on iOS.
Can anyone confirm if there’s actual hardware support?