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

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

Issue 1194623003: cc: Remove contents_texture_manager from LayerTreeHost(Impl) and proxy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: contentstexturemanager: rebase Created 5 years, 6 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.h ('k') | cc/trees/layer_tree_host_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.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <stack> 8 #include <stack>
9 #include <string> 9 #include <string>
10 10
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 // made a contract with our animation controllers that the registrar 187 // made a contract with our animation controllers that the registrar
188 // will outlive them, and we must make good. 188 // will outlive them, and we must make good.
189 root_layer_ = NULL; 189 root_layer_ = NULL;
190 } 190 }
191 } 191 }
192 192
193 void LayerTreeHost::SetLayerTreeHostClientReady() { 193 void LayerTreeHost::SetLayerTreeHostClientReady() {
194 proxy_->SetLayerTreeHostClientReady(); 194 proxy_->SetLayerTreeHostClientReady();
195 } 195 }
196 196
197 void LayerTreeHost::DeleteContentsTexturesOnImplThread(
198 ResourceProvider* resource_provider) {
199 DCHECK(proxy_->IsImplThread());
200 if (contents_texture_manager_)
201 contents_texture_manager_->ClearAllMemory(resource_provider);
202 }
203
204 void LayerTreeHost::WillBeginMainFrame() { 197 void LayerTreeHost::WillBeginMainFrame() {
205 devtools_instrumentation::WillBeginMainThreadFrame(id(), 198 devtools_instrumentation::WillBeginMainThreadFrame(id(),
206 source_frame_number()); 199 source_frame_number());
207 client_->WillBeginMainFrame(); 200 client_->WillBeginMainFrame();
208 } 201 }
209 202
210 void LayerTreeHost::DidBeginMainFrame() { 203 void LayerTreeHost::DidBeginMainFrame() {
211 client_->DidBeginMainFrame(); 204 client_->DidBeginMainFrame();
212 } 205 }
213 206
(...skipping 21 matching lines...) Expand all
235 } 228 }
236 229
237 // This function commits the LayerTreeHost to an impl tree. When modifying 230 // This function commits the LayerTreeHost to an impl tree. When modifying
238 // this function, keep in mind that the function *runs* on the impl thread! Any 231 // this function, keep in mind that the function *runs* on the impl thread! Any
239 // code that is logically a main thread operation, e.g. deletion of a Layer, 232 // code that is logically a main thread operation, e.g. deletion of a Layer,
240 // should be delayed until the LayerTreeHost::CommitComplete, which will run 233 // should be delayed until the LayerTreeHost::CommitComplete, which will run
241 // after the commit, but on the main thread. 234 // after the commit, but on the main thread.
242 void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { 235 void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) {
243 DCHECK(proxy_->IsImplThread()); 236 DCHECK(proxy_->IsImplThread());
244 237
245 // If there are linked evicted backings, these backings' resources may be put
246 // into the impl tree, so we can't draw yet. Determine this before clearing
247 // all evicted backings.
248 bool new_impl_tree_has_no_evicted_resources = false;
249 if (contents_texture_manager_) {
250 new_impl_tree_has_no_evicted_resources =
251 !contents_texture_manager_->LinkedEvictedBackingsExist();
252
253 // If the memory limit has been increased since this now-finishing
254 // commit began, and the extra now-available memory would have been used,
255 // then request another commit.
256 if (contents_texture_manager_->MaxMemoryLimitBytes() <
257 host_impl->memory_allocation_limit_bytes() &&
258 contents_texture_manager_->MaxMemoryLimitBytes() <
259 contents_texture_manager_->MaxMemoryNeededBytes()) {
260 host_impl->SetNeedsCommit();
261 }
262
263 host_impl->set_max_memory_needed_bytes(
264 contents_texture_manager_->MaxMemoryNeededBytes());
265
266 contents_texture_manager_->UpdateBackingsState(
267 host_impl->resource_provider());
268 contents_texture_manager_->ReduceMemory(host_impl->resource_provider());
269 }
270
271 bool is_new_trace; 238 bool is_new_trace;
272 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); 239 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
273 if (is_new_trace && 240 if (is_new_trace &&
274 frame_viewer_instrumentation::IsTracingLayerTreeSnapshots() && 241 frame_viewer_instrumentation::IsTracingLayerTreeSnapshots() &&
275 root_layer()) { 242 root_layer()) {
276 LayerTreeHostCommon::CallFunctionForSubtree( 243 LayerTreeHostCommon::CallFunctionForSubtree(
277 root_layer(), [](Layer* layer) { layer->DidBeginTracing(); }); 244 root_layer(), [](Layer* layer) { layer->DidBeginTracing(); });
278 } 245 }
279 246
280 LayerTreeImpl* sync_tree = host_impl->sync_tree(); 247 LayerTreeImpl* sync_tree = host_impl->sync_tree();
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 pending_page_scale_animation_.Pass()); 313 pending_page_scale_animation_.Pass());
347 } 314 }
348 315
349 if (!ui_resource_request_queue_.empty()) { 316 if (!ui_resource_request_queue_.empty()) {
350 sync_tree->set_ui_resource_request_queue(ui_resource_request_queue_); 317 sync_tree->set_ui_resource_request_queue(ui_resource_request_queue_);
351 ui_resource_request_queue_.clear(); 318 ui_resource_request_queue_.clear();
352 } 319 }
353 320
354 DCHECK(!sync_tree->ViewportSizeInvalid()); 321 DCHECK(!sync_tree->ViewportSizeInvalid());
355 322
356 if (new_impl_tree_has_no_evicted_resources) {
357 if (sync_tree->ContentsTexturesPurged())
358 sync_tree->ResetContentsTexturesPurged();
359 }
360
361 sync_tree->set_has_ever_been_drawn(false); 323 sync_tree->set_has_ever_been_drawn(false);
362 324
363 { 325 {
364 TRACE_EVENT0("cc", "LayerTreeHost::PushProperties"); 326 TRACE_EVENT0("cc", "LayerTreeHost::PushProperties");
365 TreeSynchronizer::PushProperties(root_layer(), sync_tree->root_layer()); 327 TreeSynchronizer::PushProperties(root_layer(), sync_tree->root_layer());
366 } 328 }
367 329
368 // This must happen after synchronizing property trees and after push 330 // This must happen after synchronizing property trees and after push
369 // properties, which updates property tree indices. 331 // properties, which updates property tree indices.
370 sync_tree->UpdatePropertyTreeScrollingFromMainThread(); 332 sync_tree->UpdatePropertyTreeScrollingFromMainThread();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 372
411 proxy_->SetOutputSurface(surface.Pass()); 373 proxy_->SetOutputSurface(surface.Pass());
412 } 374 }
413 375
414 void LayerTreeHost::RequestNewOutputSurface() { 376 void LayerTreeHost::RequestNewOutputSurface() {
415 client_->RequestNewOutputSurface(); 377 client_->RequestNewOutputSurface();
416 } 378 }
417 379
418 void LayerTreeHost::DidInitializeOutputSurface() { 380 void LayerTreeHost::DidInitializeOutputSurface() {
419 output_surface_lost_ = false; 381 output_surface_lost_ = false;
420
421 if (!contents_texture_manager_ && !settings_.impl_side_painting) {
422 contents_texture_manager_ =
423 PrioritizedResourceManager::Create(proxy_.get());
424 surface_memory_placeholder_ =
425 contents_texture_manager_->CreateTexture(gfx::Size(), RGBA_8888);
426 }
427
428 if (root_layer()) { 382 if (root_layer()) {
429 LayerTreeHostCommon::CallFunctionForSubtree( 383 LayerTreeHostCommon::CallFunctionForSubtree(
430 root_layer(), [](Layer* layer) { layer->OnOutputSurfaceCreated(); }); 384 root_layer(), [](Layer* layer) { layer->OnOutputSurfaceCreated(); });
431 } 385 }
432
433 client_->DidInitializeOutputSurface(); 386 client_->DidInitializeOutputSurface();
434 } 387 }
435 388
436 void LayerTreeHost::DidFailToInitializeOutputSurface() { 389 void LayerTreeHost::DidFailToInitializeOutputSurface() {
437 DCHECK(output_surface_lost_); 390 DCHECK(output_surface_lost_);
438 client_->DidFailToInitializeOutputSurface(); 391 client_->DidFailToInitializeOutputSurface();
439 } 392 }
440 393
441 scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl( 394 scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl(
442 LayerTreeHostImplClient* client) { 395 LayerTreeHostImplClient* client) {
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 } 1070 }
1118 1071
1119 void LayerTreeHost::RecordFrameTimingEvents( 1072 void LayerTreeHost::RecordFrameTimingEvents(
1120 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events, 1073 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events,
1121 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) { 1074 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) {
1122 client_->RecordFrameTimingEvents(composite_events.Pass(), 1075 client_->RecordFrameTimingEvents(composite_events.Pass(),
1123 main_frame_events.Pass()); 1076 main_frame_events.Pass());
1124 } 1077 }
1125 1078
1126 } // namespace cc 1079 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698