Take the 2-minute tour ×

I'm wondering how a modern browser handles scrolling of a displayed page.

Is the whole page re-rendered after every scroll step, or is there an internal bitmap or possibly even GPU accelerated buffer that is just moved around?

There is a lot of talk about GPU acceleration these days, but what exactly is accelerated: The paiting process of the actual content (images, text, lines...), the compositing of the various elements on the page, or both?

share|improve this question

closed as not a real question by Linker3000, 8088, Mokubai, Nifle, Simon Sheehan Nov 8 '11 at 21:17


2 Answers 2

up vote 1 down vote accepted

Doesn't need to be a particularly modern browser. Windows (the OS) has supported scroll support for quite a while, for all applications. Windows keeps track which part of a window are "valid" and which are "invalid", and asks the program to redraw invalid parts. After scrolling, only a thin edge is invalid and needs redrawing.

(Current versions of Windows use a function called ScrollWindowEx for this)

share|improve this answer
Does that mean that the API user only has to worry about redrawing the parts that have "scrolled into view", and the OS moves all the remaining parts up/down without any application layer repaints? –  lxgr Nov 7 '11 at 12:23
Yup. And you needed that last code anyway. Normally Windows asks you only to draw the visible part of your window, so when that visible part changes (e.g. when a forground dialog window is closed) you can get a request to draw that newly visible part. –  MSalters Nov 7 '11 at 16:12
