This page summarizes the major functional and performance changes in each release of the 3.x series.
All performance data on this page is measured on an Intel Core i5-9600K clocked at 4.2 GHz, running astcenc using AVX2 and 6 threads.
Status: April 2022
The 3.7 release contains another round of performance optimizations, including significant improvements to the command line front-end (faster PNG loader) and the arm64 build of the codec (faster NEON implementation).
-DNO_INVARIANCE=ON for the CMake configuration. This improves performance by around 2%.select() so that it matches the default NEON behavior (bitwise select), rather than the default x86-64 behavior (lane select on MSB). Specialization select_msb() added for the one case we want to select on a sign-bit, where NEON needs a different implementation. This provides a significant (>25%) performance uplift on NEON implementations.Key for charts:
Relative performance vs 3.5 release:
Status: April 2022
The 3.6 release contains another round of performance optimizations.
There are no interface changes in this release, but in general the API is not designed to be binary compatible across versions. We always recommend rebuilding your client-side code using the updated astcenc.h header.
SELF_DECOMPRESS_ONLY flag set. The flag therefore no longer improves compression performance, but still reduces context creation time and context data table memory footprint.-fastest configuration has been improved.Key for charts:
Relative performance vs 3.5 release:
Status: March 2022
The 3.5 release contains another round of performance optimizations.
There are no interface changes in this release, but in general the API is not designed to be binary compatible across versions. We always recommend rebuilding your client-side code using the updated astcenc.h header.
SELF_DECOMPRESS_ONLY mode store compacted partition tables, which significantly improves both context create time and runtime performance.Key for charts:
Relative performance vs 3.4 release:
Status: February 2022
The 3.4 release introduces another round of optimizations, removing a number of power-user configuration options to simplify the core compressor data path.
Reminder for users of the library interface - the API is not designed to be binary compatible across versions, and this release is not compatible with earlier releases. Please update and rebuild your client-side code using the updated astcenc.h header.
-DBLOCK_MAX_TEXELS=<count> to allow a compressor to support a subset of block sizes. This can reduce binary size and runtime memory footprint, and improve performance.-v and -va options to set a per-texel error weight function are no longer supported.-b option to set a per-texel error weight boost for block border texels is no longer supported.-a option to set a per-texel error weight based on texel alpha value is no longer supported as an error weighting tool, but is still supported for providing sprite-sheet RDO.-mask option to set an error metric for mask map textures is still supported, but is currently a no-op in the compressor.-perceptual option to set a perceptual error metric is still supported, but is currently a no-op in the compressor for mask map and normal map textures.Key for charts:
Relative performance vs 3.3 release:
Status: November 2021
The 3.3 release improves image quality for normal maps, and two component textures. Normal maps are expected to compress 25% slower than the 3.2 release, although it should be noted that they are still faster to compress in 3.3 than when using the 2.5 series. This release also fixes one reported stability issue.
-cw on the command line.Status: August 2021
The 3.2 release is a bugfix release; no significant image quality or performance differences are expected.
Status: July 2021
The 3.1 release gives another performance boost, typically between 5 and 20% faster than the 3.0 release, as well as further incremental improvements to image quality. A number of build system improvements make astcenc easier and faster to integrate into other projects as a library, including support for building universal binaries on macOS. Full change list is shown below.
Reminder for users of the library interface - the API is not designed to be binary compatible across versions, and this release is not compatible with earlier releases. Please update and rebuild your client-side code using the updated astcenc.h header.
-perceptual operation. The current implementation is simple, weighting color channel errors by their contribution to perceived luminance. This mimics the behavior of the human visual system, which is most sensitive to green, then red, then blue.-lowweightmodelimit command line option.x86_64 and arm64 target support.-DCLI=OFF during the CMake configure step../Utils/Example/ directory.ASTCENC_FLG_USE_PERCEPTUAL works for color data.tune_low_weight_count_limit added.Key for charts:
Relative performance vs 3.0 release:
Status: June 2021
The 3.0 release is the first in a series of updates to the compressor that are making more radical changes than we felt we could make with the 2.x series. The primary goals of the 3.x series are to keep the image quality ~static or better compared to the 2.5 release, but continue to improve performance.
Reminder for users of the library interface - the API is not designed to be binary compatible across versions, and this release is not compatible with earlier releases. Please update and rebuild your client-side code using the updated astcenc.h header.
astcenc_compress_image() and for astcenc_decompress_image() now accept swizzle structures by const pointer, instead of pass-by-value.astcenc_compress_reset() and the astcenc_decompress_reset() functions between images is no longer required if the context was created for use by a single thread.tune_partition_early_out_limit config option has been removed, and replaced with two new options tune_2_partition_early_out_limit_factor and tune_3_partition_early_out_limit_factor. See command line help for more detailed documentation.tune_two_plane_early_out_limit has been renamed totune_2_plane_early_out_limit_correlation. See command line help for more detailed documentation.Key for charts:
Relative performance vs 2.5 release:
Copyright © 2021-2022, Arm Limited and contributors. All rights reserved.