SVGs with filters look grainy when scaled
Currently we apply filters according to the abstract coordinate system of the graphic, NOT the device
coordinate system (i.e. the final pixel coords when drawn to the screen). This can be *bad* for a couple
1. When you scale the resulting pixels, the result looks grainy.
2. You can end up rendering 6 billion pixels and only using 1% of that if that part of the image is
A couple ways to solve this:
1. Just figure out what the final CTM for the item/group in question and render only the necessary
number of pixels.
2. (Better!) *delay* compositing of the result image. Instead pass the CIImage back to the parent
container (the one calling draw()) and let it do the compositing (or apply it's own filters using that
CIImage as an input). When you finally have to do the compositing, figure out the absolute CTM, etc.
I guess 2. is really just an optimized version of 1. In either case, this will need to be solved.
Erick said he would take a crack at this.
If I understand your comment right, we do this right now. I scaled the feGaussianBlur and feColorMatrix of the W3C test suite and i don't see pixels. But maybe this is a result of antialiasing?
Committed r69181: <http://trac.webkit.org/changeset/69181>
(In reply to comment #3)
> Committed r69181: <http://trac.webkit.org/changeset/69181>
It broke 2 tests on Qt bot:
Committed r69182: <http://trac.webkit.org/changeset/69182>
Committed r69187: <http://trac.webkit.org/changeset/69187>
This bug was fixed with the patch on bug 31370. Marking this bug as duplication of 31370 because fixes for the patch mention this bug. Sorry for that.
*** This bug has been marked as a duplicate of bug 31370 ***
http://trac.webkit.org/changeset/69187 might have broken GTK Linux 32-bit Debug
http://trac.webkit.org/changeset/69188 might have broken GTK Linux 32-bit Debug