Index: cc/layers/delegated_renderer_layer.cc |
diff --git a/cc/layers/delegated_renderer_layer.cc b/cc/layers/delegated_renderer_layer.cc |
index a92b70106deefab1a3b5872cda4204442a24b8f2..4cc0bf86ba4fdf55abcf7e5f3d65c371110daaae 100644 |
--- a/cc/layers/delegated_renderer_layer.cc |
+++ b/cc/layers/delegated_renderer_layer.cc |
@@ -107,7 +107,7 @@ void DelegatedRendererLayer::SetDisplaySize(gfx::Size size) { |
SetNeedsCommit(); |
} |
-static bool FrameDataHasFilter(DelegatedFrameData* frame) { |
+static bool FrameDataRequiresOffscreenContext(const DelegatedFrameData* frame) { |
danakj
2013/11/13 21:02:03
bikeshed: RequiresFilterContext()? this would matc
rosca
2013/11/14 21:56:34
It matches with the getter's name "needs_offscreen
danakj
2013/11/20 03:32:50
The idea was the setter has some more context abou
rosca
2013/11/20 21:52:04
It makes sense now, thanks! Done.
|
for (size_t i = 0; i < frame->render_pass_list.size(); ++i) { |
const QuadList& quad_list = frame->render_pass_list[i]->quad_list; |
for (size_t j = 0; j < quad_list.size(); ++j) { |
@@ -116,7 +116,9 @@ static bool FrameDataHasFilter(DelegatedFrameData* frame) { |
const RenderPassDrawQuad* render_pass_quad = |
RenderPassDrawQuad::MaterialCast(quad_list[j]); |
if (!render_pass_quad->filters.IsEmpty() || |
- !render_pass_quad->background_filters.IsEmpty()) |
+ !render_pass_quad->background_filters.IsEmpty() || |
+ render_pass_quad->shared_quad_state->blend_mode != |
danakj
2013/11/13 21:02:03
IIUC there is a plan to support blend mode for any
rosca
2013/11/14 21:56:34
Yes, I should have checked blend mode for all type
|
+ SkXfermode::kSrcOver_Mode) |
return true; |
} |
} |
@@ -135,7 +137,8 @@ bool DelegatedRendererLayer::Update(ResourceUpdateQueue* queue, |
// If any quad has a filter operation, then we need a filter context to draw |
// this layer's content. |
- if (FrameDataHasFilter(frame_data_) && layer_tree_host()) |
+ if (layer_tree_host() && !layer_tree_host()->needs_offscreen_context() && |
danakj
2013/11/13 21:02:03
nit: no real need to check needs_offscreen_context
rosca
2013/11/14 21:56:34
I checked this to limit the number of FrameDataReq
danakj
2013/11/20 03:32:50
This will only avoid the call when we've already s
rosca
2013/11/20 21:52:04
Done.
|
+ FrameDataRequiresOffscreenContext(frame_data_)) |
layer_tree_host()->set_needs_filter_context(); |
return true; |