Ghostboard pixel Skip to content

Explicit Sync in Wayland is The Answer to NVIDIA Linux Problems!

Time to say goodbye to NVIDIA Wayland issues? Sounds like it!

Wayland on NVIDIA GPUs is something of a pain point for the Linux community that seems to haunt some, while others seem to be oblivious to it. You may already know what I am talking about.

Ever since the growth in Wayland's adoption, the number of random crashes, bugs, incompatibility, etc. have also increased with many users switching back to the older X11 windowing system to get a stable experience.

Many things have been tried to make NVIDIA GPUs perform better with Wayland, but, one of them stands out the most, and is closer to being implemented than ever before.

Explicit Sync: What to Expect?

a screenshot of the explicit sync protocol merge request on wayland gitlab repo

Called “linux-drm-syncobj-v1”, it is a new protocol for Wayland worked on by Simon Ser and a few other contributors that aim to introduce an explicit sync protocol based on DRM synchronization objects for Linux.

If it went over your head, then allow me to simplify it for you:

With this protocol in place, an application signals when rendering is complete to components such as the driver, kernel, compositors, etc. so that they don't misbehave or perform any accidental synchronizations.

Interestingly, this is not something new that just appeared out of thin air. There used to be a predecessor to this explicit sync protocol that had to be ditched thanks to a limitation.

In any case, for you, the end user, you can expect a flicker-free experience in Wayland sessions when using an NVIDIA GPU, the multi-monitor experience should also be better, and the frame pacing issues should also be gone with this.

This protocol also avoids limitations found in the implicit sync protocol, which is widely used in open-source drivers, that enables AMD and Intel GPUs to function without the above-mentioned issues thanks to a few clever workarounds. But, NVIDIA never added support for that.

Even though there's a slight bump in performance, Xaver Hugl of KDE adds that:

Do keep in mind though that these performance improvements are minor. While there may be some special cases where implicit sync between app and compositor was the bottleneck before, you’re unlikely to notice the individual difference between implicit and explicit sync at all.

That begs the following question...

When will these changes arrive?

Soon is what I will say. You see, the “linux-drm-syncobj-v1” protocol has already been merged into Wayland a few weeks back, and was introduced as a staging protocol with wayland-protocols 1.34.

As for the others, this protocol has already been merged into Mesa, GNOME's Mutter, and even to NVIDIA's EGL External Platform library, EGL-Wayland with a beta version planned on May 15 for the 555 driver release which would include this protocol.

On the other hand, in KDE KWin's case, it is still waiting to be merged. Though, I would not worry, as it's only a matter of time before it is.

💬 What do you think of this change? Better late than never?

More from It's FOSS...