So that's one of many reasons practical OSes don't do their UIs with GPU shaders when they can otherwise get away with less.
So that's one of many reasons practical OSes don't do their UIs with GPU shaders when they can otherwise get away with less.
But otherwise most operating systems do run in full GPU mode all the time. The true-mobile ones, so iOS & Android, are almost always using dedicated hardware to handle composition without spinning up the GPU (although both use the GPU to render, so whenever something does change it's immediately back on the GPU), but "desktop" ones are generally always doing GPU composition as long as the display is on. With some hand-wavy exceptions to that primarily for video layers in select circumstances with proper hardware support.
Whether apps make use of these capabilities are another question. It's pretty easy to get lazy and blat out the whole window every time, when you know the GPU can handle the pixel bandwidth, and things like imgui explicitly make this tradeoff to keep logic simple.
I presume these are inside the GPU die, though? Probably near the display controller logic?
The mobile ones though are pretty good, though. They can do like ~6 composition layers with alpha blending, cropping, rotation, and apply a color matrix for display calibration. All in the dedicated HWC silicon, GPU can be powered off (or doing something else like rendering a game)
Here is something I am coding with Dear ImGui:
https://www.youtube.com/watch?v=vbZsE7ACXrw
Even on an old MacBook, it keeps running at 60 FPS.
- Redrawing entire application windows every time something gets moved around a bit and something gets a paint event is also higher load than necessary
- Drawing things that won't change every frame into textures (not shaders), and then compositing those textures together on every frame, is by far the most efficient approach today, on all platforms
I am genuinely interested to hear the definition of "less" that you refer to. It's possible some piece of assumed context is being lost in translation.
Not really true. It's a lot more efficient to draw quite a few things from scratch than it is to use a cache texture. Texture composition requires a lot of memory bandwidth, which tends to be a rather constrained resource. It is very effective to do things like put each window in its own texture, yes. Within a given window using caching textures tends to be a net-loss, though.