0

The FPS counter displays the framerate in the compositor's HUD layer. This change allows for toggling the FPS counter without using the '--show-fps-counter' command-line flag.

WebKit side: https://bugs.webkit.org/show_bug.cgi?id=99660

BUG=154754

Review URL: https://chromiumcodereview.appspot.com/11189037

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166233 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
egraether@chromium.org
2012-11-06 18:28:24 +00:00
parent dfb6123c0b
commit 7a573a4e70
8 changed files with 54 additions and 21 deletions

@ -19,8 +19,8 @@ scoped_refptr<HeadsUpDisplayLayer> HeadsUpDisplayLayer::create()
HeadsUpDisplayLayer::HeadsUpDisplayLayer() HeadsUpDisplayLayer::HeadsUpDisplayLayer()
: Layer() : Layer()
, m_showFPSCounter(false)
{ {
setBounds(gfx::Size(256, 128)); setBounds(gfx::Size(256, 128));
} }
@ -56,6 +56,12 @@ void HeadsUpDisplayLayer::setFontAtlas(scoped_ptr<FontAtlas> fontAtlas)
setNeedsCommit(); setNeedsCommit();
} }
void HeadsUpDisplayLayer::setShowFPSCounter(bool show)
{
m_showFPSCounter = show;
setNeedsCommit();
}
scoped_ptr<LayerImpl> HeadsUpDisplayLayer::createLayerImpl() scoped_ptr<LayerImpl> HeadsUpDisplayLayer::createLayerImpl()
{ {
return HeadsUpDisplayLayerImpl::create(m_layerId).PassAs<LayerImpl>(); return HeadsUpDisplayLayerImpl::create(m_layerId).PassAs<LayerImpl>();
@ -65,11 +71,11 @@ void HeadsUpDisplayLayer::pushPropertiesTo(LayerImpl* layerImpl)
{ {
Layer::pushPropertiesTo(layerImpl); Layer::pushPropertiesTo(layerImpl);
if (!m_fontAtlas.get())
return;
HeadsUpDisplayLayerImpl* hudLayerImpl = static_cast<HeadsUpDisplayLayerImpl*>(layerImpl); HeadsUpDisplayLayerImpl* hudLayerImpl = static_cast<HeadsUpDisplayLayerImpl*>(layerImpl);
hudLayerImpl->setFontAtlas(m_fontAtlas.Pass()); hudLayerImpl->setShowFPSCounter(m_showFPSCounter);
if (m_fontAtlas.get())
hudLayerImpl->setFontAtlas(m_fontAtlas.Pass());
} }
} // namespace cc } // namespace cc

@ -19,6 +19,7 @@ public:
virtual bool drawsContent() const OVERRIDE; virtual bool drawsContent() const OVERRIDE;
void setFontAtlas(scoped_ptr<FontAtlas>); void setFontAtlas(scoped_ptr<FontAtlas>);
void setShowFPSCounter(bool);
virtual scoped_ptr<LayerImpl> createLayerImpl() OVERRIDE; virtual scoped_ptr<LayerImpl> createLayerImpl() OVERRIDE;
virtual void pushPropertiesTo(LayerImpl*) OVERRIDE; virtual void pushPropertiesTo(LayerImpl*) OVERRIDE;
@ -30,6 +31,7 @@ private:
virtual ~HeadsUpDisplayLayer(); virtual ~HeadsUpDisplayLayer();
scoped_ptr<FontAtlas> m_fontAtlas; scoped_ptr<FontAtlas> m_fontAtlas;
bool m_showFPSCounter;
}; };
} // namespace cc } // namespace cc

