ARM, Szeged University in Hungary, and Samsung Research UK have been working on TyGL, a new backend for WebKit accelerated with OpenGL ES2.0, and developed and tested on ARM Mali-T628 GPU found in Samsung ARM Chromebook. It will typically provide 1.5 to 4.5 times higher performance, but in the best cases, it can achieve up to eleven times the performance of a CPU-only rendered page.
- Web rendering accelerated by GPU – Batching of draw calls delivers better results on GPUs. TyGL groups commands together to avoid frequent state changes while calling the Graphics Context API.
- Automatic shader generation – TyGL generates complex shaders from multiple shader fragments, and ensures the batches fit into the shader cache of the GPU.
- Trapezoid based path rendering – Work in progress. It will leverage GPU capabilities such as the Pixel Local Storage extension for OpenGL ES.
- No software fallback – Complete GPU-based hardware accelerated solution with no dependency on legacy software.
You can get more technical details about the implementation on TyGL: Hardware Accelerated Web Rendering blog post on ARM community.
They have now officially published benchmark results, but I found some benchmark results on Webkit mailing list:
Since EFL supports cairo, we compared EFL-TyGL and EFL-Cairo
- Canvas-performance – 1.7 times faster with TyGL (21 tests run correctly from 23 tests) – Site: http://flashcanvas.net/examples/dl.dropbox.com/u/1865210/mindcat/canvas_perf.html
- Asteroids-benchmark – 3.4 times faster with TyGL (4 tests run correctly from 6 tests) – Site: http://www.kevs3d.co.uk/dev/asteroidsbench/
The other good news is that TyGL is now open source, with the code available on github, and you can build it and give it a try on ARM Mali-T62X development boards such as Arndale Octa or ODROID-XU3 (Lite) running Ubuntu Linaro 14.04, or other Linux based distributions. The complete build is said to last about 10 hours, but this will obviously depend on your machine. TyGL should also work on other mobile GPU supporting OpenGL ES 2.0, but I understand this has not been tested yet.