ASTC texture compression C library
This is a build2 package for the ARM astc-encoder
C library. It provides Adaptive Scalable Texture Compression (ASTC) encoding
and decoding via the public C API in <astcenc.h>.
Usage
To start using libastcenc in your project, add the following depends
value to your manifest, adjusting the version constraint as appropriate:
depends: libastcenc ^5.7.0
Then import the library in your buildfile:
import libs = libastcenc%lib{astcenc}
Include the public header as:
#include <astcenc.h>
Importable targets
Tests
Reviews
Builds
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-static_O3 |
| timestamp |
2026-09-11 18:42:10 UTC (01 16:34:54 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-ndebug_O3 |
| timestamp |
2026-09-11 18:41:38 UTC (01 16:35:26 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-O3 |
| timestamp |
2026-09-11 18:41:29 UTC (01 16:35:35 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14 |
| timestamp |
2026-09-11 18:41:02 UTC (01 16:36:02 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-static_O3 |
| timestamp |
2026-09-11 16:35:27 UTC (01 18:41:37 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-O3 |
| timestamp |
2026-09-11 16:34:38 UTC (01 18:42:27 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0 |
| timestamp |
2026-09-11 16:33:41 UTC (01 18:43:23 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-static_O3 |
| timestamp |
2026-09-11 15:24:18 UTC (01 19:52:46 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-O3 |
| timestamp |
2026-09-11 15:24:10 UTC (01 19:52:54 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++ |
| timestamp |
2026-09-11 15:23:33 UTC (01 19:53:31 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-static_O3 |
| timestamp |
2026-09-11 15:22:06 UTC (01 19:54:58 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-O3 |
| timestamp |
2026-09-11 15:22:04 UTC (01 19:55:00 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18 |
| timestamp |
2026-09-11 15:21:28 UTC (01 19:55:36 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-static_O3 |
| timestamp |
2026-09-11 14:21:05 UTC (01 20:55:59 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-O3 |
| timestamp |
2026-09-11 14:19:51 UTC (01 20:57:13 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew |
| timestamp |
2026-09-11 14:18:51 UTC (01 20:58:13 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_24.04-gcc_13-bindist |
| timestamp |
2026-09-11 14:08:43 UTC (01 21:08:21 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64-static_O2 |
| timestamp |
2026-09-11 14:08:34 UTC (01 21:08:30 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_14-bindist |
| timestamp |
2026-09-11 14:08:27 UTC (01 21:08:37 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64-O2 |
| timestamp |
2026-09-11 14:08:25 UTC (01 21:08:39 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18-static_O2 |
| timestamp |
2026-09-11 14:08:20 UTC (01 21:08:44 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18-O2 |
| timestamp |
2026-09-11 14:08:12 UTC (01 21:08:52 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64 |
| timestamp |
2026-09-11 14:08:04 UTC (01 21:09:00 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18 |
| timestamp |
2026-09-11 14:07:50 UTC (01 21:09:14 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17 |
| timestamp |
2026-09-11 14:07:41 UTC (01 21:09:23 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-static_O3 |
| timestamp |
2026-09-11 14:07:29 UTC (01 21:09:36 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin22.5.0 |
| tgt config |
macos_13-clang_15.0 |
| timestamp |
2026-09-11 14:07:20 UTC (01 21:09:44 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-O3 |
| timestamp |
2026-09-11 14:07:20 UTC (01 21:09:44 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-ndebug_O3 |
| timestamp |
2026-09-11 14:07:07 UTC (01 21:09:57 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_15-O3 |
| timestamp |
2026-09-11 14:06:56 UTC (01 21:10:08 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_44-gcc_16-bindist |
| timestamp |
2026-09-11 14:06:54 UTC (01 21:10:10 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19-static_O3 |
| timestamp |
2026-09-11 14:06:44 UTC (01 21:10:20 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19-O3 |
| timestamp |
2026-09-11 14:06:33 UTC (01 21:10:31 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_43-gcc_15-bindist |
| timestamp |
2026-09-11 14:06:24 UTC (01 21:10:40 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16 |
| timestamp |
2026-09-11 14:06:21 UTC (01 21:10:43 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_15 |
| timestamp |
2026-09-11 14:06:12 UTC (01 21:10:52 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19 |
| timestamp |
2026-09-11 14:06:02 UTC (01 21:11:02 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd14.1 |
| tgt config |
freebsd_14-clang_18 |
| timestamp |
2026-09-11 14:05:47 UTC (01 21:11:18 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++-static_O3 |
| timestamp |
2026-09-11 12:36:14 UTC (01 22:40:50 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22-static_O3 |
| timestamp |
2026-09-11 12:35:35 UTC (01 22:41:29 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++-O3 |
| timestamp |
2026-09-11 12:35:34 UTC (01 22:41:30 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++ |
| timestamp |
2026-09-11 12:35:32 UTC (01 22:41:32 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22 |
| timestamp |
2026-09-11 12:34:54 UTC (01 22:42:11 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22-O3 |
| timestamp |
2026-09-11 12:34:53 UTC (01 22:42:11 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_21_libc++ |
| timestamp |
2026-09-11 11:54:22 UTC (01 23:22:42 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_21 |
| timestamp |
2026-09-11 11:54:17 UTC (01 23:22:47 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18-static_O2 |
| timestamp |
2026-09-11 11:50:08 UTC (01 23:26:56 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18-O2 |
| timestamp |
2026-09-11 11:49:52 UTC (01 23:27:12 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18 |
| timestamp |
2026-09-11 11:48:28 UTC (01 23:28:36 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_26.04-gcc_15-bindist |
| timestamp |
2026-09-11 10:10:13 UTC (02 01:06:51 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_13 |
| timestamp |
2026-09-11 10:05:05 UTC (02 01:11:59 days ago) |
| result |
success | log | rebuild |
Changes
5.x series change log
This page summarizes the major functional and performance changes in each
release of the 5.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.
5.7.0
Status: Released August 2026.
The 5.7.0 release is a minor maintenance release.
- Command line tool updates:
- Bug fix: Avoid pixel count overflow when loading input PNG file.
- Bug fix: Error if payload is undersized for stated image dimensions
when loading compressed input KTX file.
- Improvement: Top-level
-help text as been rewritten to improve
clarity and consistency.
- Change: Removed
-repeats benchmarking option, because we prefer to
repeat by invoking the command line multiple times. This gives performance
results closer to what a real user sees.
- Change: Removed
-dimage diagnostic images generation option from
normal builds. Now only available for builds configured with
ASTCENC_DIAGNOSTICS=ON.
5.6.0
Status: Released July 2026
The 5.6.0 release is a minor maintenance release.
- Codec library updates:
- Bug fix: Avoid undefined behavior caused by passing floating point
values outside of the [0.0, 1.0] range as input data for a UNORM color
channel.
- Bug fix: Avoid undefined behavior caused by unaligned access in SSE,
AVX2, and NEON SIMD library implementations.
- Command line tool updates:
- Bug fix: Fixed incorrect plane stride when writing an uncompressed 3D
LDR image to a DDS container.
- Bug fix: Fixed potential integer overflow when storing very large
uncompressed images to a
dds or .ktx output image format.
- Bug fix: Fixed missing initialization of the
reserved2 field in the
DDS file header when writing uncompressed .dds output images.
- Bug fix: Fixed typos and grammar issues in the command line
-help
text.
5.5.0
Status: Released June 2026
The 5.5.0 release is a minor maintenance release, fixing minor functional
issues and improving robustness when processing invalid images.
- Codec library updates:
- Bug fix: Correct
vfloat8 NaN inequality comparisons for AVX2 builds,
so that decompressing an invalid encoding returns the correct max magenta
error color for UNORM output formats instead of black.
- Bug fix: Add overflow detection so that the API returns errors for
cases when input image size would result in integer overflow in
calculations of total texel count, total block count, or compressed image
byte size.
- Bug fix: Fix bad offset calculation in
compute_averages() when
using 3D block sizes.
- Bug fix: Add missing low-clamp when storing decompressed HDR data into
a UNORM8 image. Prior to this fix, output colors would be incorrect if a
HDR void-extent block contained a negative FP16 constant color component.
- Improvement: Return standard error color when decompression requires an
unavailable partitioning when using an
ASTCENC_FLG_SELF_DECOMPRESS_ONLY
context. Note that this is still not allowed API usage and may trigger
asserts in a debug build.
- Command line tool updates:
- Update: Update stb_image to v2.30.
- Update: Update Wuffs to v0.3.4.
- Update: Update TinyEXR to v1.0.13.
- Bug fix: Use C++ RAII to manage resource lifetime, removing resource
leaks when an error condition is encountered.
- Bug fix: Report errors for
.astc, .dds, and .ktx input image
sizes that would result in integer overflow in calculations of total block
count or data size.
- Bug fix: Avoid undefined behavior on NaN to int conversion triggered by
atan2() calls when both inputs are zero.
- Bug fix: Avoid undefined behavior on left shift of negative integer,
that is triggered for some HDR encodings in
hdr_alpha_unpack().
- Bug fix: Redirect error logging for failed
.dds and .ktx input
image loading to stderr, and improve message consistency.
5.4.0
Status: Released May 2026
The 5.4.0 release is a minor feature release.
This release includes changes to the public interface in the astcenc.h
header. We always recommend rebuilding your client-side code using the
header from the same release to avoid compatibility issues.
- General:
- Improvement: The interface header
astcenc.h is now C compliant to
make it usable from C programs.
- Improvement: Contexts using the same configuration can now share
read-only data tables. This can significantly reduce the amount of memory
needed for applications that parallelize by processing multiple images
in parallel instead of slicing a single image in parallel.
- Improvement: Decompressor (
astcdec) builds, which lack compression
support, now use a smaller block_size_descriptor by omitting fields that
are only needed for compression. This reduces the size of a decompressor
context by more than 10MB!
- Optimization: A SIMD backend for the RISC-V Vector extensions has been
added, and is auto-selected when configured with
ASTCENC_ISA_NONE and a
core with a 256-bit vector width. See Building.md for
details.
- Bug fix: Avoid using an undefined
quant_weight value if all one
partition trials return an error block.
- Bug fix: Remove remaining instances of type aliasing through unions.
- Bug fix: Avoid compiler double definition warning for
NOMINMAX when
compiling with MinGW.
- Bug fix: Avoid compiler floating point model override warning when
compiling with Clang 20.