Find a file
Tom Englund f6fddf9954 atomic: use sequence_handler and drmEventcontext version 4
use CRTC Sequence handler if we can, poll the current sequence
drmCrtcGetSequence and if it succeeds, try queue the next one if we can
or fallback to the old pageflip handler.

by using crtc sequences we are allowed a much higher resolution
timestamp and get much more correct timestamps for our presentation
events that is not rounded away.

will reduce jitters and drifting in timestamps and get us lower latencies.
2026-02-08 12:25:11 +01:00
.github/workflows CI/Nix: add cache-nix-action 2025-06-20 01:29:45 +03:00
data drm: implement edid parsing 2024-07-02 13:15:56 +02:00
docs drm: add AQ_NO_MODIFIERS to try to mitigate hardware limitations (#77) 2024-09-06 01:00:39 +01:00
include/aquamarine atomic: use sequence_handler and drmEventcontext version 4 2026-02-08 12:25:11 +01:00
nix nix: make mold optional 2025-08-22 10:49:22 +03:00
protocols Wayland: Initial progress 2024-06-18 18:45:05 +02:00
src atomic: use sequence_handler and drmEventcontext version 4 2026-02-08 12:25:11 +01:00
tests drm: Avoid unnecessary modeset (fixed) (#184) 2025-07-07 16:19:52 +02:00
.clang-format core: Initial stuff 2024-06-18 11:38:26 +02:00
.clang-tidy clang-tidy: fix some errors (#166) 2025-04-22 23:23:23 +02:00
.gitignore Wayland: Initial progress 2024-06-18 18:45:05 +02:00
aquamarine.pc.in core: Initial stuff 2024-06-18 11:38:26 +02:00
CMakeLists.txt version: bump to 0.10.0 2025-11-23 18:33:09 +00:00
flake.lock backend: implement hyprutils' cli::logger 2025-11-23 16:57:12 +00:00
flake.nix nix: use gcc15 (#176) 2025-06-05 21:28:30 +01:00
LICENSE Initial commit 2024-06-18 10:56:51 +02:00
README.md README: update state 2024-07-01 20:42:25 +02:00
VERSION version: bump to 0.10.0 2025-11-23 18:33:09 +00:00

Aquamarine

Aquamarine is a very light linux rendering backend library. It provides basic abstractions for an application to render on a Wayland session (in a window) or a native DRM session.

It is agnostic of the rendering API (Vulkan/OpenGL) and designed to be lightweight, performant, and minimal.

Aquamarine provides no bindings for other languages. It is C++-only.

Stability

Aquamarine depends on the ABI stability of the stdlib implementation of your compiler. Sover bumps will be done only for aquamarine ABI breaks, not stdlib.

Building

cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`

TODOs

  • Wayland backend
  • DRM backend (DRM / KMS / libinput)
  • Virtual backend (aka. Headless)
  • Hardware plane support