Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 2194013002: cc: Delete the Renderer base class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dcheck-delegating
Patch Set: delete-renderer-base-class: rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 1027
1028 if (!active_tree_->has_transparent_background()) { 1028 if (!active_tree_->has_transparent_background()) {
1029 frame->render_passes.back()->has_transparent_background = false; 1029 frame->render_passes.back()->has_transparent_background = false;
1030 AppendQuadsToFillScreen( 1030 AppendQuadsToFillScreen(
1031 active_tree_->RootScrollLayerDeviceViewportBounds(), 1031 active_tree_->RootScrollLayerDeviceViewportBounds(),
1032 frame->render_passes.back().get(), active_tree_->RootRenderSurface(), 1032 frame->render_passes.back().get(), active_tree_->RootRenderSurface(),
1033 active_tree_->background_color(), unoccluded_screen_space_region); 1033 active_tree_->background_color(), unoccluded_screen_space_region);
1034 } 1034 }
1035 1035
1036 RemoveRenderPasses(frame); 1036 RemoveRenderPasses(frame);
1037 renderer_->DecideRenderPassAllocationsForFrame(frame->render_passes); 1037 // If we're making a frame to draw, it better have at least one render pass.
1038 DCHECK(!frame->render_passes.empty());
1038 1039
1039 if (have_copy_request) { 1040 if (have_copy_request) {
1040 // Any copy requests left in the tree are not going to get serviced, and 1041 // Any copy requests left in the tree are not going to get serviced, and
1041 // should be aborted. 1042 // should be aborted.
1042 active_tree()->property_trees()->effect_tree.ClearCopyRequests(); 1043 active_tree()->property_trees()->effect_tree.ClearCopyRequests();
1043 1044
1044 // Draw properties depend on copy requests. 1045 // Draw properties depend on copy requests.
1045 active_tree()->set_needs_update_draw_properties(); 1046 active_tree()->set_needs_update_draw_properties();
1046 } 1047 }
1047 1048
1048 // If we're making a frame to draw, it better have at least one render pass.
1049 DCHECK(!frame->render_passes.empty());
1050
1051 if (active_tree_->has_ever_been_drawn()) { 1049 if (active_tree_->has_ever_been_drawn()) {
1052 UMA_HISTOGRAM_COUNTS_100( 1050 UMA_HISTOGRAM_COUNTS_100(
1053 "Compositing.RenderPass.AppendQuadData.NumMissingTiles", 1051 "Compositing.RenderPass.AppendQuadData.NumMissingTiles",
1054 num_missing_tiles); 1052 num_missing_tiles);
1055 UMA_HISTOGRAM_COUNTS_100( 1053 UMA_HISTOGRAM_COUNTS_100(
1056 "Compositing.RenderPass.AppendQuadData.NumIncompleteTiles", 1054 "Compositing.RenderPass.AppendQuadData.NumIncompleteTiles",
1057 num_incomplete_tiles); 1055 num_incomplete_tiles);
1058 UMA_HISTOGRAM_COUNTS( 1056 UMA_HISTOGRAM_COUNTS(
1059 "Compositing.RenderPass.AppendQuadData." 1057 "Compositing.RenderPass.AppendQuadData."
1060 "CheckerboardedNoRecordingContentArea", 1058 "CheckerboardedNoRecordingContentArea",
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 1533
1536 void LayerTreeHostImpl::DidReceiveTextureInUseResponses( 1534 void LayerTreeHostImpl::DidReceiveTextureInUseResponses(
1537 const gpu::TextureInUseResponses& responses) { 1535 const gpu::TextureInUseResponses& responses) {
1538 NOTREACHED(); 1536 NOTREACHED();
1539 } 1537 }
1540 1538
1541 void LayerTreeHostImpl::ReclaimResources( 1539 void LayerTreeHostImpl::ReclaimResources(
1542 const ReturnedResourceArray& resources) { 1540 const ReturnedResourceArray& resources) {
1543 // TODO(piman): We may need to do some validation on this ack before 1541 // TODO(piman): We may need to do some validation on this ack before
1544 // processing it. 1542 // processing it.
1545 if (renderer_) 1543 if (resource_provider_)
1546 renderer_->ReclaimResources(resources); 1544 resource_provider_->ReceiveReturnsFromParent(resources);
1547 1545
1548 // In OOM, we now might be able to release more resources that were held 1546 // In OOM, we now might be able to release more resources that were held
1549 // because they were exported. 1547 // because they were exported.
1550 if (resource_pool_) { 1548 if (resource_pool_) {
1551 if (resource_pool_->memory_usage_bytes()) { 1549 if (resource_pool_->memory_usage_bytes()) {
1552 const size_t kMegabyte = 1024 * 1024; 1550 const size_t kMegabyte = 1024 * 1024;
1553 1551
1554 // This is a good time to log memory usage. A chunk of work has just 1552 // This is a good time to log memory usage. A chunk of work has just
1555 // completed but none of the memory used for that work has likely been 1553 // completed but none of the memory used for that work has likely been
1556 // freed. 1554 // freed.
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1712 1710
1713 // Because the contents of the HUD depend on everything else in the frame, the 1711 // Because the contents of the HUD depend on everything else in the frame, the
1714 // contents of its texture are updated as the last thing before the frame is 1712 // contents of its texture are updated as the last thing before the frame is
1715 // drawn. 1713 // drawn.
1716 if (active_tree_->hud_layer()) { 1714 if (active_tree_->hud_layer()) {
1717 TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture"); 1715 TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture");
1718 active_tree_->hud_layer()->UpdateHudTexture(draw_mode, 1716 active_tree_->hud_layer()->UpdateHudTexture(draw_mode,
1719 resource_provider_.get()); 1717 resource_provider_.get());
1720 } 1718 }
1721 1719
1722 renderer_->DrawFrame(&frame->render_passes, 1720 renderer_->DrawFrame(&frame->render_passes);
1723 active_tree_->device_scale_factor(), gfx::ColorSpace(),
1724 DeviceViewport(), DeviceViewport());
1725 // The render passes should be consumed by the renderer. 1721 // The render passes should be consumed by the renderer.
1726 DCHECK(frame->render_passes.empty()); 1722 DCHECK(frame->render_passes.empty());
1727 1723
1728 // The next frame should start by assuming nothing has changed, and changes 1724 // The next frame should start by assuming nothing has changed, and changes
1729 // are noted as they occur. 1725 // are noted as they occur.
1730 // TODO(boliu): If we did a temporary software renderer frame, propogate the 1726 // TODO(boliu): If we did a temporary software renderer frame, propogate the
1731 // damage forward to the next frame. 1727 // damage forward to the next frame.
1732 for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) { 1728 for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) {
1733 (*frame->render_surface_layer_list)[i] 1729 (*frame->render_surface_layer_list)[i]
1734 ->render_surface() 1730 ->render_surface()
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
2151 if (recycle_tree_) 2147 if (recycle_tree_)
2152 recycle_tree_->RecreateResources(); 2148 recycle_tree_->RecreateResources();
2153 } 2149 }
2154 2150
2155 void LayerTreeHostImpl::CreateAndSetRenderer() { 2151 void LayerTreeHostImpl::CreateAndSetRenderer() {
2156 DCHECK(!renderer_); 2152 DCHECK(!renderer_);
2157 DCHECK(output_surface_); 2153 DCHECK(output_surface_);
2158 DCHECK(resource_provider_); 2154 DCHECK(resource_provider_);
2159 2155
2160 DCHECK(output_surface_->capabilities().delegated_rendering); 2156 DCHECK(output_surface_->capabilities().delegated_rendering);
2161 renderer_ = base::MakeUnique<DelegatingRenderer>( 2157 renderer_ = base::MakeUnique<DelegatingRenderer>(output_surface_,
2162 &settings_.renderer_settings, output_surface_, resource_provider_.get()); 2158 resource_provider_.get());
2163 renderer_->SetVisible(visible_);
2164 SetFullViewportDamage(); 2159 SetFullViewportDamage();
2165 2160
2166 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be 2161 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be
2167 // initialized to get max texture size. Also, after releasing resources, 2162 // initialized to get max texture size. Also, after releasing resources,
2168 // trees need another update to generate new ones. 2163 // trees need another update to generate new ones.
2169 active_tree_->set_needs_update_draw_properties(); 2164 active_tree_->set_needs_update_draw_properties();
2170 if (pending_tree_) 2165 if (pending_tree_)
2171 pending_tree_->set_needs_update_draw_properties(); 2166 pending_tree_->set_needs_update_draw_properties();
2172 client_->UpdateRendererCapabilitiesOnImplThread(); 2167 client_->UpdateRendererCapabilitiesOnImplThread();
2173 } 2168 }
(...skipping 1889 matching lines...) Expand 10 before | Expand all | Expand 10 after
4063 return task_runner_provider_->HasImplThread(); 4058 return task_runner_provider_->HasImplThread();
4064 } 4059 }
4065 4060
4066 bool LayerTreeHostImpl::CommitToActiveTree() const { 4061 bool LayerTreeHostImpl::CommitToActiveTree() const {
4067 // In single threaded mode we skip the pending tree and commit directly to the 4062 // In single threaded mode we skip the pending tree and commit directly to the
4068 // active tree. 4063 // active tree.
4069 return !task_runner_provider_->HasImplThread(); 4064 return !task_runner_provider_->HasImplThread();
4070 } 4065 }
4071 4066
4072 } // namespace cc 4067 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698