[PATCH 0/10] Add a mechanism for nested compositors to use subsurfaces without blitting

Neil Roberts neil at linux.intel.com
Tue Sep 10 06:45:24 PDT 2013

I wrote:
> • It seems to cause the nested-client to cycle between three buffers
> while rendering whereas previously it would only use two. I may have
> messed something up with the ordering between the frame callbacks and
> the buffer release events but I'm not sure yet.

I think I got to the bottom of why this is happening. The buffers
created in Mesa are created via a request on the wl_drm object. That
means they will use the wl_drm object as a proxy factory and they will
end up using Mesa's internal event queue. That was causing the buffer
release event to be handled only when control is given back to Mesa in
eglSwapBuffers which happens after the nested compositor has seen the
frame callback event and passed it on to the client. Therefore the
client would start drawing before it has seen the buffer release event
so it would end up needing a third buffer.

My proposed solution to this is to just reset the buffer's event queue
back to the main event queue after creating it. It doesn't look like
there's a way to do that in the current Wayland client API so I'm
attaching a patch to add a getter for the default event queue. I am also
attaching a second version of the Mesa patch to take advantage of that.

- Neil
Intel Corporation (UK) Limited
Registered No. 1134945 (England)
Registered Office: Pipers Way, Swindon SN3 1RJ
VAT No: 860 2173 47

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

More information about the wayland-devel mailing list