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

Side by Side Diff: cc/layer_tree_host.cc

Issue 11414017: cc: handling debug settings in new LayerTreeDebugState structure (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase to 170216 Created 8 years 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/layer_tree_host.h ('k') | cc/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/layer_tree_host.h" 5 #include "cc/layer_tree_host.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "cc/font_atlas.h" 10 #include "cc/font_atlas.h"
(...skipping 18 matching lines...) Expand all
29 using namespace std; 29 using namespace std;
30 30
31 namespace { 31 namespace {
32 static int numLayerTreeInstances; 32 static int numLayerTreeInstances;
33 } 33 }
34 34
35 namespace cc { 35 namespace cc {
36 36
37 bool LayerTreeHost::s_needsFilterContext = false; 37 bool LayerTreeHost::s_needsFilterContext = false;
38 38
39 LayerTreeSettings::LayerTreeSettings() 39 LayerTreeDebugState::LayerTreeDebugState()
40 : acceleratePainting(false) 40 : showFPSCounter(false)
41 , implSidePainting(false) 41 , showPlatformLayerTree(false)
42 , showDebugBorders(false) 42 , showDebugBorders(false)
43 , showPlatformLayerTree(false)
44 , showPaintRects(false) 43 , showPaintRects(false)
45 , showPropertyChangedRects(false) 44 , showPropertyChangedRects(false)
46 , showSurfaceDamageRects(false) 45 , showSurfaceDamageRects(false)
47 , showScreenSpaceRects(false) 46 , showScreenSpaceRects(false)
48 , showReplicaScreenSpaceRects(false) 47 , showReplicaScreenSpaceRects(false)
49 , showOccludingRects(false) 48 , showOccludingRects(false)
50 , showNonOccludingRects(false) 49 , showNonOccludingRects(false)
50 {
51 }
52
53 LayerTreeDebugState::~LayerTreeDebugState()
54 {
55 }
56
57 bool LayerTreeDebugState::showHudInfo() const
58 {
59 return showFPSCounter || showPlatformLayerTree || showHudRects();
60 }
61
62 bool LayerTreeDebugState::showHudRects() const
63 {
64 return showPaintRects || showPropertyChangedRects || showSurfaceDamageRects || showScreenSpaceRects || showReplicaScreenSpaceRects || showOccludingRects || showNonOccludingRects;
65 }
66
67 bool LayerTreeDebugState::equal(const LayerTreeDebugState& a, const LayerTreeDeb ugState& b)
68 {
69 return memcmp(&a, &b, sizeof(LayerTreeDebugState)) == 0;
70 }
71
72 LayerTreeDebugState LayerTreeDebugState::unite(const LayerTreeDebugState& a, con st LayerTreeDebugState& b)
73 {
74 LayerTreeDebugState r(a);
75
76 r.showFPSCounter |= b.showFPSCounter;
77 r.showPlatformLayerTree |= b.showPlatformLayerTree;
78 r.showDebugBorders |= b.showDebugBorders;
79
80 r.showPaintRects |= b.showPaintRects;
81 r.showPropertyChangedRects |= b.showPropertyChangedRects;
82 r.showSurfaceDamageRects |= b.showSurfaceDamageRects;
83 r.showScreenSpaceRects |= b.showScreenSpaceRects;
84 r.showReplicaScreenSpaceRects |= b.showReplicaScreenSpaceRects;
85 r.showOccludingRects |= b.showOccludingRects;
86 r.showNonOccludingRects |= b.showNonOccludingRects;
87
88 return r;
89 }
90
91 LayerTreeSettings::LayerTreeSettings()
92 : acceleratePainting(false)
93 , implSidePainting(false)
51 , renderVSyncEnabled(true) 94 , renderVSyncEnabled(true)
52 , perTilePaintingEnabled(false) 95 , perTilePaintingEnabled(false)
53 , partialSwapEnabled(false) 96 , partialSwapEnabled(false)
54 , acceleratedAnimationEnabled(true) 97 , acceleratedAnimationEnabled(true)
55 , pageScalePinchZoomEnabled(false) 98 , pageScalePinchZoomEnabled(false)
56 , backgroundColorInsteadOfCheckerboard(false) 99 , backgroundColorInsteadOfCheckerboard(false)
57 , showOverdrawInTracing(false) 100 , showOverdrawInTracing(false)
58 , refreshRate(0) 101 , refreshRate(0)
59 , maxPartialTextureUpdates(std::numeric_limits<size_t>::max()) 102 , maxPartialTextureUpdates(std::numeric_limits<size_t>::max())
60 , defaultTileSize(gfx::Size(256, 256)) 103 , defaultTileSize(gfx::Size(256, 256))
61 , maxUntiledLayerSize(gfx::Size(512, 512)) 104 , maxUntiledLayerSize(gfx::Size(512, 512))
62 , minimumOcclusionTrackingSize(gfx::Size(160, 160)) 105 , minimumOcclusionTrackingSize(gfx::Size(160, 160))
63 { 106 {
64 // TODO(danakj): Move this to chromium when we don't go through the WebKit A PI anymore. 107 // TODO(danakj): Move this to chromium when we don't go through the WebKit A PI anymore.
65 showPropertyChangedRects = CommandLine::ForCurrentProcess()->HasSwitch(cc::s witches::kShowPropertyChangedRects);
66 showSurfaceDamageRects = CommandLine::ForCurrentProcess()->HasSwitch(cc::swi tches::kShowSurfaceDamageRects);
67 showScreenSpaceRects = CommandLine::ForCurrentProcess()->HasSwitch(cc::switc hes::kShowScreenSpaceRects);
68 showReplicaScreenSpaceRects = CommandLine::ForCurrentProcess()->HasSwitch(cc ::switches::kShowReplicaScreenSpaceRects);
69 showOccludingRects = CommandLine::ForCurrentProcess()->HasSwitch(cc::switche s::kShowOccludingRects);
70 showNonOccludingRects = CommandLine::ForCurrentProcess()->HasSwitch(cc::swit ches::kShowNonOccludingRects);
71 partialSwapEnabled = CommandLine::ForCurrentProcess()->HasSwitch(switches::k EnablePartialSwap); 108 partialSwapEnabled = CommandLine::ForCurrentProcess()->HasSwitch(switches::k EnablePartialSwap);
72 backgroundColorInsteadOfCheckerboard = CommandLine::ForCurrentProcess()->Has Switch(switches::kBackgroundColorInsteadOfCheckerboard); 109 backgroundColorInsteadOfCheckerboard = CommandLine::ForCurrentProcess()->Has Switch(switches::kBackgroundColorInsteadOfCheckerboard);
73 showOverdrawInTracing = CommandLine::ForCurrentProcess()->HasSwitch(switches ::kTraceOverdraw); 110 showOverdrawInTracing = CommandLine::ForCurrentProcess()->HasSwitch(switches ::kTraceOverdraw);
111
112 initialDebugState.showPropertyChangedRects = CommandLine::ForCurrentProcess( )->HasSwitch(cc::switches::kShowPropertyChangedRects);
113 initialDebugState.showSurfaceDamageRects = CommandLine::ForCurrentProcess()- >HasSwitch(cc::switches::kShowSurfaceDamageRects);
114 initialDebugState.showScreenSpaceRects = CommandLine::ForCurrentProcess()->H asSwitch(cc::switches::kShowScreenSpaceRects);
115 initialDebugState.showReplicaScreenSpaceRects = CommandLine::ForCurrentProce ss()->HasSwitch(cc::switches::kShowReplicaScreenSpaceRects);
116 initialDebugState.showOccludingRects = CommandLine::ForCurrentProcess()->Has Switch(cc::switches::kShowOccludingRects);
117 initialDebugState.showNonOccludingRects = CommandLine::ForCurrentProcess()-> HasSwitch(cc::switches::kShowNonOccludingRects);
74 } 118 }
75 119
76 LayerTreeSettings::~LayerTreeSettings() 120 LayerTreeSettings::~LayerTreeSettings()
77 { 121 {
78 } 122 }
79 123
80 RendererCapabilities::RendererCapabilities() 124 RendererCapabilities::RendererCapabilities()
81 : bestTextureFormat(0) 125 : bestTextureFormat(0)
82 , contextHasCachedFrontBuffer(false) 126 , contextHasCachedFrontBuffer(false)
83 , usingPartialSwap(false) 127 , usingPartialSwap(false)
(...skipping 28 matching lines...) Expand all
112 : m_animating(false) 156 : m_animating(false)
113 , m_needsAnimateLayers(false) 157 , m_needsAnimateLayers(false)
114 , m_client(client) 158 , m_client(client)
115 , m_commitNumber(0) 159 , m_commitNumber(0)
116 , m_renderingStats() 160 , m_renderingStats()
117 , m_rendererInitialized(false) 161 , m_rendererInitialized(false)
118 , m_contextLost(false) 162 , m_contextLost(false)
119 , m_numTimesRecreateShouldFail(0) 163 , m_numTimesRecreateShouldFail(0)
120 , m_numFailedRecreateAttempts(0) 164 , m_numFailedRecreateAttempts(0)
121 , m_settings(settings) 165 , m_settings(settings)
166 , m_debugState(settings.initialDebugState)
122 , m_deviceScaleFactor(1) 167 , m_deviceScaleFactor(1)
123 , m_visible(true) 168 , m_visible(true)
124 , m_pageScaleFactor(1) 169 , m_pageScaleFactor(1)
125 , m_minPageScaleFactor(1) 170 , m_minPageScaleFactor(1)
126 , m_maxPageScaleFactor(1) 171 , m_maxPageScaleFactor(1)
127 , m_triggerIdleUpdates(true) 172 , m_triggerIdleUpdates(true)
128 , m_backgroundColor(SK_ColorWHITE) 173 , m_backgroundColor(SK_ColorWHITE)
129 , m_hasTransparentBackground(false) 174 , m_hasTransparentBackground(false)
130 , m_partialTextureUpdateRequests(0) 175 , m_partialTextureUpdateRequests(0)
131 { 176 {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 // to visit their controllers. 327 // to visit their controllers.
283 if (rootLayer() && m_needsAnimateLayers) 328 if (rootLayer() && m_needsAnimateLayers)
284 hostImpl->setNeedsAnimateLayers(); 329 hostImpl->setNeedsAnimateLayers();
285 330
286 hostImpl->setSourceFrameNumber(commitNumber()); 331 hostImpl->setSourceFrameNumber(commitNumber());
287 hostImpl->setViewportSize(layoutViewportSize(), deviceViewportSize()); 332 hostImpl->setViewportSize(layoutViewportSize(), deviceViewportSize());
288 hostImpl->setDeviceScaleFactor(deviceScaleFactor()); 333 hostImpl->setDeviceScaleFactor(deviceScaleFactor());
289 hostImpl->setPageScaleFactorAndLimits(m_pageScaleFactor, m_minPageScaleFacto r, m_maxPageScaleFactor); 334 hostImpl->setPageScaleFactorAndLimits(m_pageScaleFactor, m_minPageScaleFacto r, m_maxPageScaleFactor);
290 hostImpl->setBackgroundColor(m_backgroundColor); 335 hostImpl->setBackgroundColor(m_backgroundColor);
291 hostImpl->setHasTransparentBackground(m_hasTransparentBackground); 336 hostImpl->setHasTransparentBackground(m_hasTransparentBackground);
337 hostImpl->setDebugState(m_debugState);
292 338
293 m_commitNumber++; 339 m_commitNumber++;
294 } 340 }
295 341
296 void LayerTreeHost::createHUDLayerIfNeeded() 342 void LayerTreeHost::createHUDLayerIfNeeded()
297 { 343 {
298 if (!m_hudLayer) 344 if (!m_hudLayer)
299 m_hudLayer = HeadsUpDisplayLayer::create(); 345 m_hudLayer = HeadsUpDisplayLayer::create();
300 } 346 }
301 347
302 void LayerTreeHost::setShowFPSCounter(bool show)
303 {
304 createHUDLayerIfNeeded();
305 m_hudLayer->setShowFPSCounter(show);
306 }
307
308 void LayerTreeHost::setFontAtlas(scoped_ptr<FontAtlas> fontAtlas) 348 void LayerTreeHost::setFontAtlas(scoped_ptr<FontAtlas> fontAtlas)
309 { 349 {
310 createHUDLayerIfNeeded(); 350 createHUDLayerIfNeeded();
311 m_hudLayer->setFontAtlas(fontAtlas.Pass()); 351 m_hudLayer->setFontAtlas(fontAtlas.Pass());
312 } 352 }
313 353
314 void LayerTreeHost::willCommit() 354 void LayerTreeHost::willCommit()
315 { 355 {
316 m_client->willCommit(); 356 m_client->willCommit();
317 357
318 if (m_settings.showDebugInfo()) 358 if (m_debugState.showHudInfo())
319 createHUDLayerIfNeeded(); 359 createHUDLayerIfNeeded();
320 360
321 if (m_rootLayer && m_hudLayer && !m_hudLayer->parent()) 361 if (m_rootLayer && m_hudLayer && !m_hudLayer->parent())
322 m_rootLayer->addChild(m_hudLayer); 362 m_rootLayer->addChild(m_hudLayer);
323 } 363 }
324 364
325 void LayerTreeHost::commitComplete() 365 void LayerTreeHost::commitComplete()
326 { 366 {
327 m_client->didCommit(); 367 m_client->didCommit();
328 } 368 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 m_rootLayer = rootLayer; 475 m_rootLayer = rootLayer;
436 if (m_rootLayer) 476 if (m_rootLayer)
437 m_rootLayer->setLayerTreeHost(this); 477 m_rootLayer->setLayerTreeHost(this);
438 478
439 if (m_hudLayer) 479 if (m_hudLayer)
440 m_hudLayer->removeFromParent(); 480 m_hudLayer->removeFromParent();
441 481
442 setNeedsCommit(); 482 setNeedsCommit();
443 } 483 }
444 484
485 void LayerTreeHost::setDebugState(const LayerTreeDebugState& debugState)
486 {
487 LayerTreeDebugState newDebugState = LayerTreeDebugState::unite(m_settings.in itialDebugState, debugState);
488
489 if (LayerTreeDebugState::equal(m_debugState, newDebugState))
490 return;
491
492 m_debugState = newDebugState;
493 setNeedsCommit();
494 }
495
445 void LayerTreeHost::setViewportSize(const gfx::Size& layoutViewportSize, const g fx::Size& deviceViewportSize) 496 void LayerTreeHost::setViewportSize(const gfx::Size& layoutViewportSize, const g fx::Size& deviceViewportSize)
446 { 497 {
447 if (layoutViewportSize == m_layoutViewportSize && deviceViewportSize == m_de viceViewportSize) 498 if (layoutViewportSize == m_layoutViewportSize && deviceViewportSize == m_de viceViewportSize)
448 return; 499 return;
449 500
450 m_layoutViewportSize = layoutViewportSize; 501 m_layoutViewportSize = layoutViewportSize;
451 m_deviceViewportSize = deviceViewportSize; 502 m_deviceViewportSize = deviceViewportSize;
452 503
453 setNeedsCommit(); 504 setNeedsCommit();
454 } 505 }
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 else 908 else
858 layer->notifyAnimationFinished(wallClockTime.ToDoubleT()); 909 layer->notifyAnimationFinished(wallClockTime.ToDoubleT());
859 } 910 }
860 } 911 }
861 912
862 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex) 913 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex)
863 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime); 914 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime);
864 } 915 }
865 916
866 } // namespace cc 917 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_tree_host.h ('k') | cc/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698