Comment by rayiner
13 years ago
Speed, to a certain extent, doesn't matter. What matters is intelligent drawing. Double-buffering updates, not showing partially laid-out screens, etc. Software rendering is plenty fast for the relatively simple drawing that makes up a typical application's user interface, and EGL does support the most essential bit of hardware acceleration--bit blit (using the image as a texture).
In fact Qt was speed up noticeably for most use cases by their 'raster' graphics engine instead of the native X11 one.
Some of that is due to the X11 engine not being optimal, but then again if it's difficult to generate an optimal X11 rendering toolkit and it's easy to make a fast software renderer, then maybe that makes choices like these (moving to software-everything) seem more reasonable in retrospect.
For touch interfaces the lag between input and render is critical, and double-buffering if done wrong can kill you.
Software rendering an opaque rect may be fine, but add in some big semi-transparent overlays and performance drops.
Only to the extent that it's not fast enough, which it clearly is given that iOS doesn't hardware-accelerate CoreGraphics. Anything done wrong can be bad, but flicker is really really bad. Pretty much only Apple gets it right in that regard (maybe Jellybean, I haven't used it much).
Apple gets it right because they cache prerendered textures so aggressively on the GPU. In this regard software rendering versus hardware rendering doesn't really matter much, since actual rendering happens so infrequently.