<div dir="ltr">I propose the we should change the commit behavior to having commit on the toplevel wl_surface<br>commit itself and all it's subsurfaces atomically. Commiting on subsurfaces should be a no-op.<br>That is to allow eglSwapBuffers to be used in subsurfaces, should you manage to get it to be non-blocking.<br>
This isn't a huge loss since clients only need to atomically commit all surfaces anyway.<br><br>This has a number of benefits<br> - We can get rid of the commit modes (and the set_sync/set_desync request) and wl_surface.commit becomes easy to reason about<br>
 - Commiting all surfaces becomes a single request instead of having to walking the surface tree bottom up commiting surface along in synchronized mode<br> - The compositor doesn't have to manage more than 2 states per surface (pending and current)<br>
<br>I don't see any drawbacks from this or the reason for the complexity in the current extension</div>