Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(429)

Unified Diff: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp

Issue 2495973002: [SPv2] Add filter support in PaintArtifactCompositor (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
index 7809718197662d42c7d098da2a81de3594935373..5b68b74d74f7d9cc5d7b134999dae473b9218da3 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
@@ -26,6 +26,7 @@ PaintPropertyTreeBuilder::setupInitialContext() {
context.current.clip = context.absolutePosition.clip =
context.fixedPosition.clip = ClipPaintPropertyNode::root();
context.currentEffect = EffectPaintPropertyNode::root();
+ context.inputClipOfCurrentEffect = ClipPaintPropertyNode::root();
context.current.transform = context.absolutePosition.transform =
context.fixedPosition.transform = TransformPaintPropertyNode::root();
context.current.scroll = context.absolutePosition.scroll =
@@ -356,7 +357,8 @@ void PaintPropertyTreeBuilder::updateEffect(
filter = layer->createCompositorFilterOperationsForFilter(style);
}
- const ClipPaintPropertyNode* outputClip = ClipPaintPropertyNode::root();
+ const ClipPaintPropertyNode* outputClip = context.inputClipOfCurrentEffect;
+ const ClipPaintPropertyNode* expansionHint = nullptr;
// The CSS filter spec didn't specify how filters interact with overflow
// clips. The implementation here mimics the old Blink/WebKit behavior for
// backward compatibility.
@@ -382,6 +384,7 @@ void PaintPropertyTreeBuilder::updateEffect(
// TODO(trchen): A filter may contain spatial operations such that an
// output pixel may depend on an input pixel outside of the output clip.
// We should generate a special clip node to represent this expansion.
+ expansionHint = outputClip;
chrishtr 2016/11/14 19:45:10 Why is it called expansionHint? It's not a hint is
trchen 2016/11/23 04:47:18 We haven't implemented one yet. The output clip is
}
if (effectNodeNeeded) {
@@ -396,11 +399,11 @@ void PaintPropertyTreeBuilder::updateEffect(
const auto* properties = object.paintProperties();
if (properties && properties->effect()) {
context.currentEffect = properties->effect();
- // TODO(pdr): Once the expansion clip node is created above, it should be
- // used here to update all current clip nodes;
- const ClipPaintPropertyNode* expansionHint = context.current.clip;
- context.current.clip = context.absolutePosition.clip =
- context.fixedPosition.clip = expansionHint;
+ if (expansionHint) {
+ context.inputClipOfCurrentEffect = context.current.clip =
+ context.absolutePosition.clip = context.fixedPosition.clip =
+ expansionHint;
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698