Created attachment 66625 [details]
Test failure diff
Running latest WebKit GTK/EFL (r127473) against cairo git revision 51594d9 causes a regression when running the following webkit test to ensure correct behavior of canvas with fillRect using a gradient fillStyle and a shadow.
Test case: http://trac.webkit.org/export/127473/trunk/LayoutTests/fast/canvas/canvas-fillRect-gradient-shadow.html
I suspect that cairo matrix to pixman transform/offset conversion in _cairo_matrix_to_pixman_matrix_offset() causes this regression.
The test results with the failure can be seen in the attachments.
Created attachment 66627 [details]
Test results with the failure
Test case works under firefox... Is there any chance you can simplify it to the single failure to make extraction into C easier?
Created attachment 66630 [details]
Simplified test case
Thanks for the quick look, Chris. I modified the test case to reproduce only the actual failure.
The test case wasn't as simple as I was hoping for. :)
Can you run the test case locally whilst capturing the cairo calls:
cairo-trace eflwebkit test.html
you might want to add some obvious fluff calls around the canvas to make the interesting section more clear.
Created attachment 67642 [details]
cairo-trace of the test case
Having extracted the test case and saved the output to a file, the value of pixel (351, 751) is 0x00ff0000 (that is 100% red, 0% alpha). Yet the test case is reporting 0 red.
Can you enlighten me as to what magic 'ctx.getImageData(351, 751, 1, 1).data' performs?
ShadowBlur::blurLayerImage() is broken for starters.
Thanks, Chris. I will look into the shadowBlur and blur radius handling code in webkit.