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()
: Layer()
, m_showFPSCounter(false)
{
setBounds(gfx::Size(256, 128));
}
@ -56,6 +56,12 @@ void HeadsUpDisplayLayer::setFontAtlas(scoped_ptr<FontAtlas> fontAtlas)
setNeedsCommit();
}
void HeadsUpDisplayLayer::setShowFPSCounter(bool show)
{
m_showFPSCounter = show;
setNeedsCommit();
}
scoped_ptr<LayerImpl> HeadsUpDisplayLayer::createLayerImpl()
{
return HeadsUpDisplayLayerImpl::create(m_layerId).PassAs<LayerImpl>();
@ -65,11 +71,11 @@ void HeadsUpDisplayLayer::pushPropertiesTo(LayerImpl* layerImpl)
{
Layer::pushPropertiesTo(layerImpl);
if (!m_fontAtlas.get())
return;
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

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

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

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

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

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

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

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