@ -46,6 +46,7 @@ HeadsUpDisplayLayerImpl::HeadsUpDisplayLayerImpl(int id)
: LayerImpl(id) : LayerImpl(id)
, m_averageFPS(0) , m_averageFPS(0)
, m_stdDeviation(0) , m_stdDeviation(0)
, m_showFPSCounter(false)
{ {
} }
@ -58,6 +59,11 @@ void HeadsUpDisplayLayerImpl::setFontAtlas(scoped_ptr<FontAtlas> fontAtlas)
m_fontAtlas = fontAtlas.Pass(); m_fontAtlas = fontAtlas.Pass();
} }
void HeadsUpDisplayLayerImpl::setShowFPSCounter(bool show)
{
m_showFPSCounter = show;
}
void HeadsUpDisplayLayerImpl::willDraw(ResourceProvider* resourceProvider) void HeadsUpDisplayLayerImpl::willDraw(ResourceProvider* resourceProvider)
{ {
LayerImpl::willDraw(resourceProvider); LayerImpl::willDraw(resourceProvider);
@ -148,7 +154,7 @@ void HeadsUpDisplayLayerImpl::drawHudContents(SkCanvas* canvas)
int platformLayerTreeTop = 0; int platformLayerTreeTop = 0;
if (settings.showFPSCounter) if (m_showFPSCounter)
platformLayerTreeTop = drawFPSCounter(canvas, layerTreeHostImpl()->fpsCounter()); platformLayerTreeTop = drawFPSCounter(canvas, layerTreeHostImpl()->fpsCounter());
if (settings.showPlatformLayerTree && m_fontAtlas.get()) { if (settings.showPlatformLayerTree && m_fontAtlas.get()) {

@ -31,6 +31,7 @@ public:
virtual ~HeadsUpDisplayLayerImpl(); virtual ~HeadsUpDisplayLayerImpl();
void setFontAtlas(scoped_ptr<FontAtlas>); void setFontAtlas(scoped_ptr<FontAtlas>);
void setShowFPSCounter(bool);
virtual void willDraw(ResourceProvider*) OVERRIDE; virtual void willDraw(ResourceProvider*) OVERRIDE;
virtual void appendQuads(QuadSink&, AppendQuadsData&) OVERRIDE; virtual void appendQuads(QuadSink&, AppendQuadsData&) OVERRIDE;
@ -60,6 +61,8 @@ private:
double m_stdDeviation; double m_stdDeviation;
base::TimeTicks textUpdateTime; base::TimeTicks textUpdateTime;
bool m_showFPSCounter;
}; };
} // namespace cc } // namespace cc

@ -39,7 +39,6 @@ bool LayerTreeHost::s_needsFilterContext = false;
LayerTreeSettings::LayerTreeSettings() LayerTreeSettings::LayerTreeSettings()
: acceleratePainting(false) : acceleratePainting(false)
, showFPSCounter(false)
, showPlatformLayerTree(false) , showPlatformLayerTree(false)
, showPaintRects(false) , showPaintRects(false)
, showPropertyChangedRects(false) , showPropertyChangedRects(false)
@ -280,25 +279,33 @@ void LayerTreeHost::finishCommitOnImplThread(LayerTreeHostImpl* hostImpl)
m_commitNumber++; m_commitNumber++;
} }
void LayerTreeHost::createHUDLayerIfNeeded()
{
if (!m_hudLayer)
m_hudLayer = HeadsUpDisplayLayer::create();
}
void LayerTreeHost::setShowFPSCounter(bool show)
{
createHUDLayerIfNeeded();
m_hudLayer->setShowFPSCounter(show);
}
void LayerTreeHost::setFontAtlas(scoped_ptr<FontAtlas> fontAtlas) void LayerTreeHost::setFontAtlas(scoped_ptr<FontAtlas> fontAtlas)
{ {
m_fontAtlas = fontAtlas.Pass(); createHUDLayerIfNeeded();
setNeedsCommit(); m_hudLayer->setFontAtlas(fontAtlas.Pass());
} }
void LayerTreeHost::willCommit() void LayerTreeHost::willCommit()
{ {
m_client->willCommit(); m_client->willCommit();
if (m_rootLayer && m_settings.showDebugInfo()) {
if (!m_hudLayer)
m_hudLayer = HeadsUpDisplayLayer::create();
if (m_fontAtlas.get()) if (m_settings.showDebugInfo())
m_hudLayer->setFontAtlas(m_fontAtlas.Pass()); createHUDLayerIfNeeded();
if (!m_hudLayer->parent()) if (m_rootLayer && m_hudLayer && !m_hudLayer->parent())
m_rootLayer->addChild(m_hudLayer); m_rootLayer->addChild(m_hudLayer);
}
} }
void LayerTreeHost::commitComplete() void LayerTreeHost::commitComplete()

