0.1.2 - 2026-09-24
Added
- Controls to disable existing Vulkan GPU timestamp instrumentation or sample complete staged acquire-to-release intervals without changing synchronization. Existing consumers keep staged-frame timing enabled by default.
- Vulkan timing status notifications and
ImportedImageSync::has_gpu_timing_resourcesfor diagnostics. - Driver-free regression tests for timing policies, release-fence gating, sync-owner reuse, and backward compatibility with existing Vulkan consumers.
Fixed
- Fixed macOS compilation of video frame helpers while preserving 64-bit DMA-BUF allocation sizes and inode identities on Linux, including ARMv7.
- Made descriptor, EGL, and dispatcher lifecycle tests portable to macOS.
- Prevented out-of-memory errors during Vulkan timestamp query-pool allocation
from failing synchronization setup. Query readback now omits timing samples
instead of failing release-completion polling on
NOT_READYor out-of-memory errors. - Disabled Vulkan timestamp instrumentation for non-finite or non-positive timestamp periods and timestamp valid-bit counts greater than 64.
- Correctly mark the Vulkan context as device-lost and return a device-loss error
when timestamp query-pool allocation or readback reports
ERROR_DEVICE_LOST.
0.1.1 - 2026-09-05
Fixed
- Fixed ARMv7 compilation of DMA-BUF probing by using 64-bit stat and seek APIs for allocation sizes, file positions, and inode identities.
- Added ARMv7 compile and Clippy checks to the release gate.
0.1.0 - 2026-09-03
First public release.
Added
- Framework-neutral Elixir and Rust frame formats for owned binary video and Linux DMA-BUF video.
- Support for RGBA8888, RGB888, Gray8, Gray2, BW1, and DMA-BUF pixel formats.
- Explicit visible geometry, colorimetry, alpha, DRM modifier, and acquire-fence metadata.
- Validation for frame, format, binary-plane, and DMA-BUF descriptors.
- Bounded leases and consumer helpers for safe ownership transfer and release.
- Optional Rustler, EGL, and Vulkan integration APIs.
Limitations
- DMA-BUF file descriptors are process-local and cannot be sent directly to another Erlang node.
- Metal and Direct3D adapters are not included.