Collabora have shared a great progress update on getting Wine working directly with Wayland, which is going to eventually replace X11 on most Linux distributions.
Notes for newbies: Wine is a translation layer that can run Windows games and applications on Linux, Wine is a huge part of what makes Steam Play Proton do anything. Wayland is the next-generation replacement for the ancient and now mostly unmaintained X server on Linux.
Originally announced in late 2020, Collabora has been developing a Wayland driver for Wine. The idea is to hopefully remove the need for XWayland and remove one more layer between things causing more complexity and likely performance hits. Collabora engineer Alexandros Frantzis has now put up an RFC (request for comments) onto the Wine development mailing list, so they can hopefully find the best way on progressing it and getting it upstreamed directly into the Wine project.
The focus of this update is to support a number of new features that are useful for applications and games, and which have also been considered potential integration pain points for the Wayland driver. These are copy/paste, drag-and-drop and support for changing the display mode.
Copy/paste support works well in both directions (native Wayland apps <=> Wine apps) with many common formats already supported. Drag and drop works in the direction of native Wayland apps to Wine apps for many common formats.
Implementing the display mode change is particularly interesting since Wayland doesn't allow applications to directly change the mode in the display hardware. However a similar effect can be achieved for particular surfaces by scaling in the compositor (typically using the GPU). In case of a Wine mode that doesn't match the current compositor mode, the driver instructs the compositor to scale the window contents so that they appear as if the hardware display mode had been changed while respecting the aspect ratio.
You can see more in a video demonstration below:
Direct Link
Quoting: GuestAllow me to ask why OpenGL should be replaced in the first place?Because Vulkan is a well proven better API than OpenGL (while being open source too)
Do you mean the API as a whole or more like Desktop Environments running on Vulkan instead?
Less problems with the implementation (because it has less tolerance to errors) and faster than OpenGL (when done right), so it's the natural successor.
The problem is currently harder (more complex) to implement than openGL (as I heard) and compatibility with Legacy hardware with no Vulkan support.
Quoting: GuestDesktop Environments running on Vulkan instead? The later would be super cool indeed
Don't quote me on this because I'm not sure if this information is accurate, but I heard that an entirely Vulkan based Wayland compositor could solve the "GBM x EGL Streams" problem, making Wayland work well with Intel / AMD / NVIDIA.
All those things in my list will happen naturally, I just wish this was faster :)
Quoting: GuestAllow me to ask why OpenGL should be replaced in the first place?
Do you mean the API as a whole or more like Desktop Environments running on Vulkan instead? The later would be super cool indeed.
Probably compositors like KWin switching to Vulkan. Not that OpenGL should disappear - you still need it to support a ton of games and etc.
Last edited by Shmerl on 21 February 2021 at 2:02 am UTC
Quote... now mostly unmaintained X server on Linux.This is not quite the right wording. Xorg on Linux is only maintained rather than being actively developed. In other words, it's in maintenance mode. So perhaps it could be 'mostly no longer developed' or 'mostly stagnant.'
Edit: I had suggested 'mostly undeveloped' before, but that could be interpreted as meaning 'mostly unfinished,' which would not be accurate.
Last edited by CFWhitman on 21 February 2021 at 1:45 pm UTC
Quoting: ShmerlNice progress. Looking forward to switching to the Wayland session when KWin / KWinFT will also add adaptive sync support. That is a bigger deal breaker than the need to use XWayland for Wine currently.VRR is planned for 5.22 https://invent.kde.org/plasma/kwin/-/merge_requests/718
See more from me