Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Core: Move to aquamarine #6608

Merged
merged 113 commits into from
Jul 21, 2024
Merged

Core: Move to aquamarine #6608

merged 113 commits into from
Jul 21, 2024

Conversation

vaxerski
Copy link
Member

@vaxerski vaxerski commented Jun 20, 2024

This is for now very basic work to get Hyprland to move from wlroots to aquamarine https://github.com/hyprwm/aquamarine for the backend.

Very, very wip.

After this MR, we'll no longer be based on wlroots, at all.

Aquamarine Support lacking

  • DRM sessions
  • Headless
  • Session
  • Libinput
    • tablet
    • touch
    • gesture
    • switch

Features disabled and not re-implemented

  • Input devices
  • Gamma ctrl
  • hyprctl output
  • VT switching (session)
  • Direct Scanout
  • Screencopy
  • Cursors
  • hyprctl switchxkblayout
  • Keyboard LED control
  • vt (drm sessions also are broken)
  • edid

DRM support lacking (aq / hl)

  • Atomic modesetting
  • multigpu
  • gamma
  • planes (cursor)
  • vt restore
  • adaptive sync
  • lease

Bugs (aq/hl)

  • Wayland session struggles to update
  • DMABUFs are broken
  • dt issues as usual
  • modifiers on drm are wonky
  • drm graphical glitches
  • coming back from vt is broken
  • direct scanout looks fucked
  • Atomic modesetting stutters... I think?
  • DRM sessions use 100% of a core
  • CPU usage is kinda high on drm
  • Nvidia bugs and glitches from the vrr fix
  • Input devices die after replug
  • Core: Move to aquamarine #6608 (comment)
  • multigpu graphical glitches issues
  • hotplug issues

Misc

  • We still link wlroots for a few utilities. Stop doing that.

Notes

  • requires (always) hyprwayland-scanner git. I'll bump the ver once we're close to being done with this MR.

@vaxerski
Copy link
Member Author

as per @fufexan's request I'll stop force pushing

@vaxerski
Copy link
Member Author

vaxerski commented Jun 25, 2024

if one hates themselves they can already technically test-run this. Please do note the missing stuff and/or bugs above. If you find a bug/crash not mentioned above, do report, I'll add it to the list or fix on the spot

@nonetrix
Copy link

I do indeed hate myself

@nonetrix
Copy link

Struggling to build Aquamarine because I am dumb, it isn't included as sub module or whatever. I assumed I just had to compile it first and install it as a .so or header or whatever the heck

