Hi everyone, below you will find the updates from the Desktop team from the last week.
If you’re interested in discussing a topic please start a thread in the Desktop area of the Community Hub (this site).
We also have our weekly meeting on IRC. We meet on Tuesday at 13:30 UTC in #ubuntu-desktop on Freenode. There will be an “Any Other Business” section at the end where you are welcome to raise topics. These topics might be discussed during the meeting, or afterwards depending on the time, depth of conversation, topic and so on.
Spent a day investigating panel menu rendering problems which only seem to occur with fractional scaling + ClutterOffscreenEffect. This is somewhat my responsibility since I touched ClutterOffscreenEffect last and seem to know that area best.
Found it is caused by using Xrandr because no compositor can (yet) flip an image to the kernel that’s a different resolution from the monitor.
Relearned how to build and debug Xorg.
Found that the present extension is already asking the modesetting driver to sync to vblank. Just that the modesetting driver’s preferred vsync method is inaccurate in Xrandr scaled configurations. It’s the right vsync frequency but out of phase after the time glamor takes to render to the scaled-down buffer using single buffering. Hence tearing. So the root cause of the problem is that it’s using single buffered scanouts when scaling. It should be double buffered.
Also found that the i915 kernel driver doesn’t yet adequately support the KMS DRM “scaling mode” property, which would allow us to move scaling into the kernel and avoid having to do it manually with GL and would avoid tearing.
The backport of 1.0.3 to bionic was held up by test failures on Bionic.
The underlying cause of the crash seems to be a stray FUSE forget() call on the root inode of the document portal file system, not matched by any operation that would increase the lookup count. There was no protection against this in the xdg-document-portal source code, so resulted in a reference count under-run.
I put together xdg-desktop-portal PR #310 to instead print a warning when it detects the under-run. Ken added this patch to the Ubuntu package, so hopefully it will be accepted into proposed soon and move forward.
I haven’t been successful in determining why we are getting that stray forget() call though: upgrading the user space libfuse doesn’t make a difference, and on the kernel side it looks like such a call should be paired with other operations that I’m not seeing delivered to the daemon. Maybe the existing patch is enough.
snapd branches:
The user daemon PR has tests passing with the new functionality hidden behind a feature flag. That should be enough to allow the code to be merged while there are still open questions about how it should be exposed.
The dbus activation PR implements the new YAML syntax requested. I need to check if this needs a feature flag too.
cups-filters: Got confirmation from the admin of the German state administration with 12000 SUSE boxes that my fix from last week actually solved their problem.
cups-filters: Released 1.22.3 with a fix avoiding the image filter hanging or even crashing on broken GIF input files. Fix contributed by a candidate student for this year’s GSoC.
cups-filters: List of GitHub issues got down from 26 to 18 in the last 2 weeks, with a lot of help from GSoC candidate students and students from former GSoCs.