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

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

Issue 23796002: cc: Implement deadine scheduling disabled by default (Closed) Base URL: http://git.chromium.org/chromium/src.git@schedReadback4
Patch Set: Created 7 years, 3 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
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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 rendering_stats_instrumentation)); 162 rendering_stats_instrumentation));
163 } 163 }
164 164
165 LayerTreeHostImpl::LayerTreeHostImpl( 165 LayerTreeHostImpl::LayerTreeHostImpl(
166 const LayerTreeSettings& settings, 166 const LayerTreeSettings& settings,
167 LayerTreeHostImplClient* client, 167 LayerTreeHostImplClient* client,
168 Proxy* proxy, 168 Proxy* proxy,
169 RenderingStatsInstrumentation* rendering_stats_instrumentation) 169 RenderingStatsInstrumentation* rendering_stats_instrumentation)
170 : client_(client), 170 : client_(client),
171 proxy_(proxy), 171 proxy_(proxy),
172 output_surface_lost_(true),
172 input_handler_client_(NULL), 173 input_handler_client_(NULL),
173 did_lock_scrolling_layer_(false), 174 did_lock_scrolling_layer_(false),
174 should_bubble_scrolls_(false), 175 should_bubble_scrolls_(false),
175 wheel_scrolling_(false), 176 wheel_scrolling_(false),
176 manage_tiles_needed_(false), 177 manage_tiles_needed_(false),
177 root_layer_scroll_offset_delegate_(NULL), 178 root_layer_scroll_offset_delegate_(NULL),
178 settings_(settings), 179 settings_(settings),
179 visible_(true), 180 visible_(true),
180 cached_managed_memory_policy_( 181 cached_managed_memory_policy_(
181 PrioritizedResourceManager::DefaultMemoryAllocationLimit(), 182 PrioritizedResourceManager::DefaultMemoryAllocationLimit(),
(...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 bool LayerTreeHostImpl::IsContextLost() { 1341 bool LayerTreeHostImpl::IsContextLost() {
1341 DCHECK(proxy_->IsImplThread()); 1342 DCHECK(proxy_->IsImplThread());
1342 return renderer_ && renderer_->IsContextLost(); 1343 return renderer_ && renderer_->IsContextLost();
1343 } 1344 }
1344 1345
1345 const RendererCapabilities& LayerTreeHostImpl::GetRendererCapabilities() const { 1346 const RendererCapabilities& LayerTreeHostImpl::GetRendererCapabilities() const {
1346 return renderer_->Capabilities(); 1347 return renderer_->Capabilities();
1347 } 1348 }
1348 1349
1349 bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { 1350 bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) {
1350 if (frame.has_no_damage) 1351 if (frame.has_no_damage || output_surface_lost_)
Sami 2013/08/30 13:49:06 Could you explain why we'd need to avoid swapping
brianderson 2013/09/03 22:51:47 This was a change I pulled in from the big patch "
1351 return false; 1352 return false;
1352 renderer_->SwapBuffers(); 1353 renderer_->SwapBuffers();
1353 active_tree_->ClearLatencyInfo(); 1354 active_tree_->ClearLatencyInfo();
1354 return true; 1355 return true;
1355 } 1356 }
1356 1357
1357 void LayerTreeHostImpl::SetNeedsBeginFrame(bool enable) { 1358 void LayerTreeHostImpl::SetNeedsBeginFrame(bool enable) {
1358 if (output_surface_) 1359 if (output_surface_)
1359 output_surface_->SetNeedsBeginFrame(enable); 1360 output_surface_->SetNeedsBeginFrame(enable);
1360 } 1361 }
(...skipping 22 matching lines...) Expand all
1383 } 1384 }
1384 1385
1385 const LayerTreeSettings& LayerTreeHostImpl::Settings() const { 1386 const LayerTreeSettings& LayerTreeHostImpl::Settings() const {
1386 return settings(); 1387 return settings();
1387 } 1388 }
1388 1389
1389 void LayerTreeHostImpl::DidLoseOutputSurface() { 1390 void LayerTreeHostImpl::DidLoseOutputSurface() {
1390 // TODO(jamesr): The renderer_ check is needed to make some of the 1391 // TODO(jamesr): The renderer_ check is needed to make some of the
1391 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or 1392 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or
1392 // important) in production. We should adjust the test to not need this. 1393 // important) in production. We should adjust the test to not need this.
1394 output_surface_lost_ = true;
1393 if (renderer_) 1395 if (renderer_)
1394 client_->DidLoseOutputSurfaceOnImplThread(); 1396 client_->DidLoseOutputSurfaceOnImplThread();
1395 } 1397 }
1396 1398
1397 void LayerTreeHostImpl::Readback(void* pixels, 1399 void LayerTreeHostImpl::Readback(void* pixels,
1398 gfx::Rect rect_in_device_viewport) { 1400 gfx::Rect rect_in_device_viewport) {
1399 DCHECK(renderer_); 1401 DCHECK(renderer_);
1400 renderer_->GetFramebufferPixels(pixels, rect_in_device_viewport); 1402 renderer_->GetFramebufferPixels(pixels, rect_in_device_viewport);
1401 } 1403 }
1402 1404
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 // before we destroy the old resource provider. 1619 // before we destroy the old resource provider.
1618 ReleaseTreeResources(); 1620 ReleaseTreeResources();
1619 if (resource_provider_) 1621 if (resource_provider_)
1620 resource_provider_->DidLoseOutputSurface(); 1622 resource_provider_->DidLoseOutputSurface();
1621 1623
1622 // Note: order is important here. 1624 // Note: order is important here.
1623 renderer_.reset(); 1625 renderer_.reset();
1624 tile_manager_.reset(); 1626 tile_manager_.reset();
1625 resource_provider_.reset(); 1627 resource_provider_.reset();
1626 output_surface_.reset(); 1628 output_surface_.reset();
1629 output_surface_lost_ = true;
1627 1630
1628 if (!output_surface->BindToClient(this)) 1631 if (!output_surface->BindToClient(this))
1629 return false; 1632 return false;
1630 1633
1631 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( 1634 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create(
1632 output_surface.get(), settings_.highp_threshold_min); 1635 output_surface.get(), settings_.highp_threshold_min);
1633 if (!resource_provider) 1636 if (!resource_provider)
1634 return false; 1637 return false;
1635 1638
1636 if (output_surface->capabilities().deferred_gl_initialization) 1639 if (output_surface->capabilities().deferred_gl_initialization)
(...skipping 25 matching lines...) Expand all
1662 } 1665 }
1663 1666
1664 int max_frames_pending = 1667 int max_frames_pending =
1665 output_surface->capabilities().max_frames_pending; 1668 output_surface->capabilities().max_frames_pending;
1666 if (max_frames_pending <= 0) 1669 if (max_frames_pending <= 0)
1667 max_frames_pending = OutputSurface::DEFAULT_MAX_FRAMES_PENDING; 1670 max_frames_pending = OutputSurface::DEFAULT_MAX_FRAMES_PENDING;
1668 output_surface->SetMaxFramesPending(max_frames_pending); 1671 output_surface->SetMaxFramesPending(max_frames_pending);
1669 1672
1670 resource_provider_ = resource_provider.Pass(); 1673 resource_provider_ = resource_provider.Pass();
1671 output_surface_ = output_surface.Pass(); 1674 output_surface_ = output_surface.Pass();
1675 output_surface_lost_ = false;
1672 1676
1673 client_->OnCanDrawStateChanged(CanDraw()); 1677 client_->OnCanDrawStateChanged(CanDraw());
1674 1678
1675 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs 1679 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs
1676 // to be initialized to get max texture size. 1680 // to be initialized to get max texture size.
1677 active_tree_->set_needs_update_draw_properties(); 1681 active_tree_->set_needs_update_draw_properties();
1678 if (pending_tree_) 1682 if (pending_tree_)
1679 pending_tree_->set_needs_update_draw_properties(); 1683 pending_tree_->set_needs_update_draw_properties();
1680 1684
1681 return true; 1685 return true;
(...skipping 895 matching lines...) Expand 10 before | Expand all | Expand 10 after
2577 2581
2578 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource( 2582 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource(
2579 UIResourceId uid) const { 2583 UIResourceId uid) const {
2580 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid); 2584 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid);
2581 if (iter != ui_resource_map_.end()) 2585 if (iter != ui_resource_map_.end())
2582 return iter->second; 2586 return iter->second;
2583 return 0; 2587 return 0;
2584 } 2588 }
2585 2589
2586 } // namespace cc 2590 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698