| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index 84c43c20b1c3462b342036d0fbbc7311e9249e28..0dc624d6c4100253af4b363abb2375a00529a3dd 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -414,6 +414,17 @@ void LayerTreeHostImpl::FrameData::AppendRenderPass(
|
| render_passes.push_back(render_pass.Pass());
|
| }
|
|
|
| +static DrawMode GetDrawMode(OutputSurface* output_surface) {
|
| + if (output_surface->ForcedDrawToSoftwareDevice()) {
|
| + return DRAW_MODE_RESOURCELESS_SOFTWARE;
|
| + } else if (output_surface->context3d()) {
|
| + return DRAW_MODE_HARDWARE;
|
| + } else {
|
| + DCHECK(output_surface->software_device());
|
| + return DRAW_MODE_SOFTWARE;
|
| + }
|
| +}
|
| +
|
| static void AppendQuadsForLayer(RenderPass* target_render_pass,
|
| LayerImpl* layer,
|
| const OcclusionTrackerImpl& occlusion_tracker,
|
| @@ -592,6 +603,8 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
|
|
|
| int layers_drawn = 0;
|
|
|
| + const DrawMode draw_mode = GetDrawMode(output_surface_.get());
|
| +
|
| LayerIteratorType end =
|
| LayerIteratorType::End(frame->render_surface_layer_list);
|
| for (LayerIteratorType it =
|
| @@ -607,8 +620,6 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
|
| occlusion_tracker.EnterLayer(it, prevent_occlusion);
|
|
|
| AppendQuadsData append_quads_data(target_render_pass->id);
|
| - if (output_surface_->ForcedDrawToSoftwareDevice())
|
| - append_quads_data.allow_tile_draw_quads = false;
|
|
|
| if (it.represents_target_render_surface()) {
|
| if (it->HasCopyRequest()) {
|
| @@ -639,9 +650,9 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
|
| &has_occlusion_from_outside_target_surface)) {
|
| append_quads_data.had_occlusion_from_outside_target_surface |=
|
| has_occlusion_from_outside_target_surface;
|
| - } else {
|
| + } else if (it->WillDraw(draw_mode, resource_provider_.get())) {
|
| DCHECK_EQ(active_tree_, it->layer_tree_impl());
|
| - it->WillDraw(resource_provider_.get());
|
| +
|
| frame->will_draw_layers.push_back(*it);
|
|
|
| if (it->HasContributingDelegatedRenderPasses()) {
|
|
|