The above page (once initialized) renders quite fast in Firefox. In WebKit, it hangs for many seconds each frame. It seems to be computing a luminance mask for a 5Kx5K image every frame. Although mask creation could be optimized, I doubt that the other browsers are doing this computation, due to its size. I suspect that either we're doing it at the wrong resolution, or there is an invalidation issue and the mask is being computed more often than necessary.
This also affects clipPaths that may use ImageBuffers, filters and patterns.
We're not allocating image buffers based on the final rendered size, but in the intermediate coordinate system where the object is renderer. This leads to scaling artefacts as well (see similar pattern bugs).
We should try to fix this ASAP.
I forgot to ask: Stephen, do you want to work on this?
There's already some code handling the task to figure out the final renderered size in the CG code path in RenderSVGResourceGradient (used for gradient on text).
(In reply to comment #2)
> I forgot to ask: Stephen, do you want to work on this?
I'm afraid I'm heavily loaded with other tasks right now, so I was hoping that someone else could take it on.
Niko and me began at the same time to fix this issue. Delegating this work to Niko.
Created attachment 64195 [details]
Attachment 64195 [details] did not build on qt:
Build output: http://queues.webkit.org/results/3763096
Comment on attachment 64195 [details]
The qt-build system update is missing. Otherwise looks great r=me.
Qt build system updated. Landed in r65229.