return layer.release();
}
-static void appendQuads(CCQuadList& quadList, CCTiledLayerImpl* layer, CCOcclusionTrackerImpl& occlusionTracker)
+static void appendQuads(CCQuadList& quadList, Vector<OwnPtr<CCSharedQuadState> >& sharedStateList, CCTiledLayerImpl* layer, CCOcclusionTrackerImpl& occlusionTracker)
{
CCQuadCuller quadCuller(quadList, layer, &occlusionTracker);
OwnPtr<CCSharedQuadState> sharedQuadState = layer->createSharedQuadState();
layer->appendQuads(quadCuller, sharedQuadState.get());
+ sharedStateList.append(sharedQuadState.release());
}
#define DECLARE_AND_INITIALIZE_TEST_QUADS \
DebugScopedSetImplThread impl; \
CCQuadList quadList; \
+ Vector<OwnPtr<CCSharedQuadState> > sharedStateList; \
TransformationMatrix childTransform; \
IntSize rootSize = IntSize(300, 300); \
IntRect rootRect = IntRect(IntPoint(), rootSize); \
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 9u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 0.9, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 40000, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 40000, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
IntRect quadVisibleRect1 = quadList[5].get()->quadVisibleRect();
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 2u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 2u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 9u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, childOpaqueRect);
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 30000, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, childOpaqueRect);
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 25000, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, false, childOpaqueRect);
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 30000, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(childTransform, childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 13u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 12u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(200, 100, 100, 100));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 1u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(100, 100, 100, 100));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 1u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(50, 50, 200, 200));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 9u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(TransformationMatrix(), childRect, 1.0, true, IntRect());
TestCCOcclusionTrackerImpl occlusionTracker(IntRect(500, 500, 100, 100));
- appendQuads(quadList, childLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, childLayer.get(), occlusionTracker);
occlusionTracker.markOccludedBehindLayer(childLayer.get());
- appendQuads(quadList, rootLayer.get(), occlusionTracker);
+ appendQuads(quadList, sharedStateList, rootLayer.get(), occlusionTracker);
EXPECT_EQ(quadList.size(), 0u);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1);
EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);