Display <- X server <- Compositor/WM <- X server <- Your app
Where compositor/WM and your app are X clients, i.e. there's lots of context switches between clients and the server.
I personally don't see much wrong with this design BTW, despite the context switches X is pretty smooth even on some pretty wimpy hardware (eg. Raspberry pi, or Nokia N900, or the wimpy Pentiums I ran X on 15 years ago).
> No, that is outside the scope of Wayland. To support remote rendering you need to define a rendering API, which is something I've been very careful to avoid doing. The reason Wayland is so simple and feasible at all is that I'm sidestepping this big task and pushing it to the clients. It's an interesting challenge, a very big task and it's hard to get right, but essentially orthogonal to what Wayland tries to achieve.
To support remote rendering you need to define a rendering API
See, this makes no sense to me. The truth of this statement holds if I substitute s/remote/local/.
The fact is, Wayland manages a shared resource via a well-known API. This is the very definition of client/server architecture. There's no additional technical hurdle to be crossed to support network transparency.
Yes, but the resources it passes around are handles to buffers in memory (as little copying as possible). Not so trivial to pass around the network (well, most networks). I suspect a VNC-like approach would work easiest and most generally, but performance would suffer (though I've found situations where VNC beats remote X11, even over very low latency connections).
My understanding of OpenGL (which could be wrong) is that buffers are only transferred when loading textures onto the graphics card, which generally only happens at startup, and is time-consuming anyway (since they must find their way from disk to graphics memory).
So memory buffer handles can still be passed around, since clients rarely touch the raw data. (Indeed, this is exactly how X11 works.)
You can send OpenGL over the network, but I suspect sending the rendered window contents will use less bandwidth. So that's what Wayland is going to do.
That's one of the first questions asked in every discussion about Wayland :) The answer is basically no, it's out of scope. That said, remoting might be added to one or more Wayland compositors in the future. http://wayland.freedesktop.org/faq.html#heading_toc_j_8
Currently it's
Display <- Compositor <- X11 Client <- X11 Server <- App
Wayland:
Display <- Compositor (Wayland) <- App