mutter/src
Aaron Plattner 9df6cda3e3 compositor: Fix GL_EXT_x11_sync_object race condition
The compositor maintains a ring of shared fences with the X server in order to
properly synchronize rendering between the X server and the compositor's GPU
channel.  When all of the fences have been used, the compositor needs to reset
one so that it can be reused.  It does this by first waiting on the CPU for the
fence to become triggered, and then sending a request to the X server to reset
the fence.

If the compositor's GPU channel is busy processing other work (e.g. the desktop
switcher animation), then the X server may process the reset request before the
GPU has consumed the fence.  This causes the GPU channel to hang.

Fix the problem by having the compositor's GPU channel trigger its own fence
after waiting for the X server's fence.  Wait for that fence on the CPU before
sending the reset request to the X server.  This ensures that the GPU has
consumed the X11 fence before the server resets it.

Signed-off-by: Aaron Plattner <aplattner@nvidia.com>

https://bugzilla.gnome.org/show_bug.cgi?id=728464
2015-08-07 17:27:42 +02:00
..
backends compositor: Add support for GL_EXT_x11_sync_object 2015-08-07 17:27:42 +02:00
compositor compositor: Fix GL_EXT_x11_sync_object race condition 2015-08-07 17:27:42 +02:00
core window: Remove fullscreen_after_placement special case 2015-07-30 15:27:01 +02:00
meta Put G_GNUC_CONST at the end of the declarations 2015-07-06 00:29:23 -07:00
tests Remove a few more guards for frees 2014-12-28 19:51:22 -08:00
ui frames: handle META_FRAME_CONTROL_NONE on left click 2015-07-15 07:45:02 -05:00
wayland wayland-surface: Send out an error for a popup with an invalid parent 2015-08-05 13:50:09 +02:00
x11 group: Convert code to XCB to prevent errors 2015-08-05 13:39:23 -07:00
.cvsignore
libmutter.pc.in meta: Add generated meta-version.h 2014-06-05 14:05:16 +02:00
Makefile-tests.am x11: Remove async-getprop 2015-06-17 18:08:11 -07:00
Makefile.am compositor: Add support for GL_EXT_x11_sync_object 2015-08-07 17:27:42 +02:00
meta-enum-types.c.in Install enum types 2015-07-05 22:01:59 -07:00
meta-enum-types.h.in Install enum types 2015-07-05 22:01:59 -07:00
org.freedesktop.login1.xml launcher: Replace mutter-launch with logind integration 2014-05-19 15:09:23 -04:00
org.gnome.Mutter.DisplayConfig.xml Rename the DBus interface files 2014-03-31 23:44:46 -04:00
org.gnome.Mutter.IdleMonitor.xml Rename the DBus interface files 2014-03-31 23:44:46 -04:00
stamp-mutter-enum-types.h Install enum types 2015-07-05 22:01:59 -07:00