The result of LayoutTests/css3/images/cross-fade-blending.html no longer matches the expected PNG file. It seems that at intermediate stages of the blend, blending between two opaque images gives a non-opaque result, which is not what should happen. Sadly cross-fade doesn't have any reference tests that would have caught this regression.
Created attachment 278818 [details] Screenshot
Crossfade draws with: context.beginTransparencyLayer(1); drawCrossfadeSubimage(context, m_fromImage.get(), CompositeSourceOver, 1 - m_percentage, m_crossfadeSize); drawCrossfadeSubimage(context, m_toImage.get(), CompositePlusLighter, m_percentage, m_crossfadeSize); context.endTransparencyLayer(); which I would expect to work, unless it fails because of non-linear gamma? It works correctly if we always go down the "useTransparencyLayer" code path.
We're dropping the blend mode on the floor (but need to fix the transparency layer case). Probably regressed in r157045. diff --git a/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp b/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp index 57e3f1a4f1906a2669ffffdd201559cb3eb5ca16..4acfd8ad22800cf2173f1dab8a79f54c8f9092fc 100644 --- a/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp +++ b/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp @@ -51,7 +51,7 @@ static void drawCrossfadeSubimage(GraphicsContext& context, Image& image, Compos GraphicsContextStateSaver stateSaver(context); - context.setCompositeOperation(operation); +// context.setCompositeOperation(operation); if (useTransparencyLayer) context.beginTransparencyLayer(opacity); @@ -60,7 +60,7 @@ static void drawCrossfadeSubimage(GraphicsContext& context, Image& image, Compos if (targetSize != imageSize) context.scale(FloatSize(targetSize.width() / imageSize.width(), targetSize.height() / imageSize.height())); - context.drawImage(image, IntPoint()); + context.drawImage(image, IntPoint(), ImagePaintingOptions(operation)); if (useTransparencyLayer) context.endTransparencyLayer();
Created attachment 278869 [details] Patch
Comment on attachment 278869 [details] Patch Attachment 278869 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/1316744 Number of test failures exceeded the failure limit.
Created attachment 278872 [details] Archive of layout-test-results from ews102 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-yosemite Platform: Mac OS X 10.10.5
Created attachment 278873 [details] Patch
rdar://problem/17917708
Comment on attachment 278873 [details] Patch Attachment 278873 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/1316839 New failing tests: css3/images/cross-fade-blending.html
Created attachment 278875 [details] Archive of layout-test-results from ews101 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-yosemite Platform: Mac OS X 10.10.5
Comment on attachment 278869 [details] Patch Attachment 278869 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/1316835 New failing tests: css3/images/cross-fade-blending.html
Created attachment 278876 [details] Archive of layout-test-results from ews107 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Comment on attachment 278869 [details] Patch Attachment 278869 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/1316831 New failing tests: css3/images/cross-fade-blending.html
Created attachment 278880 [details] Archive of layout-test-results from ews121 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews121 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.4
https://trac.webkit.org/r200889