Microsoft will be showing off the Internet Explorer 9 beta this week, and one of the big features touted is the hardware acceleration.
Ted Johnson, Program Manager Lead for Web Graphics of the Internet Explorer 9 team posted a blog last week explaining the architecture of the GPU acceleration for the upcoming browser.
IE9 can be completely hardware accelerated through the stages of Content Rendering, Page Composition and Desktop Composition.
Johnson boasts that IE9 has the advantage of being closely tied to Windows 7 and Vista, and in this case can be more hardware accelerated than other browsers. He wrote:
With IE9, developers have a fully-hardware accelerated display pipeline that runs from their markup to the screen. Based on their blog posts, the hardware-accelerated implementations of other browsers generally accelerate one phase or the other, but not yet both. Delivering full hardware acceleration, on by default, is an architectural undertaking. When there is a desire to run across multiple platforms, developers introduce abstraction layers and inevitably make tradeoffs which ultimately impact performance and reduce the ability of a browser to achieve ‘native’ performance. Getting the full value of the GPU is extremely challenging and writing to intermediate layers and libraries instead of an operating system’s native support makes it even harder. Windows’ DirectX long legacy of powering of the most intensive 3D games has made DirectX the highest performance GPU-based rendering system available.
Robert O'Callahan, a Mozilla hacker, blogged on Mozillazine that Firefox 4 also has the same three layers of hardware acceleration that Internet Explorer 9 does – and it also works on Windows XP!
O'Callahan also explains that full GPU acceleration isn't always the case:
BTW "full hardware acceleration" is a bogus phrase. All browser pick and choose how to use the GPU, and more use of the GPU isn't necessarily better. There are certainly things no browser is ever going to "hardware accelerate" ... e.g. CSS margin collapsing :-).