@ -55,7 +55,6 @@ struct CC_EXPORT LayerTreeSettings {
~LayerTreeSettings(); ~LayerTreeSettings();
bool acceleratePainting; bool acceleratePainting;
bool showFPSCounter;
bool showPlatformLayerTree; bool showPlatformLayerTree;
bool showPaintRects; bool showPaintRects;
bool showPropertyChangedRects; bool showPropertyChangedRects;
@ -70,7 +69,7 @@ struct CC_EXPORT LayerTreeSettings {
gfx::Size maxUntiledLayerSize; gfx::Size maxUntiledLayerSize;
gfx::Size minimumOcclusionTrackingSize; gfx::Size minimumOcclusionTrackingSize;
bool showDebugInfo() const { return showPlatformLayerTree || showFPSCounter || showDebugRects(); } bool showDebugInfo() const { return showPlatformLayerTree || showDebugRects(); }
bool showDebugRects() const { return showPaintRects || showPropertyChangedRects || showSurfaceDamageRects || showScreenSpaceRects || showReplicaScreenSpaceRects || showOccludingRects; } bool showDebugRects() const { return showPaintRects || showPropertyChangedRects || showSurfaceDamageRects || showScreenSpaceRects || showReplicaScreenSpaceRects || showOccludingRects; }
}; };
@ -208,6 +207,7 @@ public:
void setDeviceScaleFactor(float); void setDeviceScaleFactor(float);
float deviceScaleFactor() const { return m_deviceScaleFactor; } float deviceScaleFactor() const { return m_deviceScaleFactor; }
void setShowFPSCounter(bool show);
void setFontAtlas(scoped_ptr<FontAtlas>); void setFontAtlas(scoped_ptr<FontAtlas>);
HeadsUpDisplayLayer* hudLayer() const { return m_hudLayer.get(); } HeadsUpDisplayLayer* hudLayer() const { return m_hudLayer.get(); }
@ -237,6 +237,8 @@ private:
bool animateLayersRecursive(Layer* current, base::TimeTicks time); bool animateLayersRecursive(Layer* current, base::TimeTicks time);
void setAnimationEventsRecursive(const AnimationEventsVector&, Layer*, base::Time wallClockTime); void setAnimationEventsRecursive(const AnimationEventsVector&, Layer*, base::Time wallClockTime);
void createHUDLayerIfNeeded();
bool m_animating; bool m_animating;
bool m_needsAnimateLayers; bool m_needsAnimateLayers;
@ -255,7 +257,6 @@ private:
scoped_refptr<Layer> m_rootLayer; scoped_refptr<Layer> m_rootLayer;
scoped_refptr<HeadsUpDisplayLayer> m_hudLayer; scoped_refptr<HeadsUpDisplayLayer> m_hudLayer;
scoped_ptr<FontAtlas> m_fontAtlas;
scoped_ptr<PrioritizedTextureManager> m_contentsTextureManager; scoped_ptr<PrioritizedTextureManager> m_contentsTextureManager;
scoped_ptr<PrioritizedTexture> m_surfaceMemoryPlaceholder; scoped_ptr<PrioritizedTexture> m_surfaceMemoryPlaceholder;

@ -45,7 +45,6 @@ bool WebLayerTreeViewImpl::initialize(const WebLayerTreeView::Settings& webSetti
{ {
LayerTreeSettings settings; LayerTreeSettings settings;
settings.acceleratePainting = webSettings.acceleratePainting; settings.acceleratePainting = webSettings.acceleratePainting;
settings.showFPSCounter = webSettings.showFPSCounter;
settings.showPlatformLayerTree = webSettings.showPlatformLayerTree; settings.showPlatformLayerTree = webSettings.showPlatformLayerTree;
settings.showPaintRects = webSettings.showPaintRects; settings.showPaintRects = webSettings.showPaintRects;
settings.renderVSyncEnabled = webSettings.renderVSyncEnabled; settings.renderVSyncEnabled = webSettings.renderVSyncEnabled;
@ -55,6 +54,9 @@ bool WebLayerTreeViewImpl::initialize(const WebLayerTreeView::Settings& webSetti
m_layerTreeHost = LayerTreeHost::create(this, settings); m_layerTreeHost = LayerTreeHost::create(this, settings);
if (!m_layerTreeHost.get()) if (!m_layerTreeHost.get())
return false; return false;
if (webSettings.showFPSCounter)
setShowFPSCounter(true);
return true; return true;
} }
@ -192,6 +194,11 @@ void WebLayerTreeViewImpl::renderingStats(WebRenderingStats& stats) const
stats.numMainThreadScrolls = ccStats.numMainThreadScrolls; stats.numMainThreadScrolls = ccStats.numMainThreadScrolls;
} }
void WebLayerTreeViewImpl::setShowFPSCounter(bool show)
{
m_layerTreeHost->setShowFPSCounter(show);
}
void WebLayerTreeViewImpl::setFontAtlas(SkBitmap bitmap, WebRect asciiToWebRectTable[128], int fontHeight) { void WebLayerTreeViewImpl::setFontAtlas(SkBitmap bitmap, WebRect asciiToWebRectTable[128], int fontHeight) {
setFontAtlas(asciiToWebRectTable, bitmap, fontHeight); setFontAtlas(asciiToWebRectTable, bitmap, fontHeight);
} }

@ -49,6 +49,7 @@ public:
virtual void finishAllRendering() OVERRIDE; virtual void finishAllRendering() OVERRIDE;
virtual void setDeferCommits(bool deferCommits) OVERRIDE; virtual void setDeferCommits(bool deferCommits) OVERRIDE;
virtual void renderingStats(WebRenderingStats&) const OVERRIDE; virtual void renderingStats(WebRenderingStats&) const OVERRIDE;
virtual void setShowFPSCounter(bool show);
virtual void setFontAtlas(SkBitmap, WebRect asciiToRectTable[128], int fontHeight); virtual void setFontAtlas(SkBitmap, WebRect asciiToRectTable[128], int fontHeight);
virtual void setFontAtlas(WebRect asciiToRectTable[128], const SkBitmap&, int fontHeight); virtual void setFontAtlas(WebRect asciiToRectTable[128], const SkBitmap&, int fontHeight);
virtual void loseCompositorContext(int numTimes) OVERRIDE; virtual void loseCompositorContext(int numTimes) OVERRIDE;