ASTC on the desktop?

I’ve been out of the loop for a while, so maybe I missed something…

Does anyone know what the status is of ASTC support on desktop GL? Will it ever happen? It seems such a nice and flexible format, good compression and image quality. It’s really about time to have DXT replaced with a better de-facto standard.

So far it seems it has remained mobile ARM only. What’s up with that? Patents? The extension spec doesn’t list IP issues.
Or does the lack of DX (binary compatible) equivalent make it less attractive for hardware?

Relevant links:
https://www.opengl.org/registry/specs/KHR/texture_compression_astc_hdr.txt

1 Like

So far it seems it has remained mobile ARM only. What’s up with that? Patents? The extension spec doesn’t list IP issues.

I would guess that it’s hardware. Texture decompression is not something you can do in shaders (at least, not with reasonable performance). So it would have to be something hard-coded directly into the texture fetching or caching logic.

It’s really about time to have DXT replaced with a better de-facto standard.

We have a better de-facto standard. It’s called BPTC. Though it has a fixed block size and can’t do better than 4:1 on unsigned normalized colors (based on 32-bit colors). Then again, the ASTC extension doesn’t seem to support 2 or 1 channels either, and I’m not entirely clear on what it means by “HDR”. That sounds like floating-point values, but what’s the range on them?

It seems to me that the main advantage of ASTC is that you can choose to lose more quality (and thus gain greater compression) than with BPTC by increasing the footprint. Whereas BPTC is all about improving the quality of the compression, relative to existing modes.

ASTC can encode one- and two-channel images, but you have to encode them as luminance resp. luminance+alpha and the HDR range is basically FP16, I think that is the same range as BPTC.

1 Like

ASTC can encode one- and two-channel images, but you have to encode them as luminance resp. luminance+alpha

I see that the format says that it can do that. But the extension doesn’t have R and RG versions, like RGTC. So do you just specify more components than you actually use in OpenGL, or what?

By the way, this video explains ASTC very well, and why it would (in theory) be better than other formats:

It has lots of interesting graphs!

Compressed 1/2 channels is one of the reasons I like this one.

1 Like

The color endpoint mode is stored per block, and there are L, LA, RGB, and RGBA modes. As color endpoint modes can be mixed within the same texture, the whole texture is treated as RGBA. If a block stores only luminance, or luminance plus alpha, then those values get expanded to RGBA values the usual way.

Most relevant slides from the video:

The last slide was missing in the video (3D HDR), so I added it as it was described in the commentary.
I don’t think NV VTC is available in HDR format, so I removed the reference (please correct me if I’m wrong).

Quality comparison: