one of the more interesting things to think about is the big push to rendering all window manager stuff through a gpu, because we were sure we needed drop shadows and geometry transforms for windows....
Now, what we actually do in a window manager could easily be done in software in realtime, just farmed out to some cpu core.
> because we were sure we needed drop shadows and geometry transforms for windows
As screens get larger, the amount of pixels you need to push to composite windows gets larger-squared. It makes sense to move the pixel pushing away from the CPU and more importantly away from CPU-RAM and on to a separate RAM bus.
The "single buffer with invalidation" model of Win16 (I cannot remember how it works in X) saves memory at the cost of more redraws. The composition model allows you to do things like drag window A over window B without forcing a repaint of window B every frame.
It also allows for better process isolation. I think in both Win16 and X11 you could just get a handle to the "root window" and draw wherever you wanted?
eh, there is nothing a gpu can do here within the concept of composition that a cpu could not also do.
the gpu simply has buffers that it compsits, the cpu can do that as well. with the benefit of less complexity leading to not needing to worry about driver crashes.
on sane architectures its all the same ram anyway
> eh, there is nothing a gpu can do here within the concept of composition that a cpu could not also do.
True, but which is more efficient?
> on sane architectures its all the same ram anyway
Opinions differ. The main benefit of splitting RAM is not having to share the bus. As I said, this lets you use the CPU for CPU things without having to spend precious DRAM bandwidth shovelling pixels.
Now, what we actually do in a window manager could easily be done in software in realtime, just farmed out to some cpu core.