On Aug 10, 2010, at 2:49 PM, David Hyatt wrote:

> Yeah, I think an even better way of abstracting it might be to make 
> ImageBuffer:drawIntoContext(GraphicsContext*, ...).  I think that would be 
> simpler for people implementing something special.  If we did that, then the 
> image() accessor on ImageBuffer could probably just always be a deep copy (or 
> copy-on-write).
> 
> Getting rid of the graphicsContext->drawImage(imageBuffer->image()....) 
> pattern would definitely be good though.
> 
> I'm just really curious about the performance of canvas and whether it's 
> better to have slower get/PutImageData or faster rendering otherwise.   It 
> all comes down to how people are using canvas.  I suspect that 
> get/PutImageData are really really popular.

I implemented ImageBuffer::drawIntoContext on Mac, and I switched the 
implementation of ImageBuffer to dynamically swap to a CGLayer (throwing away 
the bitmap context) if it can do so.  Preliminary tests look very very good.

This benchmark for example:

http://themaninblue.com/experiment/AnimationBenchmark/canvas/

Jumped from 37fps to 85fps.

I'll need to see what happens with intensive get/PutImageData examples though 
before I declare victory, but it definitely looks like slowing down 
get/PutImageData is worth it if we can get performance gains like this!

dave
(hy...@apple.com)


_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to