Compute blend_mode outside CDP
BUG=497817
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1296713002
Cr-Commit-Position: refs/heads/master@{#343555}
diff --git a/cc/layers/layer.h b/cc/layers/layer.h
index d780a441..7011058 100644
--- a/cc/layers/layer.h
+++ b/cc/layers/layer.h
@@ -141,6 +141,14 @@
void SetBlendMode(SkXfermode::Mode blend_mode);
SkXfermode::Mode blend_mode() const { return blend_mode_; }
+ void set_draw_blend_mode(SkXfermode::Mode blend_mode) {
+ if (draw_blend_mode_ == blend_mode)
+ return;
+ draw_blend_mode_ = blend_mode;
+ SetNeedsPushProperties();
+ }
+ SkXfermode::Mode draw_blend_mode() const { return draw_blend_mode_; }
+
bool uses_default_blend_mode() const {
return blend_mode_ == SkXfermode::kSrcOver_Mode;
}
@@ -730,6 +738,9 @@
SkColor background_color_;
float opacity_;
SkXfermode::Mode blend_mode_;
+ // draw_blend_mode may be different than blend_mode_,
+ // when a RenderSurface re-parents the layer's blend_mode.
+ SkXfermode::Mode draw_blend_mode_;
FilterOperations filters_;
FilterOperations background_filters_;
LayerPositionConstraint position_constraint_;