No, you are not describing indirect rendering here. All cases you describe can equally well be direct or indirect rendering, since you (nor I) ever mention who does the actual rendering of the client's image: the client or the X server. We were just talking about client provided images, not how they are originally created.
Compositing or desktop effects have nothing to do with indirect rendering.
The compositing manager in X might be (have been? Wasn't this limitation lifted?) limited to use indirect rendering for its own rendering only, but that has nothing to do with normal X clients.
But that one is true that Wayland has less overhead: no indirect rendering (because all clients render full frames themselves, not pushing rendering commands to a server), and no communication with a third process (compositing happens within the server).
Your comment makes no sense. All rendering on Wayland is always direct rendering. There is no indirect rendering, because Wayland does not have a rendering protocol.
This comment makes no sense on its own. You would have to invent also a rendering protocol, which is an unimaginably hard task to do well.
1) Not all applications do this kind of rendering.
2) You can cache several different glyphs for one character..
I think that the ideal solution would be to have a 'duplicated identical cache' between the client and the server: at first the client and the server agree on a cache size (empty at the beginning), then the client send glyphs which are stored both in the client and the server cache, client and server use *identical* algorithm to manage the cache, so when a client see that a glyph is in its cache it knows that the server also has it in its cache and then it can send only a draw this glyphs references.
The hard part is handling resynchronisation in case the server needs to reduce the cache size..
Wayland without overlays does compositing using GL, which causes rendering to be indirect.
http://www.phoronix.com/scan.php?pag...tem&px=MTI5NTEThe addition of atomic page flip to the kernel should allow the configuration of overlays within a frame boundary. This allows KMS Wayland compositors, such as Weston, to use overlays seamlessly. In this talk we'll cover how Weston assigns different surfaces to overlays and other planes, to reduce the portion of the screen that is composited using GL.
two pass rendering != indirect rendering
GL indirect rendering means that the application is unable to talk to graphic hardware - thus GL calls have to be submitted to the server which in turn submit them to the gpu (as it's the only one with hw access privilieges) - hence AIGLX
compositing means that an application IS able to operate on the gpu (within the device context it has been assigned), hence direct rendering - but since only the compositor/wm/server knows about windows from ALL active applications, they render offscreen textures that the compositor then renders on screen
hence a 2 pass rendering, or redirected (direct) rendering
which may have some overhead over rendering directly to screen in a single pass, but if you think about it the latter would apply only to full screen applications and overlays
It's not enough to cache several iterations of some letter. They can also overlap (and the overlap can change just as the shape) and can change dynamically, meaning you would have to cache the overlap data, and with the possibility of per-letter changes, the amount of permutations becomes rather unwieldy.
For Arial one texture per font size is enough.
http://imageshack.us/photo/my-images...rendering.png/
click image to view in original size