Chromium Code Reviews| 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 851885b80b3b9685c402507c93e96d2f54ffb7b8..3cae6fdb42d1c7b03eb2b4ee936fd90bf1555b68 100644 |
| --- a/cc/trees/layer_tree_host_impl.cc |
| +++ b/cc/trees/layer_tree_host_impl.cc |
| @@ -244,6 +244,7 @@ LayerTreeHostImpl::LayerTreeHostImpl( |
| device_scale_factor_(1.f), |
| overhang_ui_resource_id_(0), |
| overdraw_bottom_height_(0.f), |
| + resourceless_software_draw_(false), |
| device_viewport_valid_for_tile_management_(true), |
| begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()), |
| animation_registrar_(AnimationRegistrar::Create()), |
| @@ -549,8 +550,9 @@ void LayerTreeHostImpl::FrameData::AppendRenderPass( |
| render_passes.push_back(render_pass.Pass()); |
| } |
| -static DrawMode GetDrawMode(OutputSurface* output_surface) { |
| - if (output_surface->ForcedDrawToSoftwareDevice()) { |
| +static DrawMode GetDrawMode(bool resourceless_software, |
|
danakj
2014/07/09 17:21:07
how about making this not static, and stop passing
boliu
2014/07/09 20:59:50
Done.
|
| + OutputSurface* output_surface) { |
| + if (resourceless_software) { |
| return DRAW_MODE_RESOURCELESS_SOFTWARE; |
| } else if (output_surface->context_provider()) { |
| return DRAW_MODE_HARDWARE; |
| @@ -778,7 +780,8 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
| int layers_drawn = 0; |
| - const DrawMode draw_mode = GetDrawMode(output_surface_.get()); |
| + const DrawMode draw_mode = |
| + GetDrawMode(resourceless_software_draw_, output_surface_.get()); |
| LayerIteratorType end = |
| LayerIteratorType::End(frame->render_surface_layer_list); |
| @@ -915,7 +918,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
| DCHECK(!frame->render_passes.empty()); |
| // Should only have one render pass in resourceless software mode. |
| - if (output_surface_->ForcedDrawToSoftwareDevice()) |
| + if (resourceless_software_draw_) |
|
danakj
2014/07/09 17:21:07
can you change this to be based on the draw_mode,
boliu
2014/07/09 20:59:50
Done.
|
| DCHECK_EQ(1u, frame->render_passes.size()); |
| return draw_result; |
| @@ -1305,14 +1308,17 @@ void LayerTreeHostImpl::SetExternalDrawConstraints( |
| const gfx::Transform& transform, |
| const gfx::Rect& viewport, |
| const gfx::Rect& clip, |
| + bool resourceless_software_draw, |
| bool valid_for_tile_management) { |
| - if (external_transform_ != transform || external_viewport_ != viewport) { |
| + if (external_transform_ != transform || external_viewport_ != viewport || |
| + resourceless_software_draw_ != resourceless_software_draw) { |
|
brianderson
2014/07/08 21:26:12
Is this the part that fixes the bug?
Was the poin
boliu
2014/07/08 21:31:14
Yes
|
| active_tree_->set_needs_update_draw_properties(); |
| } |
| external_transform_ = transform; |
| external_viewport_ = viewport; |
| external_clip_ = clip; |
| + resourceless_software_draw_ = resourceless_software_draw; |
| device_viewport_valid_for_tile_management_ = valid_for_tile_management; |
| } |
| @@ -1462,10 +1468,11 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame, |
| if (active_tree_->hud_layer()) { |
| TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture"); |
| active_tree_->hud_layer()->UpdateHudTexture( |
| - GetDrawMode(output_surface_.get()), resource_provider_.get()); |
| + GetDrawMode(resourceless_software_draw_, output_surface_.get()), |
|
danakj
2014/07/09 17:21:07
can you move this GetDrawMode up above the if stat
boliu
2014/07/09 20:59:50
Done.
|
| + resource_provider_.get()); |
| } |
| - if (output_surface_->ForcedDrawToSoftwareDevice()) { |
| + if (resourceless_software_draw_) { |
| bool disable_picture_quad_image_filtering = |
| IsCurrentlyScrolling() || needs_animate_layers(); |