Log Message
[chromium] Changes to overdraw metrics to allow upload tracking https://bugs.webkit.org/show_bug.cgi?id=81222
Patch by Dana Jansens <[email protected]> on 2012-03-16 Reviewed by Adrienne Walker. Source/WebCore: Stick CCOverdrawMetrics into CCOcclusionTracker, so that it is available everywhere that culling/drawing/painting is going on. Then we can stop plumbing a metrics object through CCQuadCuller. Rename the CCOverdrawMetrics "painting" stuff to "uploading" as this will measure texture uploads rather than pixels painted in main memory. Covered by existing tests. * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::calculateRenderPasses): * platform/graphics/chromium/cc/CCOcclusionTracker.cpp: (WebCore::::CCOcclusionTrackerBase): * platform/graphics/chromium/cc/CCOcclusionTracker.h: (CCOcclusionTrackerBase): (WebCore::CCOcclusionTrackerBase::overdrawMetrics): * platform/graphics/chromium/cc/CCOverdrawMetrics.cpp: (WebCore::CCOverdrawMetrics::didCull): (WebCore): (WebCore::CCOverdrawMetrics::didDraw): (WebCore::CCOverdrawMetrics::recordMetrics): (WebCore::CCOverdrawMetrics::recordMetricsInternal): * platform/graphics/chromium/cc/CCOverdrawMetrics.h: (WebCore): (WebCore::CCOverdrawMetrics::create): (CCOverdrawMetrics): * platform/graphics/chromium/cc/CCQuadCuller.cpp: (WebCore::CCQuadCuller::CCQuadCuller): (WebCore::CCQuadCuller::append): * platform/graphics/chromium/cc/CCQuadCuller.h: (CCQuadCuller): * platform/graphics/chromium/cc/CCRenderPass.cpp: (WebCore::CCRenderPass::appendQuadsForLayer): * platform/graphics/chromium/cc/CCRenderPass.h: (WebCore): (CCRenderPass): Source/WebKit/chromium: * tests/CCQuadCullerTest.cpp: (WebCore::appendQuads): (WebCore): (WebCore::TEST): * tests/MockCCQuadCuller.h: (WebCore::MockCCQuadCuller::MockCCQuadCuller):
Modified Paths
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.h
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.h
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h
- trunk/Source/WebKit/chromium/ChangeLog
- trunk/Source/WebKit/chromium/tests/CCQuadCullerTest.cpp
- trunk/Source/WebKit/chromium/tests/MockCCQuadCuller.h
Diff
Modified: trunk/Source/WebCore/ChangeLog (110972 => 110973)
--- trunk/Source/WebCore/ChangeLog 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/ChangeLog 2012-03-16 09:20:30 UTC (rev 110973)
@@ -1,3 +1,47 @@
+2012-03-16 Dana Jansens <[email protected]>
+
+ [chromium] Changes to overdraw metrics to allow upload tracking
+ https://bugs.webkit.org/show_bug.cgi?id=81222
+
+ Reviewed by Adrienne Walker.
+
+ Stick CCOverdrawMetrics into CCOcclusionTracker, so that it is available
+ everywhere that culling/drawing/painting is going on. Then we can stop
+ plumbing a metrics object through CCQuadCuller.
+
+ Rename the CCOverdrawMetrics "painting" stuff to "uploading" as this will
+ measure texture uploads rather than pixels painted in main memory.
+
+ Covered by existing tests.
+
+ * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
+ (WebCore::CCLayerTreeHostImpl::calculateRenderPasses):
+ * platform/graphics/chromium/cc/CCOcclusionTracker.cpp:
+ (WebCore::::CCOcclusionTrackerBase):
+ * platform/graphics/chromium/cc/CCOcclusionTracker.h:
+ (CCOcclusionTrackerBase):
+ (WebCore::CCOcclusionTrackerBase::overdrawMetrics):
+ * platform/graphics/chromium/cc/CCOverdrawMetrics.cpp:
+ (WebCore::CCOverdrawMetrics::didCull):
+ (WebCore):
+ (WebCore::CCOverdrawMetrics::didDraw):
+ (WebCore::CCOverdrawMetrics::recordMetrics):
+ (WebCore::CCOverdrawMetrics::recordMetricsInternal):
+ * platform/graphics/chromium/cc/CCOverdrawMetrics.h:
+ (WebCore):
+ (WebCore::CCOverdrawMetrics::create):
+ (CCOverdrawMetrics):
+ * platform/graphics/chromium/cc/CCQuadCuller.cpp:
+ (WebCore::CCQuadCuller::CCQuadCuller):
+ (WebCore::CCQuadCuller::append):
+ * platform/graphics/chromium/cc/CCQuadCuller.h:
+ (CCQuadCuller):
+ * platform/graphics/chromium/cc/CCRenderPass.cpp:
+ (WebCore::CCRenderPass::appendQuadsForLayer):
+ * platform/graphics/chromium/cc/CCRenderPass.h:
+ (WebCore):
+ (CCRenderPass):
+
2012-03-16 Greg Billock <[email protected]>
Add TransferList IDL modifier, with support in V8 code gen.
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp 2012-03-16 09:20:30 UTC (rev 110973)
@@ -37,7 +37,6 @@
#include "cc/CCLayerIterator.h"
#include "cc/CCLayerTreeHost.h"
#include "cc/CCLayerTreeHostCommon.h"
-#include "cc/CCOverdrawMetrics.h"
#include "cc/CCPageScaleAnimation.h"
#include "cc/CCRenderSurfaceDrawQuad.h"
#include "cc/CCThreadTask.h"
@@ -271,9 +270,6 @@
passes.append(pass.release());
}
- // FIXME: compute overdraw metrics only occasionally, not every frame.
- CCOverdrawMetrics overdrawMetrics;
-
IntRect scissorRect;
if (layerRendererCapabilities().usingPartialSwap)
scissorRect = enclosingIntRect(m_rootDamageRect);
@@ -307,11 +303,11 @@
}
it->willDraw(m_layerRenderer.get());
- pass->appendQuadsForLayer(*it, &occlusionTracker, &overdrawMetrics);
+ pass->appendQuadsForLayer(*it, &occlusionTracker);
occlusionTracker.markOccludedBehindLayer(*it);
}
- overdrawMetrics.recordMetrics(this);
+ occlusionTracker.overdrawMetrics().recordMetrics(this);
}
void CCLayerTreeHostImpl::animateLayersRecursive(CCLayerImpl* current, double monotonicTime, double wallClockTime, CCAnimationEventsVector& events, bool& didAnimate, bool& needsAnimateLayers)
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp 2012-03-16 09:20:30 UTC (rev 110973)
@@ -42,6 +42,7 @@
CCOcclusionTrackerBase<LayerType, RenderSurfaceType>::CCOcclusionTrackerBase(IntRect scissorRectInScreenSpace)
: m_scissorRectInScreenSpace(scissorRectInScreenSpace)
, m_surfaceDamageClient(0)
+ , m_overdrawMetrics(CCOverdrawMetrics::create())
, m_usePaintTracking(true) // FIXME: Remove this when paint tracking is on for paint culling.
{
}
@@ -50,6 +51,7 @@
CCOcclusionTrackerBase<LayerType, RenderSurfaceType>::CCOcclusionTrackerBase(IntRect scissorRectInScreenSpace, const DamageClientType* surfaceDamageClient)
: m_scissorRectInScreenSpace(scissorRectInScreenSpace)
, m_surfaceDamageClient(surfaceDamageClient)
+ , m_overdrawMetrics(CCOverdrawMetrics::create())
, m_usePaintTracking(true) // FIXME: Remove this when paint tracking is on for paint culling.
{
}
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h 2012-03-16 09:20:30 UTC (rev 110973)
@@ -29,6 +29,7 @@
#include "FloatQuad.h"
#include "Region.h"
#include "TransformationMatrix.h"
+#include "cc/CCOverdrawMetrics.h"
namespace WebCore {
class CCLayerImpl;
@@ -77,6 +78,9 @@
// Gives an unoccluded sub-rect of |contentRect| in the content space of the layer. Used when considering occlusion for a layer that paints/draws something.
IntRect unoccludedContentRect(const LayerType*, const IntRect& contentRect) const;
+ // Report operations for recording overdraw metrics.
+ CCOverdrawMetrics& overdrawMetrics() const { return *m_overdrawMetrics.get(); }
+
// FIXME: Remove this when paint tracking is on for paint culling.
void setUsePaintTracking(bool use) { m_usePaintTracking = use; }
@@ -108,6 +112,7 @@
private:
IntRect m_scissorRectInScreenSpace;
const DamageClientType* m_surfaceDamageClient;
+ OwnPtr<CCOverdrawMetrics> m_overdrawMetrics;
bool m_usePaintTracking; // FIXME: Remove this when paint tracking is on for paint culling.
};
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp 2012-03-16 09:20:30 UTC (rev 110973)
@@ -58,20 +58,26 @@
wedgeProduct(quad.p4(), quad.p1())));
}
-void CCOverdrawMetrics::didDraw(const TransformationMatrix& transformToTarget, const IntRect& beforeCullRect, const IntRect& afterCullRect, const IntRect& opaqueRect)
+void CCOverdrawMetrics::didCull(const TransformationMatrix& transformToTarget, const IntRect& beforeCullRect, const IntRect& afterCullRect)
{
float beforeCullArea = quadArea(transformToTarget.mapQuad(FloatQuad(beforeCullRect)));
float afterCullArea = quadArea(transformToTarget.mapQuad(FloatQuad(afterCullRect)));
+
+ m_pixelsCulled += beforeCullArea - afterCullArea;
+}
+
+void CCOverdrawMetrics::didDraw(const TransformationMatrix& transformToTarget, const IntRect& afterCullRect, const IntRect& opaqueRect)
+{
+ float afterCullArea = quadArea(transformToTarget.mapQuad(FloatQuad(afterCullRect)));
float afterCullOpaqueArea = quadArea(transformToTarget.mapQuad(FloatQuad(intersection(opaqueRect, afterCullRect))));
m_pixelsDrawnOpaque += afterCullOpaqueArea;
m_pixelsDrawnTranslucent += afterCullArea - afterCullOpaqueArea;
- m_pixelsCulled += beforeCullArea - afterCullArea;
}
void CCOverdrawMetrics::recordMetrics(const CCLayerTreeHost* layerTreeHost) const
{
- recordMetricsInternal<CCLayerTreeHost>(PAINTING, layerTreeHost);
+ recordMetricsInternal<CCLayerTreeHost>(UPLOADING, layerTreeHost);
}
void CCOverdrawMetrics::recordMetrics(const CCLayerTreeHostImpl* layerTreeHost) const
@@ -97,13 +103,13 @@
opaqueCounterName = "PixelsDrawnOpaque";
translucentCounterName = "PixelsDrawnTranslucent";
break;
- case PAINTING:
- histogramOpaqueName = "Renderer4.paintPixelCountOpaque";
- histogramTranslucentName = "Renderer4.paintPixelCountTranslucent";
- histogramCulledName = "Renderer4.paintPixelCountCulled";
- cullCounterName = "PaintPixelsCulled";
- opaqueCounterName = "PixelsPaintedOpaque";
- translucentCounterName = "PixelsPaintedTranslucent";
+ case UPLOADING:
+ histogramOpaqueName = "Renderer4.uploadPixelCountOpaque";
+ histogramTranslucentName = "Renderer4.uploadPixelCountTranslucent";
+ histogramCulledName = "Renderer4.uploadPixelCountCulled";
+ cullCounterName = "UploadPixelsCulled";
+ opaqueCounterName = "PixelsUploadedOpaque";
+ translucentCounterName = "PixelsUploadedTranslucent";
break;
}
ASSERT(histogramOpaqueName);
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.h (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.h 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.h 2012-03-16 09:20:30 UTC (rev 110973)
@@ -25,17 +25,21 @@
#ifndef CCOverdrawMetrics_h
#define CCOverdrawMetrics_h
+#include <wtf/PassOwnPtr.h>
+
namespace WebCore {
class IntRect;
class TransformationMatrix;
class CCLayerTreeHost;
class CCLayerTreeHostImpl;
+// FIXME: compute overdraw metrics only occasionally, not every frame.
class CCOverdrawMetrics {
public:
- CCOverdrawMetrics();
+ static PassOwnPtr<CCOverdrawMetrics> create() { return adoptPtr(new CCOverdrawMetrics()); }
- void didDraw(const TransformationMatrix& transformToTarget, const IntRect& beforeCullRect, const IntRect& afterCullRect, const IntRect& opaqueRect);
+ void didCull(const TransformationMatrix& transformToTarget, const IntRect& beforeCullRect, const IntRect& afterCullRect);
+ void didDraw(const TransformationMatrix& transformToTarget, const IntRect& afterCullRect, const IntRect& opaqueRect);
void recordMetrics(const CCLayerTreeHost*) const;
void recordMetrics(const CCLayerTreeHostImpl*) const;
@@ -46,9 +50,11 @@
float pixelsCulled() const { return m_pixelsCulled; }
private:
+ CCOverdrawMetrics();
+
enum MetricsType {
DRAWING,
- PAINTING
+ UPLOADING
};
template<typename LayerTreeHostType>
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp 2012-03-16 09:20:30 UTC (rev 110973)
@@ -40,11 +40,10 @@
namespace WebCore {
-CCQuadCuller::CCQuadCuller(CCQuadList& quadList, CCLayerImpl* layer, CCOcclusionTrackerImpl* occlusionTracker, CCOverdrawMetrics* overdrawMetrics)
+CCQuadCuller::CCQuadCuller(CCQuadList& quadList, CCLayerImpl* layer, CCOcclusionTrackerImpl* occlusionTracker)
: m_quadList(quadList)
, m_layer(layer)
, m_occlusionTracker(occlusionTracker)
- , m_overdrawMetrics(overdrawMetrics)
{
}
@@ -56,8 +55,8 @@
if (keepQuad)
drawQuad->setQuadVisibleRect(culledRect);
- if (m_overdrawMetrics)
- m_overdrawMetrics->didDraw(drawQuad->quadTransform(), drawQuad->quadRect(), culledRect, drawQuad->opaqueRect());
+ m_occlusionTracker->overdrawMetrics().didCull(drawQuad->quadTransform(), drawQuad->quadRect(), culledRect);
+ m_occlusionTracker->overdrawMetrics().didDraw(drawQuad->quadTransform(), culledRect, drawQuad->opaqueRect());
// Release the quad after we're done using it.
if (keepQuad)
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.h (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.h 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.h 2012-03-16 09:20:30 UTC (rev 110973)
@@ -36,7 +36,7 @@
public:
// Passing 0 for CCOverdrawCounts* is valid, and disable the extra computation
// done to estimate over draw statistics.
- CCQuadCuller(CCQuadList&, CCLayerImpl*, CCOcclusionTrackerImpl*, CCOverdrawMetrics*);
+ CCQuadCuller(CCQuadList&, CCLayerImpl*, CCOcclusionTrackerImpl*);
virtual void append(PassOwnPtr<CCDrawQuad> passDrawQuad);
@@ -44,7 +44,6 @@
CCQuadList& m_quadList;
CCLayerImpl* m_layer;
CCOcclusionTrackerImpl* m_occlusionTracker;
- CCOverdrawMetrics* m_overdrawMetrics;
};
}
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp 2012-03-16 09:20:30 UTC (rev 110973)
@@ -46,9 +46,9 @@
ASSERT(m_targetSurface);
}
-void CCRenderPass::appendQuadsForLayer(CCLayerImpl* layer, CCOcclusionTrackerImpl* occlusionTracker, CCOverdrawMetrics* overdrawMetrics)
+void CCRenderPass::appendQuadsForLayer(CCLayerImpl* layer, CCOcclusionTrackerImpl* occlusionTracker)
{
- CCQuadCuller quadCuller(m_quadList, layer, occlusionTracker, overdrawMetrics);
+ CCQuadCuller quadCuller(m_quadList, layer, occlusionTracker);
OwnPtr<CCSharedQuadState> sharedQuadState = layer->createSharedQuadState();
layer->appendQuads(quadCuller, sharedQuadState.get());
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h (110972 => 110973)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h 2012-03-16 09:20:30 UTC (rev 110973)
@@ -34,7 +34,6 @@
namespace WebCore {
class CCLayerImpl;
-class CCOverdrawMetrics;
class CCRenderSurface;
class CCSharedQuadState;
@@ -55,7 +54,7 @@
public:
static PassOwnPtr<CCRenderPass> create(CCRenderSurface*);
- void appendQuadsForLayer(CCLayerImpl*, CCOcclusionTrackerImpl*, CCOverdrawMetrics*);
+ void appendQuadsForLayer(CCLayerImpl*, CCOcclusionTrackerImpl*);
void appendQuadsForRenderSurfaceLayer(CCLayerImpl*);
const CCQuadList& quadList() const { return m_quadList; }
Modified: trunk/Source/WebKit/chromium/ChangeLog (110972 => 110973)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-03-16 09:20:30 UTC (rev 110973)
@@ -1,5 +1,19 @@
2012-03-16 Dana Jansens <[email protected]>
+ [chromium] Changes to overdraw metrics to allow upload tracking
+ https://bugs.webkit.org/show_bug.cgi?id=81222
+
+ Reviewed by Adrienne Walker.
+
+ * tests/CCQuadCullerTest.cpp:
+ (WebCore::appendQuads):
+ (WebCore):
+ (WebCore::TEST):
+ * tests/MockCCQuadCuller.h:
+ (WebCore::MockCCQuadCuller::MockCCQuadCuller):
+
+2012-03-16 Dana Jansens <[email protected]>
+
[chromium] Quads that become fully opaque after culling should not use blending
https://bugs.webkit.org/show_bug.cgi?id=81235
Modified: trunk/Source/WebKit/chromium/tests/CCQuadCullerTest.cpp (110972 => 110973)
--- trunk/Source/WebKit/chromium/tests/CCQuadCullerTest.cpp 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebKit/chromium/tests/CCQuadCullerTest.cpp 2012-03-16 09:20:30 UTC (rev 110973)
@@ -78,9 +78,9 @@
return layer.release();
}
-static void appendQuads(CCQuadList& quadList, CCTiledLayerImpl* layer, CCOcclusionTrackerImpl& occlusionTracker, CCOverdrawMetrics& overdraw)
+static void appendQuads(CCQuadList& quadList, CCTiledLayerImpl* layer, CCOcclusionTrackerImpl& occlusionTracker)
{
- CCQuadCuller quadCuller(quadList, layer, &occlusionTracker, &overdraw);
+ CCQuadCuller quadCuller(quadList, layer, &occlusionTracker);
OwnPtr<CCSharedQuadState> sharedQuadState = layer->createSharedQuadState();
layer->appendQuads(quadCuller, sharedQuadState.get());
}
@@ -88,7 +88,6 @@
#define DECLARE_AND_INITIALIZE_TEST_QUADS \
DebugScopedSetImplThread impl; \
CCQuadList quadList; \
- CCOverdrawMetrics overdraw; \
TransformationMatrix childTransform; \
IntSize rootSize = IntSize(300, 300); \
IntRect rootRect = IntRect(IntPoint(), rootSize); \
@@ -103,12 +102,12 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 130000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 0, 1);
}
TEST(CCQuadCullerTest, verifyCullChildLinesUpTopLeft)
@@ -119,13 +118,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 9u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 90000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 40000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 40000, 1);
}
TEST(CCQuadCullerTest, verifyCullWhenChildOpacityNotOne)
@@ -136,13 +135,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 0.9, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 90000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 40000, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 40000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 0, 1);
}
TEST(CCQuadCullerTest, verifyCullWhenChildOpaqueFlagFalse)
@@ -153,13 +152,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 90000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 40000, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 40000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 0, 1);
}
TEST(CCQuadCullerTest, verifyCullCenterTileOnly)
@@ -172,9 +171,9 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
IntRect quadVisibleRect1 = quadList[5].get()->quadVisibleRect();
@@ -192,9 +191,9 @@
EXPECT_EQ(quadVisibleRect6.height(), 50);
EXPECT_EQ(quadVisibleRect6.y(), 250);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 100000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 30000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 30000, 1);
}
TEST(CCQuadCullerTest, verifyCullCenterTileNonIntegralSize1)
@@ -215,14 +214,14 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 2u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 20363, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 0, 1);
}
TEST(CCQuadCullerTest, verifyCullCenterTileNonIntegralSize2)
@@ -243,14 +242,14 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 2u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 19643, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 0, 1);
}
TEST(CCQuadCullerTest, verifyCullChildLinesUpBottomRight)
@@ -263,13 +262,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 9u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 90000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 40000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 40000, 1);
}
TEST(CCQuadCullerTest, verifyCullSubRegion)
@@ -283,13 +282,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, childOpaqueRect);
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 90000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 30000, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 10000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 30000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 10000, 1);
}
TEST(CCQuadCullerTest, verifyCullSubRegion2)
@@ -303,13 +302,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, childOpaqueRect);
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 90000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 25000, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 15000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 25000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 15000, 1);
}
TEST(CCQuadCullerTest, verifyCullSubRegionCheckOvercull)
@@ -323,13 +322,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, childOpaqueRect);
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 90000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 30000, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 10000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 30000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 10000, 1);
}
TEST(CCQuadCullerTest, verifyNonAxisAlignedQuadsDontOcclude)
@@ -343,13 +342,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 130000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 0, 1);
}
// This test requires some explanation: here we are rotating the quads to be culled.
@@ -369,13 +368,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 100600, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 29400, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 29400, 1);
}
TEST(CCQuadCullerTest, verifyCullOutsideScissorOverTile)
@@ -386,13 +385,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(200, 100, 100, 100));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 1u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 10000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 120000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 120000, 1);
}
TEST(CCQuadCullerTest, verifyCullOutsideScissorOverCulledTile)
@@ -403,13 +402,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(100, 100, 100, 100));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 1u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 10000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 120000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 120000, 1);
}
TEST(CCQuadCullerTest, verifyCullOutsideScissorOverPartialTiles)
@@ -420,13 +419,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(50, 50, 200, 200));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 9u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 40000, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 90000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 90000, 1);
}
TEST(CCQuadCullerTest, verifyCullOutsideScissorOverNoTiles)
@@ -437,13 +436,13 @@
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(500, 500, 100, 100));
- appendQuads(quadList, childLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker, overdraw);
+ appendQuads(quadList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 0u);
- EXPECT_NEAR(overdraw.pixelsDrawnOpaque(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsDrawnTranslucent(), 0, 1);
- EXPECT_NEAR(overdraw.pixelsCulled(), 130000, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
+ EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulled(), 130000, 1);
}
} // namespace
Modified: trunk/Source/WebKit/chromium/tests/MockCCQuadCuller.h (110972 => 110973)
--- trunk/Source/WebKit/chromium/tests/MockCCQuadCuller.h 2012-03-16 08:56:16 UTC (rev 110972)
+++ trunk/Source/WebKit/chromium/tests/MockCCQuadCuller.h 2012-03-16 09:20:30 UTC (rev 110973)
@@ -35,12 +35,12 @@
class MockCCQuadCuller : public WebCore::CCQuadCuller {
public:
MockCCQuadCuller()
- : CCQuadCuller(m_quadListStorage, 0, 0, 0)
+ : CCQuadCuller(m_quadListStorage, 0, 0)
, m_activeQuadList(m_quadListStorage)
{ }
explicit MockCCQuadCuller(CCQuadList& externalQuadList)
- : CCQuadCuller(externalQuadList, 0, 0, 0)
+ : CCQuadCuller(externalQuadList, 0, 0)
, m_activeQuadList(externalQuadList)
{ }
_______________________________________________ webkit-changes mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes
