When compressing certain textures with ASTC LDR we get corrupted results.
Source image:
Source image (1024x512 lightmap) can also be found attached to post or downloaded here:
https://dl.dropboxusercontent.com/u/7197208/images/lightmap_table-evening.png
When compressed in LDR Linear mode we get corrupted result: top part (2/3rds of image) is clear white and in the bottom source image is repeated 3 times:
When trying to compress image in LDR SRGB we get the following error:
Image is compressed correctly only in HDR mode.
This does not happen with other images, only certain ones (black-and-white lightmaps) are affected by bug.
Tested on Mali Texture Compression Tool versions 4.2.0 and 4.1.0.
Bug prevents us from using compressed ASTC textures in our Android app, its a shame because it provides excellent quality compared to ETC2 full of block artifacts.
Hi, it looks like this is a "feature" of astcenc, which TCT uses internally. astcenc uses the DirectX coordinate system (where 0,0 is at the top left of the image), so it will invert the image before compressing it, and invert it back again when decompressing it. This is different to other compressors, like etcpack, which do not do this.
You can rest assured that this is NOT a hardware issue. The way to deal with this problem is, as you have been doing, to manually invert your image before compressing it. We recommend using a tool like ImageMagick to automate this. This fix will work on all hardware that supports ASTC (we've tested it on a Galaxy Note 4 and an Nvidia Shield), and will allow you to use the same shader code to sample from ASTC textures as well as ETC1 or uncompressed textures.
For those who want to know how to flip, using imagemagick:
convert -flip <input.png> <output.png>
Thank you for explaining this. We'll use flipped source images.