OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 void LayerTreeHostImpl::TrackDamageForAllSurfaces( | 686 void LayerTreeHostImpl::TrackDamageForAllSurfaces( |
687 const LayerImplList& render_surface_layer_list) { | 687 const LayerImplList& render_surface_layer_list) { |
688 // For now, we use damage tracking to compute a global scissor. To do this, we | 688 // For now, we use damage tracking to compute a global scissor. To do this, we |
689 // must compute all damage tracking before drawing anything, so that we know | 689 // must compute all damage tracking before drawing anything, so that we know |
690 // the root damage rect. The root damage rect is then used to scissor each | 690 // the root damage rect. The root damage rect is then used to scissor each |
691 // surface. | 691 // surface. |
692 size_t render_surface_layer_list_size = render_surface_layer_list.size(); | 692 size_t render_surface_layer_list_size = render_surface_layer_list.size(); |
693 for (size_t i = 0; i < render_surface_layer_list_size; ++i) { | 693 for (size_t i = 0; i < render_surface_layer_list_size; ++i) { |
694 size_t surface_index = render_surface_layer_list_size - 1 - i; | 694 size_t surface_index = render_surface_layer_list_size - 1 - i; |
695 LayerImpl* render_surface_layer = render_surface_layer_list[surface_index]; | 695 LayerImpl* render_surface_layer = render_surface_layer_list[surface_index]; |
696 RenderSurfaceImpl* render_surface = render_surface_layer->render_surface(); | 696 RenderSurfaceImpl* render_surface = |
| 697 render_surface_layer->GetRenderSurface(); |
697 DCHECK(render_surface); | 698 DCHECK(render_surface); |
698 render_surface->damage_tracker()->UpdateDamageTrackingState( | 699 render_surface->damage_tracker()->UpdateDamageTrackingState( |
699 render_surface->layer_list(), render_surface, | 700 render_surface->layer_list(), render_surface, |
700 render_surface->SurfacePropertyChangedOnlyFromDescendant(), | 701 render_surface->SurfacePropertyChangedOnlyFromDescendant(), |
701 render_surface->content_rect(), render_surface->MaskLayer(), | 702 render_surface->content_rect(), render_surface->MaskLayer(), |
702 render_surface->Filters()); | 703 render_surface->Filters()); |
703 } | 704 } |
704 } | 705 } |
705 | 706 |
706 void LayerTreeHostImpl::FrameData::AsValueInto( | 707 void LayerTreeHostImpl::FrameData::AsValueInto( |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
825 static_cast<uint64_t>(frame->render_surface_layer_list->size()), | 826 static_cast<uint64_t>(frame->render_surface_layer_list->size()), |
826 "RequiresHighResToDraw", RequiresHighResToDraw()); | 827 "RequiresHighResToDraw", RequiresHighResToDraw()); |
827 | 828 |
828 // Create the render passes in dependency order. | 829 // Create the render passes in dependency order. |
829 size_t render_surface_layer_list_size = | 830 size_t render_surface_layer_list_size = |
830 frame->render_surface_layer_list->size(); | 831 frame->render_surface_layer_list->size(); |
831 for (size_t i = 0; i < render_surface_layer_list_size; ++i) { | 832 for (size_t i = 0; i < render_surface_layer_list_size; ++i) { |
832 size_t surface_index = render_surface_layer_list_size - 1 - i; | 833 size_t surface_index = render_surface_layer_list_size - 1 - i; |
833 LayerImpl* render_surface_layer = | 834 LayerImpl* render_surface_layer = |
834 (*frame->render_surface_layer_list)[surface_index]; | 835 (*frame->render_surface_layer_list)[surface_index]; |
835 RenderSurfaceImpl* render_surface = render_surface_layer->render_surface(); | 836 RenderSurfaceImpl* render_surface = |
| 837 render_surface_layer->GetRenderSurface(); |
836 | 838 |
837 bool should_draw_into_render_pass = | 839 bool should_draw_into_render_pass = |
838 active_tree_->IsRootLayer(render_surface_layer) || | 840 active_tree_->IsRootLayer(render_surface_layer) || |
839 render_surface->contributes_to_drawn_surface() || | 841 render_surface->contributes_to_drawn_surface() || |
840 render_surface->HasCopyRequest(); | 842 render_surface->HasCopyRequest(); |
841 if (should_draw_into_render_pass) | 843 if (should_draw_into_render_pass) |
842 render_surface->AppendRenderPasses(frame); | 844 render_surface->AppendRenderPasses(frame); |
843 } | 845 } |
844 | 846 |
845 // Damage rects for non-root passes aren't meaningful, so set them to be | 847 // Damage rects for non-root passes aren't meaningful, so set them to be |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
885 int64_t checkerboarded_needs_raster_content_area = 0; | 887 int64_t checkerboarded_needs_raster_content_area = 0; |
886 bool have_copy_request = | 888 bool have_copy_request = |
887 active_tree()->property_trees()->effect_tree.HasCopyRequests(); | 889 active_tree()->property_trees()->effect_tree.HasCopyRequests(); |
888 bool have_missing_animated_tiles = false; | 890 bool have_missing_animated_tiles = false; |
889 | 891 |
890 LayerIterator end = LayerIterator::End(frame->render_surface_layer_list); | 892 LayerIterator end = LayerIterator::End(frame->render_surface_layer_list); |
891 for (LayerIterator it = | 893 for (LayerIterator it = |
892 LayerIterator::Begin(frame->render_surface_layer_list); | 894 LayerIterator::Begin(frame->render_surface_layer_list); |
893 it != end; ++it) { | 895 it != end; ++it) { |
894 auto target_render_pass_id = | 896 auto target_render_pass_id = |
895 it.target_render_surface_layer()->render_surface()->GetRenderPassId(); | 897 it.target_render_surface_layer()->GetRenderSurface()->GetRenderPassId(); |
896 RenderPass* target_render_pass = | 898 RenderPass* target_render_pass = |
897 FindRenderPassById(frame->render_passes, target_render_pass_id); | 899 FindRenderPassById(frame->render_passes, target_render_pass_id); |
898 | 900 |
899 AppendQuadsData append_quads_data; | 901 AppendQuadsData append_quads_data; |
900 | 902 |
901 RenderSurfaceImpl* render_surface = it->render_surface(); | 903 RenderSurfaceImpl* render_surface = it->GetRenderSurface(); |
902 if (it.represents_target_render_surface()) { | 904 if (it.represents_target_render_surface()) { |
903 if (render_surface->HasCopyRequest()) { | 905 if (render_surface->HasCopyRequest()) { |
904 active_tree() | 906 active_tree() |
905 ->property_trees() | 907 ->property_trees() |
906 ->effect_tree.TakeCopyRequestsAndTransformToSurface( | 908 ->effect_tree.TakeCopyRequestsAndTransformToSurface( |
907 render_surface->EffectTreeIndex(), | 909 render_surface->EffectTreeIndex(), |
908 &target_render_pass->copy_requests); | 910 &target_render_pass->copy_requests); |
909 } | 911 } |
910 } else if (it.represents_contributing_render_surface() && | 912 } else if (it.represents_contributing_render_surface() && |
911 render_surface->contributes_to_drawn_surface()) { | 913 render_surface->contributes_to_drawn_surface()) { |
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1712 | 1714 |
1713 // Clears the list of swap promises after calling DidSwap on each of them to | 1715 // Clears the list of swap promises after calling DidSwap on each of them to |
1714 // signal that the swap is over. | 1716 // signal that the swap is over. |
1715 active_tree()->ClearSwapPromises(); | 1717 active_tree()->ClearSwapPromises(); |
1716 | 1718 |
1717 // The next frame should start by assuming nothing has changed, and changes | 1719 // The next frame should start by assuming nothing has changed, and changes |
1718 // are noted as they occur. | 1720 // are noted as they occur. |
1719 // TODO(boliu): If we did a temporary software renderer frame, propogate the | 1721 // TODO(boliu): If we did a temporary software renderer frame, propogate the |
1720 // damage forward to the next frame. | 1722 // damage forward to the next frame. |
1721 for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) { | 1723 for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) { |
1722 auto* surface = (*frame->render_surface_layer_list)[i]->render_surface(); | 1724 auto* surface = (*frame->render_surface_layer_list)[i]->GetRenderSurface(); |
1723 surface->damage_tracker()->DidDrawDamagedArea(); | 1725 surface->damage_tracker()->DidDrawDamagedArea(); |
1724 } | 1726 } |
1725 active_tree_->ResetAllChangeTracking(); | 1727 active_tree_->ResetAllChangeTracking(); |
1726 | 1728 |
1727 active_tree_->set_has_ever_been_drawn(true); | 1729 active_tree_->set_has_ever_been_drawn(true); |
1728 devtools_instrumentation::DidDrawFrame(id_); | 1730 devtools_instrumentation::DidDrawFrame(id_); |
1729 benchmark_instrumentation::IssueImplThreadRenderingStatsEvent( | 1731 benchmark_instrumentation::IssueImplThreadRenderingStatsEvent( |
1730 rendering_stats_instrumentation_->impl_thread_rendering_stats()); | 1732 rendering_stats_instrumentation_->impl_thread_rendering_stats()); |
1731 rendering_stats_instrumentation_->AccumulateAndClearImplThreadStats(); | 1733 rendering_stats_instrumentation_->AccumulateAndClearImplThreadStats(); |
1732 return true; | 1734 return true; |
(...skipping 2405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4138 worker_context_visibility_ = | 4140 worker_context_visibility_ = |
4139 worker_context->CacheController()->ClientBecameVisible(); | 4141 worker_context->CacheController()->ClientBecameVisible(); |
4140 } else { | 4142 } else { |
4141 worker_context->CacheController()->ClientBecameNotVisible( | 4143 worker_context->CacheController()->ClientBecameNotVisible( |
4142 std::move(worker_context_visibility_)); | 4144 std::move(worker_context_visibility_)); |
4143 } | 4145 } |
4144 } | 4146 } |
4145 } | 4147 } |
4146 | 4148 |
4147 } // namespace cc | 4149 } // namespace cc |
OLD | NEW |