[Mesa-dev] [Bug 86701] [regression] weston-simple-egl not running anymore inside qemu

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue May 12 23:44:31 PDT 2015


https://bugs.freedesktop.org/show_bug.cgi?id=86701

--- Comment #20 from Pekka Paalanen <ppaalanen at gmail.com> ---
(In reply to nerdopolis1 from comment #18)
> Hi. I realized that the hang happens when I hover over an icon on the
> desktop shell, and it tries to show a tooltip
> 
> Output of weston running with WAYLAND_DEBUG=server
> http://pastebin.com/0aQGBLFH

Please don't put pastebin links here, they tend go bad over time. Much better
to attach a file.

> Only weston-desktop-shell hangs. If I get another client to run before
> weston-desktop-shell hangs, that client stays running.

*sigh* I wish we had a way to differentiate between clients in
WAYLAND_DEBUG=server output... (there are several different clients interleaved
in the trace, but I expected that)

Ok, I see what happens.

The tooltip is a sub-surface (due to migration to xdg-shell). Sub-surfaces
start in synchronized mode, and the mode is never changed here. That means the
frame callback cannot trigger, until the parent wl_surface is committed.
Toytoolkit or weston-desktop-shell does not commit the parent before EGL starts
waiting for the sub-surface's frame callback, which causes the hang.

The immediate thing to investigate is whether EGL even gives the app a chance
to commit the parent wl_surface (which also is a EGLSurface when you use
cairo-egl). If the answer is yes, there is nothing wrong in Mesa, and the bug
is in toytoolkit.

Whether the answer is yes or no, this issue needs to be filed as a separate bug
against Weston's toytoolkit.

As fixing the toytoolkit is very low priority (and I would assume hardware
accelerated GL to be broken the same way), the solution for end users is: do
not configure Weston using --with-cairo=gl nor --with-cairo=glesv2; use the
default --with-cairo=image.

A quick'n'dirty fix would be to set the tooltip sub-surface to desync mode when
it's created. That should avoid the hang, but it may be arguably a wrong
solution. One must be able to use the synchronized mode even with EGL surfaces,
so making sure it can work is essential.

When filing a new bug, please copy my explanation and attach again the same
protocol dump.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150513/ca5ced3f/attachment.html>


More information about the mesa-dev mailing list