In the attached testcase, there should be a red box, but it's getting clipped. Remove the opacity to see what it should look like. I think the transparency clip rect is ignoring transforms.
Created attachment 24831 [details] Testcase
Created attachment 24859 [details] Reduced testcase
diff --git a/WebCore/platform/graphics/cg/GraphicsContextCG.cpp b/WebCore/platform/graphics/cg/GraphicsContextCG.cpp index 3f0e6e7..31fcc2b 100644 --- a/WebCore/platform/graphics/cg/GraphicsContextCG.cpp +++ b/WebCore/platform/graphics/cg/GraphicsContextCG.cpp @@ -651,6 +651,12 @@ void GraphicsContext::beginTransparencyLayer(float opacity) CGContextSaveGState(context); CGContextSetAlpha(context, opacity); CGContextBeginTransparencyLayer(context, 0); + + // paint a big rect so we can see how big the layer is + float red[] = { 1.0f, 0.0f, 0.0f, 0.1f }; + CGContextSetFillColor(context, red); + CGContextFillRect(context, CGRectMake(-1000.0f, -1000.0f, 2000.0f, 2000.0f)); + m_data->beginTransparencyLayer(); m_data->m_userToDeviceTransformKnownToBeIdentity = false; }
That patch in the previous comment is some debugging code that will reveal how big the opacity layer is.
Created attachment 24866 [details] Patch, testcase, changelog
Comment on attachment 24866 [details] Patch, testcase, changelog r=me
Committed r38079 M WebCore/rendering/RenderLayer.cpp M WebCore/ChangeLog A LayoutTests/platform/mac/fast/layers/opacity-transforms-expected.txt A LayoutTests/platform/mac/fast/layers/opacity-transforms-expected.png A LayoutTests/platform/mac/fast/layers/opacity-transforms-expected.checksum M LayoutTests/ChangeLog A LayoutTests/fast/layers/opacity-transforms.html r38079 = f9050b37b90e1c8a40699dc2e8c58cdda5dbbfcb (trunk)