Greetings all,

In a drive to satisfy some the most demanding performance critical
applications--2d platformer games--, browser vendors have put a lot of
effort into optimizing CanvasRenderingContext2D, and the drawImage method
in particular. In a world where browsers have GPU-accelerated graphics
backends and complex multi-threaded rendering frameworks, the ultimate
hurdle in relieving computational burden from the browser's main thread is:
per draw call overhead.

In a sprite based animation, the application may be calling drawImage
hundreds or even thousands of times per animation frame. The script
bindings and browser internal bookkeeping that is performed on a per draw
call basis is a O(N) cost that could be made O(1) by introducing batch
versions of drawImage. Benchmark experiments performed using Chrome on
mobile and desktop platforms show that this is currently the main obstacle
standing in the way of achieving near-native rendering performance.

Here is what I am proposing:

Feedback wanted.


   -Justin Novosad

Reply via email to