Add a stat to the smoothness benchmark for avg number of missing tiles.
BUG=None Review URL: https://chromiumcodereview.appspot.com/11478016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171845 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@ -5,6 +5,7 @@
|
||||
#ifndef CC_APPEND_QUADS_DATA_H_
|
||||
#define CC_APPEND_QUADS_DATA_H_
|
||||
|
||||
#include "base/basictypes.h"
|
||||
#include "cc/render_pass.h"
|
||||
|
||||
namespace cc {
|
||||
@ -12,14 +13,14 @@ namespace cc {
|
||||
struct AppendQuadsData {
|
||||
AppendQuadsData()
|
||||
: hadOcclusionFromOutsideTargetSurface(false)
|
||||
, hadMissingTiles(false)
|
||||
, numMissingTiles(0)
|
||||
, renderPassId(0, 0)
|
||||
{
|
||||
}
|
||||
|
||||
explicit AppendQuadsData(RenderPass::Id renderPassId)
|
||||
: hadOcclusionFromOutsideTargetSurface(false)
|
||||
, hadMissingTiles(false)
|
||||
, numMissingTiles(0)
|
||||
, renderPassId(renderPassId)
|
||||
{
|
||||
}
|
||||
@ -27,7 +28,7 @@ struct AppendQuadsData {
|
||||
// Set by the QuadCuller.
|
||||
bool hadOcclusionFromOutsideTargetSurface;
|
||||
// Set by the layer appending quads.
|
||||
bool hadMissingTiles;
|
||||
int64 numMissingTiles;
|
||||
// Given to the layer appending quads.
|
||||
const RenderPass::Id renderPassId;
|
||||
};
|
||||
|
@ -222,6 +222,7 @@ LayerTreeHostImpl::LayerTreeHostImpl(const LayerTreeSettings& settings, LayerTre
|
||||
, m_numImplThreadScrolls(0)
|
||||
, m_numMainThreadScrolls(0)
|
||||
, m_cumulativeNumLayersDrawn(0)
|
||||
, m_cumulativeNumMissingTiles(0)
|
||||
{
|
||||
DCHECK(m_proxy->isImplThread());
|
||||
didVisibilityChange(this, m_visible);
|
||||
@ -557,7 +558,8 @@ bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
|
||||
if (appendQuadsData.hadOcclusionFromOutsideTargetSurface)
|
||||
targetRenderPass->has_occlusion_from_outside_target_surface = true;
|
||||
|
||||
if (appendQuadsData.hadMissingTiles) {
|
||||
if (appendQuadsData.numMissingTiles) {
|
||||
m_cumulativeNumMissingTiles += appendQuadsData.numMissingTiles;
|
||||
bool layerHasAnimatingTransform = it->screenSpaceTransformIsAnimating() || it->drawTransformIsAnimating();
|
||||
if (layerHasAnimatingTransform)
|
||||
drawFrame = false;
|
||||
@ -1573,6 +1575,7 @@ void LayerTreeHostImpl::renderingStats(RenderingStats* stats) const
|
||||
stats->numImplThreadScrolls = m_numImplThreadScrolls;
|
||||
stats->numMainThreadScrolls = m_numMainThreadScrolls;
|
||||
stats->numLayersDrawn = m_cumulativeNumLayersDrawn;
|
||||
stats->numMissingTiles = m_cumulativeNumMissingTiles;
|
||||
|
||||
if (m_tileManager)
|
||||
m_tileManager->renderingStats(stats);
|
||||
|
@ -381,10 +381,12 @@ private:
|
||||
scoped_ptr<FrameRateCounter> m_fpsCounter;
|
||||
scoped_ptr<DebugRectHistory> m_debugRectHistory;
|
||||
|
||||
size_t m_numImplThreadScrolls;
|
||||
size_t m_numMainThreadScrolls;
|
||||
int64 m_numImplThreadScrolls;
|
||||
int64 m_numMainThreadScrolls;
|
||||
|
||||
size_t m_cumulativeNumLayersDrawn;
|
||||
int64 m_cumulativeNumLayersDrawn;
|
||||
|
||||
int64 m_cumulativeNumMissingTiles;
|
||||
|
||||
AnimationControllerSet m_activeAnimationControllers;
|
||||
|
||||
|
@ -87,13 +87,13 @@ void PictureLayerImpl::appendQuads(QuadSink& quadSink,
|
||||
scoped_ptr<CheckerboardDrawQuad> quad = CheckerboardDrawQuad::Create();
|
||||
SkColor color = DebugColors::DefaultCheckerboardColor();
|
||||
quad->SetNew(sharedQuadState, geometry_rect, color);
|
||||
appendQuadsData.hadMissingTiles |=
|
||||
quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData);
|
||||
if (quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData))
|
||||
appendQuadsData.numMissingTiles++;
|
||||
} else {
|
||||
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
|
||||
quad->SetNew(sharedQuadState, geometry_rect, backgroundColor());
|
||||
appendQuadsData.hadMissingTiles |=
|
||||
quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData);
|
||||
if (quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData))
|
||||
appendQuadsData.numMissingTiles++;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -18,7 +18,8 @@ RenderingStats::RenderingStats()
|
||||
totalPixelsRasterized(0),
|
||||
numImplThreadScrolls(0),
|
||||
numMainThreadScrolls(0),
|
||||
numLayersDrawn(0) {
|
||||
numLayersDrawn(0),
|
||||
numMissingTiles(0) {
|
||||
}
|
||||
|
||||
void RenderingStats::EnumerateFields(Enumerator* enumerator) const {
|
||||
@ -35,6 +36,7 @@ void RenderingStats::EnumerateFields(Enumerator* enumerator) const {
|
||||
enumerator->AddInt64("numImplThreadScrolls", numImplThreadScrolls);
|
||||
enumerator->AddInt64("numMainThreadScrolls", numMainThreadScrolls);
|
||||
enumerator->AddInt64("numLayersDrawn", numLayersDrawn);
|
||||
enumerator->AddInt64("numMissingTiles", numMissingTiles);
|
||||
}
|
||||
|
||||
} // namespace cc
|
||||
|
@ -25,6 +25,7 @@ struct CC_EXPORT RenderingStats {
|
||||
int64 numImplThreadScrolls;
|
||||
int64 numMainThreadScrolls;
|
||||
int64 numLayersDrawn;
|
||||
int64 numMissingTiles;
|
||||
// Note: when adding new members, please remember to update enumerateFields
|
||||
// in rendering_stats.cc.
|
||||
|
||||
|
@ -160,11 +160,13 @@ void TiledLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQuad
|
||||
|
||||
scoped_ptr<CheckerboardDrawQuad> checkerboardQuad = CheckerboardDrawQuad::Create();
|
||||
checkerboardQuad->SetNew(sharedQuadState, tileRect, checkerColor);
|
||||
appendQuadsData.hadMissingTiles |= quadSink.append(checkerboardQuad.PassAs<DrawQuad>(), appendQuadsData);
|
||||
if (quadSink.append(checkerboardQuad.PassAs<DrawQuad>(), appendQuadsData))
|
||||
appendQuadsData.numMissingTiles++;
|
||||
} else {
|
||||
scoped_ptr<SolidColorDrawQuad> solidColorQuad = SolidColorDrawQuad::Create();
|
||||
solidColorQuad->SetNew(sharedQuadState, tileRect, backgroundColor());
|
||||
appendQuadsData.hadMissingTiles |= quadSink.append(solidColorQuad.PassAs<DrawQuad>(), appendQuadsData);
|
||||
if (quadSink.append(solidColorQuad.PassAs<DrawQuad>(), appendQuadsData))
|
||||
appendQuadsData.numMissingTiles++;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ TEST_F(TiledLayerImplTest, checkerboarding)
|
||||
AppendQuadsData data;
|
||||
layer->appendQuads(quadCuller, data);
|
||||
EXPECT_EQ(quadCuller.quadList().size(), 4u);
|
||||
EXPECT_FALSE(data.hadMissingTiles);
|
||||
EXPECT_EQ(0u, data.numMissingTiles);
|
||||
|
||||
for (size_t i = 0; i < quadCuller.quadList().size(); ++i)
|
||||
EXPECT_EQ(quadCuller.quadList()[i]->material, DrawQuad::TILED_CONTENT);
|
||||
@ -152,7 +152,7 @@ TEST_F(TiledLayerImplTest, checkerboarding)
|
||||
MockQuadCuller quadCuller;
|
||||
AppendQuadsData data;
|
||||
layer->appendQuads(quadCuller, data);
|
||||
EXPECT_TRUE(data.hadMissingTiles);
|
||||
EXPECT_LT(0u, data.numMissingTiles);
|
||||
EXPECT_EQ(quadCuller.quadList().size(), 4u);
|
||||
for (size_t i = 0; i < quadCuller.quadList().size(); ++i)
|
||||
EXPECT_NE(quadCuller.quadList()[i]->material, DrawQuad::TILED_CONTENT);
|
||||
|
@ -37,6 +37,10 @@ def CalcScrollResults(rendering_stats_deltas, results):
|
||||
rendering_stats_deltas.get('numLayersDrawn', 0) /
|
||||
float(num_frames_sent_to_screen))
|
||||
|
||||
num_missing_tiles = (
|
||||
rendering_stats_deltas.get('numMissingTiles', 0) /
|
||||
float(num_frames_sent_to_screen))
|
||||
|
||||
results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3))
|
||||
results.Add('dropped_percent', '%', round(dropped_percent * 100, 1),
|
||||
data_type='unimportant')
|
||||
@ -45,6 +49,8 @@ def CalcScrollResults(rendering_stats_deltas, results):
|
||||
data_type='unimportant')
|
||||
results.Add('average_num_layers_drawn', '', round(num_layers, 1),
|
||||
data_type='unimportant')
|
||||
results.Add('average_num_missing_tiles', '', round(num_missing_tiles, 1),
|
||||
data_type='unimportant')
|
||||
|
||||
def CalcPaintingResults(rendering_stats_deltas, results):
|
||||
totalPaintTime = rendering_stats_deltas.get('totalPaintTimeInSeconds', 0)
|
||||
|
Reference in New Issue
Block a user