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:
@ -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;
|
||||||
|
Reference in New Issue
Block a user