WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
201330
On the first compositing update, "drawsContent" can be wrong
https://bugs.webkit.org/show_bug.cgi?id=201330
Summary
On the first compositing update, "drawsContent" can be wrong
Simon Fraser (smfr)
Reported
2019-08-29 21:40:28 PDT
There's an ordering dependency in computing "requiresOwnBackingStore" that causes us to set drawsContent on the GrpahicsLayer when we don't need to, causing test failures: (bounds 342.00 240.00) + (drawsContent 1) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00]) The issue is that updateDrawsContent(contentsInfo); happens in RenderLayerBacking::updateAfterDescendants(), but RenderLayerCompositor::requiresOwnBackingStore() on descendants runs before this, and consults compositingAncestorLayer->backing()->graphicsLayer()->drawsContent()
Attachments
Patch
(31.99 KB, patch)
2019-09-03 21:44 PDT
,
Simon Fraser (smfr)
koivisto
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Simon Fraser (smfr)
Comment 1
2019-08-30 18:28:30 PDT
I need to tease apart "requires own backing store" from "paints into ancestor". RenderLayerBacking::paintsContent() currently checks isPaintDestinationForDescendantLayers(), which walks descendants without their own backing store.
Simon Fraser (smfr)
Comment 2
2019-09-03 21:44:44 PDT
Created
attachment 377955
[details]
Patch
Antti Koivisto
Comment 3
2019-09-04 11:01:13 PDT
Comment on
attachment 377955
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=377955&action=review
> Source/WebCore/rendering/RenderLayerBacking.h:87 > + void updateGeometry(const RenderLayer* compositingAncestor, const RenderLayer* compositedAncestorWithBackingStore);
Can we start passing the traversal state like I suggested before?
> Source/WebCore/rendering/RenderLayerCompositor.cpp:1238 > + layerBacking->updateGeometry(traversalState.compositingAncestor, traversalStateForDescendants.paintDestinationAncestor);
It seems wrong this is consulting traversalStateForDescendants while calling into backing of the current layer.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug