> The crucial limitation here is that flushBuffer gives you no way to indicate which parts of the OpenGL context have changed.
Partial window updates have been available in Windows since long ago (in non-accelerated GDI). Why don't others just copy Windows API instead of inventing their own poor API?
Maybe there is no partial updates because an application can write directly to GPU textures and GPU will redraw entire screen anyway?
Also I am not sure that browser needs OpenGL, because you cannot render text efficiently on GPU anyway and the main content of web pages is text.
> Whenever a layer is mutated in any way, the window manager will redraw an area that includes the bounds of that layer, rather than the bounds of the entire window.
Then the problem still isn't solved because a layer can be much larger than changed pixels.
Of course Apple has a partial window update API which is the primary drawing mechanism. flushBuffer maps to OpenGL, and Windows has its own version of this too (Wingdi::SwapBuffers).
I agree that browsers using OpenGL is...a design you could reach when measuring for graphics throughput at the expense of all else.
Partial window updates have been available in Windows since long ago (in non-accelerated GDI). Why don't others just copy Windows API instead of inventing their own poor API?
Maybe there is no partial updates because an application can write directly to GPU textures and GPU will redraw entire screen anyway?
Also I am not sure that browser needs OpenGL, because you cannot render text efficiently on GPU anyway and the main content of web pages is text.
> Whenever a layer is mutated in any way, the window manager will redraw an area that includes the bounds of that layer, rather than the bounds of the entire window.
Then the problem still isn't solved because a layer can be much larger than changed pixels.