Find a file
Tom Englund dfe9601119
allocator: workaround linear blitting (#174)
so nvidia as main gpu cant create linear modifiers and will give us a null
bo if forced to linear, meanwhile without linear modifiers blitting
fallbacks to cpu copying that is slow. so force linear mods, try create
bo and if all else fails try again without. this way intel/amd as main
and nvidia as dgpu will create linears and if nvidia is main it will be
using cpu copying and still work but a bit slow.

hide all of this behind AQ_FORCE_LINEAR_BLIT env var. since its a bit
hackish.
2025-07-09 14:40:09 +02: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 core: use -Wpedantic and fix warnings (#187) 2025-07-08 12:25:39 +02:00
nix nix: mesa -> libgbm 2025-03-14 08:35:25 +02:00
protocols Wayland: Initial progress 2024-06-18 18:45:05 +02:00
src allocator: workaround linear blitting (#174) 2025-07-09 14:40:09 +02: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 core: use -Wpedantic and fix warnings (#187) 2025-07-08 12:25:39 +02:00
flake.lock core: use -Wpedantic and fix warnings (#187) 2025-07-08 12:25:39 +02: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.9.1 2025-07-07 17:58:11 +02: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