[noah@archlinux aquamarine]$ cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
[  4%] Generating /home/noah/Documents/aquamarine/protocols/xdg-shell.cpp, /home/noah/Documents/aquamarine/protocols/xdg-shell.hpp
[  9%] Generating /home/noah/Documents/aquamarine/protocols/wayland.cpp, /home/noah/Documents/aquamarine/protocols/wayland.hpp
[ 13%] Generating /home/noah/Documents/aquamarine/protocols/linux-dmabuf-v1.cpp, /home/noah/Documents/aquamarine/protocols/linux-dmabuf-v1.hpp
Too many args or unknown arg /home/noah/Documents/aquamarine/protocols/
Too many args or unknown arg /home/noah/Documents/aquamarine/protocols/
make[2]: *** [CMakeFiles/aquamarine.dir/build.make:81: /home/noah/Documents/aquamarine/protocols/xdg-shell.cpp] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/aquamarine.dir/build.make:74: /home/noah/Documents/aquamarine/protocols/wayland.cpp] Error 1
Too many args or unknown arg /home/noah/Documents/aquamarine/protocols/
make[2]: *** [CMakeFiles/aquamarine.dir/build.make:88: /home/noah/Documents/aquamarine/protocols/linux-dmabuf-v1.cpp] Error 1
make[1]: *** [CMakeFiles/Makefile2:841: CMakeFiles/aquamarine.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

@Honkazel
Copy link
Contributor

Struggling to build Aquamarine because I am dumb, it isn't included as sub module or whatever. I assumed I just had to compile it first and install it as a .so or header or whatever the heck

[noah@archlinux aquamarine]$ cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
[  4%] Generating /home/noah/Documents/aquamarine/protocols/xdg-shell.cpp, /home/noah/Documents/aquamarine/protocols/xdg-shell.hpp
[  9%] Generating /home/noah/Documents/aquamarine/protocols/wayland.cpp, /home/noah/Documents/aquamarine/protocols/wayland.hpp
[ 13%] Generating /home/noah/Documents/aquamarine/protocols/linux-dmabuf-v1.cpp, /home/noah/Documents/aquamarine/protocols/linux-dmabuf-v1.hpp
Too many args or unknown arg /home/noah/Documents/aquamarine/protocols/
Too many args or unknown arg /home/noah/Documents/aquamarine/protocols/
make[2]: *** [CMakeFiles/aquamarine.dir/build.make:81: /home/noah/Documents/aquamarine/protocols/xdg-shell.cpp] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/aquamarine.dir/build.make:74: /home/noah/Documents/aquamarine/protocols/wayland.cpp] Error 1
Too many args or unknown arg /home/noah/Documents/aquamarine/protocols/
make[2]: *** [CMakeFiles/aquamarine.dir/build.make:88: /home/noah/Documents/aquamarine/protocols/linux-dmabuf-v1.cpp] Error 1
make[1]: *** [CMakeFiles/Makefile2:841: CMakeFiles/aquamarine.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Strange, it built without fails in my case
And... i guess, hyprwayland-scanner?

@nonetrix
Copy link

nonetrix commented Jun 25, 2024

I think my issue was I didn't think to compile hyprwayland-scanner 🥲

I am a bit of a newb should have thought about that roughly knowing what it is, seems to have built now

@vaxerski
Copy link
Member Author

use hyprcursor and life is good

XCursor is a mess

@rustdevbtw
Copy link

rustdevbtw commented Jul 21, 2024

use hyprcursor and life is good

XCursor is a mess

That's true. In fact, that cursor state bug (and all the other cursor bugs I found so far) is gone with hyprcursor :)

The animation is smooth, everything works quite well, everywhere.

@Honkazel
Copy link
Contributor

image
image
It happens... again

@ikalco
Copy link
Contributor

ikalco commented Jul 21, 2024

image image It happens... again

if thats mpv with --vo=dmabuf-wayland then its a bug on their side
mpv-player/mpv#14544

@Honkazel
Copy link
Contributor

image image It happens... again

if thats mpv with --vo=dmabuf-wayland then its a bug on their side mpv-player/mpv#14544

Okay, thanks

@Honkazel
Copy link
Contributor

Honkazel commented Jul 21, 2024

@ikalco Also... why p010 is converted to rgb format in aq branch, but it doesn't with sway?
Or it's the same reason?

@leiserfg
Copy link
Contributor

MPV dmabuff is broken, avoid using it for non SDR video.

@vaxerski
Copy link
Member Author

damn what a great day today to merge a MR

@vaxerski
Copy link
Member Author

God bless, thanks a lot everyone! With this, we're now independent and the rewrites have come to a close. For now, at least :)

@vaxerski vaxerski merged commit 016da23 into main Jul 21, 2024
20 checks passed
@Fxzzi
Copy link
Contributor

Fxzzi commented Jul 21, 2024

Unable to wake from suspend with aq merge. PC wakes to a black screen. Can change to tty2 and pkill Hyprland tho

@MarkusTieger
Copy link

Maybe a little late, but what is the advantage of aquamarine over wlroots?

@vaxerski
Copy link
Member Author

@phonetic112 chromium is fixed on main

@vaxerski
Copy link
Member Author

vaxerski commented Jul 21, 2024

@Fxzzi @izmyname instead of posting here, open issues.

@Fxzzi attach a trace log to it (AQ_TRACE=1 and HYPRLAND_TRACE=1)

@Piecuuu
Copy link

Piecuuu commented Jul 24, 2024

But.... Will it support wscons????

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

wlsunset color temp get reset by hyprland when turning off & on the display for the first time