this post was submitted on 23 Nov 2023
97 points (96.2% liked)

Linux

48184 readers
1419 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
97
Wlroots 0.17.0 released (gitlab.freedesktop.org)
submitted 11 months ago* (last edited 11 months ago) by Chewy7324@discuss.tchncs.de to c/linux@lemmy.ml
 

Release highlights:

  • New protocol implementations:

    • content-type-v1 to tag surfaces with their content type (audio, video, game, etc).
    • xwayland-shell-v1 to improve XWayland reliability.
    • wp-fractional-scale-v1 to allow clients to submit buffers with a non-integer scale factor matching the output.
    • tearing-control to allow clients to opt-in for tearing page-flips.
    • security-context-v1 to identify clients running in sandboxes.
    • cursor-shape-v1 for server-side cursor themes.
  • Introduce a new output layers API to leverage KMS planes.

  • Add a new renderer API with improved design and performance. Add an API to query the time taken to render.

  • Continued work on the Vulkan renderer: add more RGB formats, add YUV buffers, add interoperability with implicit synchronization instead of blocking.

  • Add support for the new wl_surface.preferred_buffer_{scale,transform} events.

  • Improved scene-graph, including support for linux-dmabuf feedback and clipping surfaces.

  • Improved wlr_cursor which now keeps track of the current cursor image.

  • Add an implementation of the wl_shm interface, replacing libwayland's for improved reliability and performance.

  • The Wayland backend supports embedding a wlroots compositor inside an existing Wayland client.

  • wl_surface roles have been refactored.

top 13 comments
sorted by: hot top controversial new old
[–] Chewy7324@discuss.tchncs.de 16 points 11 months ago (1 children)
  • wp-fractional-scale-v1 to allow clients to submit buffers with a non-integer scale factor matching the output.

This hopefully means Sway and similar will support real fractional scaling for applications, not just the compositor fractional scaling we already have.

But I don't know much about application support. Qt and Electron might support it; GTK 4 does not, possibly in a future version).

https://wayland.app/protocols/fractional-scale-v1

  • tearing-control to allow clients to opt-in for tearing page-flips.

That's great for those who need it. Anyone with a modern display should probably just use variable refresh rate (vrr), but even today some devices don't support it. E.g. there's been 240Hz laptops without vrr.

https://wayland.app/protocols/tearing-control-v1

[–] Atemu@lemmy.ml 2 points 11 months ago (2 children)

GTK 4 does not, possibly in a future version

That would be news to me. Has GTK finally managed to switch away from using actual real hardware pixels as its base unit for measurement?

[–] Chewy7324@discuss.tchncs.de 3 points 11 months ago

I was sure I read that GTK wants to support true fractional scaling in GTK 5, but I can't find a source to it. So it was probably just speculation. As far as I understand it, it would require big changes to GTK because everything is build with integer scaling in mind.

At least GTK 4 already has support for this fractional scaling protocol.

https://www.phoronix.com/news/GTK-4.11.1

[–] independantiste@sh.itjust.works 2 points 11 months ago

At least it does not look blurry with fractional scaling enabled, which is the biggest issue IMO. The current hacky way is not ideal I agree but at least it is functional

[–] pastermil@sh.itjust.works 7 points 11 months ago (3 children)

How would wlroots relate to the compositors such as KWin & GNOME Shell?

[–] Laser@feddit.de 8 points 11 months ago* (last edited 11 months ago) (1 children)

As pointed out, they don't use it. However, there are loose plan for KWin to migrate to wlroots one day, and in fact a hostile fork exists that is exactly that (KWinFT). So a compositor can make use of wlroots to implement Wayland functionality, sway for example does exactly that, unsurprisingly since they're sister projects by the same author.

It should be noted that libwayland (mentioned in the patch notes) also exist, and wlroot actually depends on it, so I guess libwayland is like the lower level stuff while wlroots saves you some work to integrate libwayland into your compositor; the motto is "Pluggable, composable, unopinionated modules for building a Wayland compositor; or about 60,000 lines of code you were going to write anyway."

[–] ultra@feddit.ro 4 points 11 months ago (2 children)

Just a note, you said that libwayland is a higher level abstraction for libwayland.

[–] starman@programming.dev 4 points 11 months ago (1 children)

libwayland is like the lower level stuff while libwayland saves you some work to integrate libwayland

[–] LeFantome@programming.dev 3 points 11 months ago

Makes sense. You have to factor in libwayland though.

[–] Laser@feddit.de 3 points 11 months ago

Thanks, I corrected it

[–] russjr08@outpost.zeuslink.net 3 points 11 months ago (1 children)

As far as I know, it wouldn't - I do not believe KWin nor Mutter is built on top of wlroots.

[–] FarLine99@lemm.ee 2 points 11 months ago

They are not

[–] Chewy7324@discuss.tchncs.de 2 points 11 months ago

wlroots is a library that can be used to implement a compositor like KWin or mutter (GNOME). In practice wlroots is used in Sway, Hyprland, river, and more.

What wlroots-based compositors, KWin, and mutter share is that they implement a similar set of the display protocol Wayland. E.g. KWin and Sway implement the Wayland extension wlr_layer_shell