OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "CCLayerTreeHostImpl.h" | 7 #include "CCLayerTreeHostImpl.h" |
8 | 8 |
9 #include "CCAnimationTestCommon.h" | 9 #include "CCAnimationTestCommon.h" |
10 #include "CCGeometryTestUtils.h" | 10 #include "CCGeometryTestUtils.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 root->setVisibleContentRect(IntRect(0, 0, 10, 10)); | 92 root->setVisibleContentRect(IntRect(0, 0, 10, 10)); |
93 root->setDrawsContent(true); | 93 root->setDrawsContent(true); |
94 myHostImpl->setRootLayer(root.release()); | 94 myHostImpl->setRootLayer(root.release()); |
95 return myHostImpl.release(); | 95 return myHostImpl.release(); |
96 } | 96 } |
97 | 97 |
98 static void expectClearedScrollDeltasRecursive(CCLayerImpl* layer) | 98 static void expectClearedScrollDeltasRecursive(CCLayerImpl* layer) |
99 { | 99 { |
100 ASSERT_EQ(layer->scrollDelta(), IntSize()); | 100 ASSERT_EQ(layer->scrollDelta(), IntSize()); |
101 for (size_t i = 0; i < layer->children().size(); ++i) | 101 for (size_t i = 0; i < layer->children().size(); ++i) |
102 expectClearedScrollDeltasRecursive(layer->children()[i].get()); | 102 expectClearedScrollDeltasRecursive(layer->children()[i]); |
103 } | 103 } |
104 | 104 |
105 static void expectContains(const CCScrollAndScaleSet& scrollInfo, int id, co
nst IntSize& scrollDelta) | 105 static void expectContains(const CCScrollAndScaleSet& scrollInfo, int id, co
nst IntSize& scrollDelta) |
106 { | 106 { |
107 int timesEncountered = 0; | 107 int timesEncountered = 0; |
108 | 108 |
109 for (size_t i = 0; i < scrollInfo.scrolls.size(); ++i) { | 109 for (size_t i = 0; i < scrollInfo.scrolls.size(); ++i) { |
110 if (scrollInfo.scrolls[i].layerId != id) | 110 if (scrollInfo.scrolls[i].layerId != id) |
111 continue; | 111 continue; |
112 EXPECT_EQ(scrollDelta.width(), scrollInfo.scrolls[i].scrollDelta.wid
th()); | 112 EXPECT_EQ(scrollDelta.width(), scrollInfo.scrolls[i].scrollDelta.wid
th()); |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 | 723 |
724 TEST_F(CCLayerTreeHostImplTest, didDrawNotCalledOnHiddenLayer) | 724 TEST_F(CCLayerTreeHostImplTest, didDrawNotCalledOnHiddenLayer) |
725 { | 725 { |
726 // The root layer is always drawn, so run this test on a child layer that | 726 // The root layer is always drawn, so run this test on a child layer that |
727 // will be masked out by the root layer's bounds. | 727 // will be masked out by the root layer's bounds. |
728 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); | 728 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); |
729 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa
yer()); | 729 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa
yer()); |
730 root->setMasksToBounds(true); | 730 root->setMasksToBounds(true); |
731 | 731 |
732 root->addChild(DidDrawCheckLayer::create(2)); | 732 root->addChild(DidDrawCheckLayer::create(2)); |
733 DidDrawCheckLayer* layer = static_cast<DidDrawCheckLayer*>(root->children()[
0].get()); | 733 DidDrawCheckLayer* layer = static_cast<DidDrawCheckLayer*>(root->children()[
0]); |
734 // Ensure visibleContentRect for layer is empty | 734 // Ensure visibleContentRect for layer is empty |
735 layer->setPosition(FloatPoint(100, 100)); | 735 layer->setPosition(FloatPoint(100, 100)); |
736 layer->setBounds(IntSize(10, 10)); | 736 layer->setBounds(IntSize(10, 10)); |
737 layer->setContentBounds(IntSize(10, 10)); | 737 layer->setContentBounds(IntSize(10, 10)); |
738 | 738 |
739 CCLayerTreeHostImpl::FrameData frame; | 739 CCLayerTreeHostImpl::FrameData frame; |
740 | 740 |
741 EXPECT_FALSE(layer->willDrawCalled()); | 741 EXPECT_FALSE(layer->willDrawCalled()); |
742 EXPECT_FALSE(layer->didDrawCalled()); | 742 EXPECT_FALSE(layer->didDrawCalled()); |
743 | 743 |
(...skipping 24 matching lines...) Expand all Loading... |
768 | 768 |
769 TEST_F(CCLayerTreeHostImplTest, willDrawNotCalledOnOccludedLayer) | 769 TEST_F(CCLayerTreeHostImplTest, willDrawNotCalledOnOccludedLayer) |
770 { | 770 { |
771 IntSize bigSize(1000, 1000); | 771 IntSize bigSize(1000, 1000); |
772 m_hostImpl->setViewportSize(bigSize, bigSize); | 772 m_hostImpl->setViewportSize(bigSize, bigSize); |
773 | 773 |
774 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); | 774 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); |
775 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa
yer()); | 775 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa
yer()); |
776 | 776 |
777 root->addChild(DidDrawCheckLayer::create(2)); | 777 root->addChild(DidDrawCheckLayer::create(2)); |
778 DidDrawCheckLayer* occludedLayer = static_cast<DidDrawCheckLayer*>(root->chi
ldren()[0].get()); | 778 DidDrawCheckLayer* occludedLayer = static_cast<DidDrawCheckLayer*>(root->chi
ldren()[0]); |
779 | 779 |
780 root->addChild(DidDrawCheckLayer::create(3)); | 780 root->addChild(DidDrawCheckLayer::create(3)); |
781 DidDrawCheckLayer* topLayer = static_cast<DidDrawCheckLayer*>(root->children
()[1].get()); | 781 DidDrawCheckLayer* topLayer = static_cast<DidDrawCheckLayer*>(root->children
()[1]); |
782 // This layer covers the occludedLayer above. Make this layer large so it ca
n occlude. | 782 // This layer covers the occludedLayer above. Make this layer large so it ca
n occlude. |
783 topLayer->setBounds(bigSize); | 783 topLayer->setBounds(bigSize); |
784 topLayer->setContentBounds(bigSize); | 784 topLayer->setContentBounds(bigSize); |
785 topLayer->setOpaque(true); | 785 topLayer->setOpaque(true); |
786 | 786 |
787 CCLayerTreeHostImpl::FrameData frame; | 787 CCLayerTreeHostImpl::FrameData frame; |
788 | 788 |
789 EXPECT_FALSE(occludedLayer->willDrawCalled()); | 789 EXPECT_FALSE(occludedLayer->willDrawCalled()); |
790 EXPECT_FALSE(occludedLayer->didDrawCalled()); | 790 EXPECT_FALSE(occludedLayer->didDrawCalled()); |
791 EXPECT_FALSE(topLayer->willDrawCalled()); | 791 EXPECT_FALSE(topLayer->willDrawCalled()); |
792 EXPECT_FALSE(topLayer->didDrawCalled()); | 792 EXPECT_FALSE(topLayer->didDrawCalled()); |
793 | 793 |
794 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 794 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
795 m_hostImpl->drawLayers(frame); | 795 m_hostImpl->drawLayers(frame); |
796 m_hostImpl->didDrawAllLayers(frame); | 796 m_hostImpl->didDrawAllLayers(frame); |
797 | 797 |
798 EXPECT_FALSE(occludedLayer->willDrawCalled()); | 798 EXPECT_FALSE(occludedLayer->willDrawCalled()); |
799 EXPECT_FALSE(occludedLayer->didDrawCalled()); | 799 EXPECT_FALSE(occludedLayer->didDrawCalled()); |
800 EXPECT_TRUE(topLayer->willDrawCalled()); | 800 EXPECT_TRUE(topLayer->willDrawCalled()); |
801 EXPECT_TRUE(topLayer->didDrawCalled()); | 801 EXPECT_TRUE(topLayer->didDrawCalled()); |
802 } | 802 } |
803 | 803 |
804 TEST_F(CCLayerTreeHostImplTest, didDrawCalledOnAllLayers) | 804 TEST_F(CCLayerTreeHostImplTest, didDrawCalledOnAllLayers) |
805 { | 805 { |
806 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); | 806 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); |
807 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa
yer()); | 807 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa
yer()); |
808 | 808 |
809 root->addChild(DidDrawCheckLayer::create(2)); | 809 root->addChild(DidDrawCheckLayer::create(2)); |
810 DidDrawCheckLayer* layer1 = static_cast<DidDrawCheckLayer*>(root->children()
[0].get()); | 810 DidDrawCheckLayer* layer1 = static_cast<DidDrawCheckLayer*>(root->children()
[0]); |
811 | 811 |
812 layer1->addChild(DidDrawCheckLayer::create(3)); | 812 layer1->addChild(DidDrawCheckLayer::create(3)); |
813 DidDrawCheckLayer* layer2 = static_cast<DidDrawCheckLayer*>(layer1->children
()[0].get()); | 813 DidDrawCheckLayer* layer2 = static_cast<DidDrawCheckLayer*>(layer1->children
()[0]); |
814 | 814 |
815 layer1->setOpacity(0.3f); | 815 layer1->setOpacity(0.3f); |
816 layer1->setPreserves3D(false); | 816 layer1->setPreserves3D(false); |
817 | 817 |
818 EXPECT_FALSE(root->didDrawCalled()); | 818 EXPECT_FALSE(root->didDrawCalled()); |
819 EXPECT_FALSE(layer1->didDrawCalled()); | 819 EXPECT_FALSE(layer1->didDrawCalled()); |
820 EXPECT_FALSE(layer2->didDrawCalled()); | 820 EXPECT_FALSE(layer2->didDrawCalled()); |
821 | 821 |
822 CCLayerTreeHostImpl::FrameData frame; | 822 CCLayerTreeHostImpl::FrameData frame; |
823 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 823 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1081 | 1081 |
1082 TEST_F(CCLayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) | 1082 TEST_F(CCLayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) |
1083 { | 1083 { |
1084 IntSize surfaceSize(10, 10); | 1084 IntSize surfaceSize(10, 10); |
1085 float defaultPageScale = 1; | 1085 float defaultPageScale = 1; |
1086 float newPageScale = 2; | 1086 float newPageScale = 2; |
1087 | 1087 |
1088 // Create a normal scrollable root layer and another scrollable child layer. | 1088 // Create a normal scrollable root layer and another scrollable child layer. |
1089 setupScrollAndContentsLayers(surfaceSize); | 1089 setupScrollAndContentsLayers(surfaceSize); |
1090 CCLayerImpl* root = m_hostImpl->rootLayer(); | 1090 CCLayerImpl* root = m_hostImpl->rootLayer(); |
1091 CCLayerImpl* child = root->children()[0].get(); | 1091 CCLayerImpl* child = root->children()[0]; |
1092 | 1092 |
1093 OwnPtr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize); | 1093 OwnPtr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize); |
1094 child->addChild(scrollableChild.release()); | 1094 child->addChild(scrollableChild.release()); |
1095 CCLayerImpl* grandChild = child->children()[0].get(); | 1095 CCLayerImpl* grandChild = child->children()[0]; |
1096 | 1096 |
1097 // Set new page scale on impl thread by pinching. | 1097 // Set new page scale on impl thread by pinching. |
1098 m_hostImpl->pinchGestureBegin(); | 1098 m_hostImpl->pinchGestureBegin(); |
1099 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint()); | 1099 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint()); |
1100 m_hostImpl->pinchGestureEnd(); | 1100 m_hostImpl->pinchGestureEnd(); |
1101 | 1101 |
1102 // The page scale delta should only be applied to the scrollable root layer. | 1102 // The page scale delta should only be applied to the scrollable root layer. |
1103 EXPECT_EQ(root->pageScaleDelta(), newPageScale); | 1103 EXPECT_EQ(root->pageScaleDelta(), newPageScale); |
1104 EXPECT_EQ(child->pageScaleDelta(), defaultPageScale); | 1104 EXPECT_EQ(child->pageScaleDelta(), defaultPageScale); |
1105 EXPECT_EQ(grandChild->pageScaleDelta(), defaultPageScale); | 1105 EXPECT_EQ(grandChild->pageScaleDelta(), defaultPageScale); |
(...skipping 20 matching lines...) Expand all Loading... |
1126 root->setBounds(surfaceSize); | 1126 root->setBounds(surfaceSize); |
1127 root->setContentBounds(surfaceSize); | 1127 root->setContentBounds(surfaceSize); |
1128 // Also mark the root scrollable so it becomes the root scroll layer. | 1128 // Also mark the root scrollable so it becomes the root scroll layer. |
1129 root->setScrollable(true); | 1129 root->setScrollable(true); |
1130 int scrollLayerId = 2; | 1130 int scrollLayerId = 2; |
1131 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize)); | 1131 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize)); |
1132 m_hostImpl->setRootLayer(root.release()); | 1132 m_hostImpl->setRootLayer(root.release()); |
1133 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1133 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
1134 initializeRendererAndDrawFrame(); | 1134 initializeRendererAndDrawFrame(); |
1135 | 1135 |
1136 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0].get(); | 1136 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0]; |
1137 | 1137 |
1138 IntSize scrollDelta(0, 10); | 1138 IntSize scrollDelta(0, 10); |
1139 IntSize expectedScrollDelta(scrollDelta); | 1139 IntSize expectedScrollDelta(scrollDelta); |
1140 IntSize expectedMaxScroll(child->maxScrollPosition()); | 1140 IntSize expectedMaxScroll(child->maxScrollPosition()); |
1141 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); | 1141 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee
l), CCInputHandlerClient::ScrollStarted); |
1142 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1142 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1143 m_hostImpl->scrollEnd(); | 1143 m_hostImpl->scrollEnd(); |
1144 | 1144 |
1145 float pageScale = 2; | 1145 float pageScale = 2; |
1146 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); | 1146 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1178 initializeRendererAndDrawFrame(); | 1178 initializeRendererAndDrawFrame(); |
1179 { | 1179 { |
1180 IntSize scrollDelta(-8, -7); | 1180 IntSize scrollDelta(-8, -7); |
1181 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); | 1181 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::
Wheel), CCInputHandlerClient::ScrollStarted); |
1182 m_hostImpl->scrollBy(IntPoint(), scrollDelta); | 1182 m_hostImpl->scrollBy(IntPoint(), scrollDelta); |
1183 m_hostImpl->scrollEnd(); | 1183 m_hostImpl->scrollEnd(); |
1184 | 1184 |
1185 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); | 1185 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas
(); |
1186 | 1186 |
1187 // The grand child should have scrolled up to its limit. | 1187 // The grand child should have scrolled up to its limit. |
1188 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0].get(); | 1188 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0]; |
1189 CCLayerImpl* grandChild = child->children()[0].get(); | 1189 CCLayerImpl* grandChild = child->children()[0]; |
1190 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5)); | 1190 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5)); |
1191 | 1191 |
1192 // The child should have only scrolled on the other axis. | 1192 // The child should have only scrolled on the other axis. |
1193 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0)); | 1193 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0)); |
1194 } | 1194 } |
1195 } | 1195 } |
1196 | 1196 |
1197 TEST_F(CCLayerTreeHostImplTest, scrollEventBubbling) | 1197 TEST_F(CCLayerTreeHostImplTest, scrollEventBubbling) |
1198 { | 1198 { |
1199 // When we try to scroll a non-scrollable child layer, the scroll delta | 1199 // When we try to scroll a non-scrollable child layer, the scroll delta |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1460 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); | 1460 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); |
1461 root->setAnchorPoint(FloatPoint(0, 0)); | 1461 root->setAnchorPoint(FloatPoint(0, 0)); |
1462 root->setBounds(IntSize(10, 10)); | 1462 root->setBounds(IntSize(10, 10)); |
1463 root->setContentBounds(root->bounds()); | 1463 root->setContentBounds(root->bounds()); |
1464 root->setDrawsContent(false); | 1464 root->setDrawsContent(false); |
1465 m_hostImpl->setRootLayer(root.release()); | 1465 m_hostImpl->setRootLayer(root.release()); |
1466 } | 1466 } |
1467 CCLayerImpl* root = m_hostImpl->rootLayer(); | 1467 CCLayerImpl* root = m_hostImpl->rootLayer(); |
1468 | 1468 |
1469 root->addChild(BlendStateCheckLayer::create(2, m_hostImpl->resourceProvider(
))); | 1469 root->addChild(BlendStateCheckLayer::create(2, m_hostImpl->resourceProvider(
))); |
1470 BlendStateCheckLayer* layer1 = static_cast<BlendStateCheckLayer*>(root->chil
dren()[0].get()); | 1470 BlendStateCheckLayer* layer1 = static_cast<BlendStateCheckLayer*>(root->chil
dren()[0]); |
1471 layer1->setPosition(FloatPoint(2, 2)); | 1471 layer1->setPosition(FloatPoint(2, 2)); |
1472 | 1472 |
1473 CCLayerTreeHostImpl::FrameData frame; | 1473 CCLayerTreeHostImpl::FrameData frame; |
1474 | 1474 |
1475 // Opaque layer, drawn without blending. | 1475 // Opaque layer, drawn without blending. |
1476 layer1->setOpaque(true); | 1476 layer1->setOpaque(true); |
1477 layer1->setOpaqueContents(true); | 1477 layer1->setOpaqueContents(true); |
1478 layer1->setExpectation(false, false); | 1478 layer1->setExpectation(false, false); |
1479 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 1479 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
1480 m_hostImpl->drawLayers(frame); | 1480 m_hostImpl->drawLayers(frame); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1513 layer1->setOpaque(true); | 1513 layer1->setOpaque(true); |
1514 layer1->setOpaqueContents(false); | 1514 layer1->setOpaqueContents(false); |
1515 layer1->setOpacity(0.5); | 1515 layer1->setOpacity(0.5); |
1516 layer1->setExpectation(true, false); | 1516 layer1->setExpectation(true, false); |
1517 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 1517 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
1518 m_hostImpl->drawLayers(frame); | 1518 m_hostImpl->drawLayers(frame); |
1519 EXPECT_TRUE(layer1->quadsAppended()); | 1519 EXPECT_TRUE(layer1->quadsAppended()); |
1520 m_hostImpl->didDrawAllLayers(frame); | 1520 m_hostImpl->didDrawAllLayers(frame); |
1521 | 1521 |
1522 layer1->addChild(BlendStateCheckLayer::create(3, m_hostImpl->resourceProvide
r())); | 1522 layer1->addChild(BlendStateCheckLayer::create(3, m_hostImpl->resourceProvide
r())); |
1523 BlendStateCheckLayer* layer2 = static_cast<BlendStateCheckLayer*>(layer1->ch
ildren()[0].get()); | 1523 BlendStateCheckLayer* layer2 = static_cast<BlendStateCheckLayer*>(layer1->ch
ildren()[0]); |
1524 layer2->setPosition(FloatPoint(4, 4)); | 1524 layer2->setPosition(FloatPoint(4, 4)); |
1525 | 1525 |
1526 // 2 opaque layers, drawn without blending. | 1526 // 2 opaque layers, drawn without blending. |
1527 layer1->setOpaque(true); | 1527 layer1->setOpaque(true); |
1528 layer1->setOpaqueContents(true); | 1528 layer1->setOpaqueContents(true); |
1529 layer1->setOpacity(1); | 1529 layer1->setOpacity(1); |
1530 layer1->setExpectation(false, false); | 1530 layer1->setExpectation(false, false); |
1531 layer2->setOpaque(true); | 1531 layer2->setOpaque(true); |
1532 layer2->setOpaqueContents(true); | 1532 layer2->setOpaqueContents(true); |
1533 layer2->setOpacity(1); | 1533 layer2->setOpacity(1); |
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2244 | 2244 |
2245 bool m_didLoseContextCalled; | 2245 bool m_didLoseContextCalled; |
2246 }; | 2246 }; |
2247 | 2247 |
2248 TEST_F(CCLayerTreeHostImplTest, contextLostAndRestoredNotificationSentToAllLayer
s) | 2248 TEST_F(CCLayerTreeHostImplTest, contextLostAndRestoredNotificationSentToAllLayer
s) |
2249 { | 2249 { |
2250 m_hostImpl->setRootLayer(ContextLostNotificationCheckLayer::create(1)); | 2250 m_hostImpl->setRootLayer(ContextLostNotificationCheckLayer::create(1)); |
2251 ContextLostNotificationCheckLayer* root = static_cast<ContextLostNotificatio
nCheckLayer*>(m_hostImpl->rootLayer()); | 2251 ContextLostNotificationCheckLayer* root = static_cast<ContextLostNotificatio
nCheckLayer*>(m_hostImpl->rootLayer()); |
2252 | 2252 |
2253 root->addChild(ContextLostNotificationCheckLayer::create(1)); | 2253 root->addChild(ContextLostNotificationCheckLayer::create(1)); |
2254 ContextLostNotificationCheckLayer* layer1 = static_cast<ContextLostNotificat
ionCheckLayer*>(root->children()[0].get()); | 2254 ContextLostNotificationCheckLayer* layer1 = static_cast<ContextLostNotificat
ionCheckLayer*>(root->children()[0]); |
2255 | 2255 |
2256 layer1->addChild(ContextLostNotificationCheckLayer::create(2)); | 2256 layer1->addChild(ContextLostNotificationCheckLayer::create(2)); |
2257 ContextLostNotificationCheckLayer* layer2 = static_cast<ContextLostNotificat
ionCheckLayer*>(layer1->children()[0].get()); | 2257 ContextLostNotificationCheckLayer* layer2 = static_cast<ContextLostNotificat
ionCheckLayer*>(layer1->children()[0]); |
2258 | 2258 |
2259 EXPECT_FALSE(root->didLoseContextCalled()); | 2259 EXPECT_FALSE(root->didLoseContextCalled()); |
2260 EXPECT_FALSE(layer1->didLoseContextCalled()); | 2260 EXPECT_FALSE(layer1->didLoseContextCalled()); |
2261 EXPECT_FALSE(layer2->didLoseContextCalled()); | 2261 EXPECT_FALSE(layer2->didLoseContextCalled()); |
2262 | 2262 |
2263 m_hostImpl->initializeRenderer(createContext(), UnthrottledUploader); | 2263 m_hostImpl->initializeRenderer(createContext(), UnthrottledUploader); |
2264 | 2264 |
2265 EXPECT_TRUE(root->didLoseContextCalled()); | 2265 EXPECT_TRUE(root->didLoseContextCalled()); |
2266 EXPECT_TRUE(layer1->didLoseContextCalled()); | 2266 EXPECT_TRUE(layer1->didLoseContextCalled()); |
2267 EXPECT_TRUE(layer2->didLoseContextCalled()); | 2267 EXPECT_TRUE(layer2->didLoseContextCalled()); |
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2847 IntRect quadVisibleRect = frame.renderPasses[0]->quadList()[0]->quadVisi
bleRect(); | 2847 IntRect quadVisibleRect = frame.renderPasses[0]->quadList()[0]->quadVisi
bleRect(); |
2848 EXPECT_LT(quadVisibleRect.width(), 100); | 2848 EXPECT_LT(quadVisibleRect.width(), 100); |
2849 | 2849 |
2850 quadVisibleRect = frame.renderPasses[0]->quadList()[1]->quadVisibleRect(
); | 2850 quadVisibleRect = frame.renderPasses[0]->quadList()[1]->quadVisibleRect(
); |
2851 EXPECT_LT(quadVisibleRect.width(), 100); | 2851 EXPECT_LT(quadVisibleRect.width(), 100); |
2852 | 2852 |
2853 // Verify that the render surface texture is *not* clipped. | 2853 // Verify that the render surface texture is *not* clipped. |
2854 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), frame.renderPasses[0]->outputRec
t()); | 2854 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), frame.renderPasses[0]->outputRec
t()); |
2855 | 2855 |
2856 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); | 2856 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); |
2857 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0].get()); | 2857 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0]); |
2858 EXPECT_FALSE(quad->contentsChangedSinceLastFrame().isEmpty()); | 2858 EXPECT_FALSE(quad->contentsChangedSinceLastFrame().isEmpty()); |
2859 | 2859 |
2860 myHostImpl->drawLayers(frame); | 2860 myHostImpl->drawLayers(frame); |
2861 myHostImpl->didDrawAllLayers(frame); | 2861 myHostImpl->didDrawAllLayers(frame); |
2862 } | 2862 } |
2863 | 2863 |
2864 transform = surfaceLayerPtr->transform(); | 2864 transform = surfaceLayerPtr->transform(); |
2865 transform.translate(50, 50); | 2865 transform.translate(50, 50); |
2866 transform.rotate(-35); | 2866 transform.rotate(-35); |
2867 transform.translate(-50, -50); | 2867 transform.translate(-50, -50); |
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3517 { | 3517 { |
3518 CCLayerTreeHostImpl::FrameData frame; | 3518 CCLayerTreeHostImpl::FrameData frame; |
3519 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3519 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3520 | 3520 |
3521 // Must receive two render passes, each with one quad | 3521 // Must receive two render passes, each with one quad |
3522 ASSERT_EQ(2U, frame.renderPasses.size()); | 3522 ASSERT_EQ(2U, frame.renderPasses.size()); |
3523 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3523 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3524 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3524 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); |
3525 | 3525 |
3526 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); | 3526 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); |
3527 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0].get()); | 3527 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0]); |
3528 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3528 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3529 EXPECT_FALSE(targetPass->damageRect().isEmpty()); | 3529 EXPECT_FALSE(targetPass->damageRect().isEmpty()); |
3530 | 3530 |
3531 myHostImpl->drawLayers(frame); | 3531 myHostImpl->drawLayers(frame); |
3532 myHostImpl->didDrawAllLayers(frame); | 3532 myHostImpl->didDrawAllLayers(frame); |
3533 } | 3533 } |
3534 | 3534 |
3535 // Draw without any change | 3535 // Draw without any change |
3536 { | 3536 { |
3537 CCLayerTreeHostImpl::FrameData frame; | 3537 CCLayerTreeHostImpl::FrameData frame; |
3538 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3538 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3539 | 3539 |
3540 // Must receive one render pass, as the other one should be culled | 3540 // Must receive one render pass, as the other one should be culled |
3541 ASSERT_EQ(1U, frame.renderPasses.size()); | 3541 ASSERT_EQ(1U, frame.renderPasses.size()); |
3542 | 3542 |
3543 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3543 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3544 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); | 3544 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); |
3545 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0].get()); | 3545 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0]); |
3546 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3546 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3547 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3547 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3548 | 3548 |
3549 myHostImpl->drawLayers(frame); | 3549 myHostImpl->drawLayers(frame); |
3550 myHostImpl->didDrawAllLayers(frame); | 3550 myHostImpl->didDrawAllLayers(frame); |
3551 } | 3551 } |
3552 | 3552 |
3553 // Change opacity and draw | 3553 // Change opacity and draw |
3554 surfaceLayerPtr->setOpacity(0.6f); | 3554 surfaceLayerPtr->setOpacity(0.6f); |
3555 { | 3555 { |
3556 CCLayerTreeHostImpl::FrameData frame; | 3556 CCLayerTreeHostImpl::FrameData frame; |
3557 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3557 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3558 | 3558 |
3559 // Must receive one render pass, as the other one should be culled | 3559 // Must receive one render pass, as the other one should be culled |
3560 ASSERT_EQ(1U, frame.renderPasses.size()); | 3560 ASSERT_EQ(1U, frame.renderPasses.size()); |
3561 | 3561 |
3562 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3562 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3563 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); | 3563 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); |
3564 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0].get()); | 3564 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0]); |
3565 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3565 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3566 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3566 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3567 | 3567 |
3568 myHostImpl->drawLayers(frame); | 3568 myHostImpl->drawLayers(frame); |
3569 myHostImpl->didDrawAllLayers(frame); | 3569 myHostImpl->didDrawAllLayers(frame); |
3570 } | 3570 } |
3571 | 3571 |
3572 // Change less benign property and draw - should have contents changed flag | 3572 // Change less benign property and draw - should have contents changed flag |
3573 surfaceLayerPtr->setStackingOrderChanged(true); | 3573 surfaceLayerPtr->setStackingOrderChanged(true); |
3574 { | 3574 { |
3575 CCLayerTreeHostImpl::FrameData frame; | 3575 CCLayerTreeHostImpl::FrameData frame; |
3576 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3576 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3577 | 3577 |
3578 // Must receive two render passes, each with one quad | 3578 // Must receive two render passes, each with one quad |
3579 ASSERT_EQ(2U, frame.renderPasses.size()); | 3579 ASSERT_EQ(2U, frame.renderPasses.size()); |
3580 | 3580 |
3581 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3581 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3582 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]->
material()); | 3582 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]->
material()); |
3583 | 3583 |
3584 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); | 3584 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); |
3585 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0].get()); | 3585 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0]); |
3586 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3586 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3587 EXPECT_FALSE(targetPass->damageRect().isEmpty()); | 3587 EXPECT_FALSE(targetPass->damageRect().isEmpty()); |
3588 | 3588 |
3589 myHostImpl->drawLayers(frame); | 3589 myHostImpl->drawLayers(frame); |
3590 myHostImpl->didDrawAllLayers(frame); | 3590 myHostImpl->didDrawAllLayers(frame); |
3591 } | 3591 } |
3592 | 3592 |
3593 // Change opacity again, and evict the cached surface texture. | 3593 // Change opacity again, and evict the cached surface texture. |
3594 surfaceLayerPtr->setOpacity(0.5f); | 3594 surfaceLayerPtr->setOpacity(0.5f); |
3595 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea
seRenderPassTextures(); | 3595 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea
seRenderPassTextures(); |
3596 | 3596 |
3597 // Change opacity and draw | 3597 // Change opacity and draw |
3598 surfaceLayerPtr->setOpacity(0.6f); | 3598 surfaceLayerPtr->setOpacity(0.6f); |
3599 { | 3599 { |
3600 CCLayerTreeHostImpl::FrameData frame; | 3600 CCLayerTreeHostImpl::FrameData frame; |
3601 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3601 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3602 | 3602 |
3603 // Must receive two render passes | 3603 // Must receive two render passes |
3604 ASSERT_EQ(2U, frame.renderPasses.size()); | 3604 ASSERT_EQ(2U, frame.renderPasses.size()); |
3605 | 3605 |
3606 // Even though not enough properties changed, the entire thing must be | 3606 // Even though not enough properties changed, the entire thing must be |
3607 // redrawn as we don't have cached textures | 3607 // redrawn as we don't have cached textures |
3608 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3608 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3609 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3609 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); |
3610 | 3610 |
3611 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); | 3611 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); |
3612 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0].get()); | 3612 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0]); |
3613 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3613 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3614 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3614 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3615 | 3615 |
3616 // Was our surface evicted? | 3616 // Was our surface evicted? |
3617 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id())); | 3617 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id())); |
3618 | 3618 |
3619 myHostImpl->drawLayers(frame); | 3619 myHostImpl->drawLayers(frame); |
3620 myHostImpl->didDrawAllLayers(frame); | 3620 myHostImpl->didDrawAllLayers(frame); |
3621 } | 3621 } |
3622 | 3622 |
3623 // Draw without any change, to make sure the state is clear | 3623 // Draw without any change, to make sure the state is clear |
3624 { | 3624 { |
3625 CCLayerTreeHostImpl::FrameData frame; | 3625 CCLayerTreeHostImpl::FrameData frame; |
3626 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3626 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3627 | 3627 |
3628 // Must receive one render pass, as the other one should be culled | 3628 // Must receive one render pass, as the other one should be culled |
3629 ASSERT_EQ(1U, frame.renderPasses.size()); | 3629 ASSERT_EQ(1U, frame.renderPasses.size()); |
3630 | 3630 |
3631 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3631 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3632 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); | 3632 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); |
3633 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0].get()); | 3633 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0]); |
3634 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3634 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3635 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3635 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3636 | 3636 |
3637 myHostImpl->drawLayers(frame); | 3637 myHostImpl->drawLayers(frame); |
3638 myHostImpl->didDrawAllLayers(frame); | 3638 myHostImpl->didDrawAllLayers(frame); |
3639 } | 3639 } |
3640 | 3640 |
3641 // Change opacity on the intermediate layer | 3641 // Change opacity on the intermediate layer |
3642 WebTransformationMatrix transform = intermediateLayerPtr->transform(); | 3642 WebTransformationMatrix transform = intermediateLayerPtr->transform(); |
3643 transform.setM11(1.0001); | 3643 transform.setM11(1.0001); |
3644 intermediateLayerPtr->setTransform(transform); | 3644 intermediateLayerPtr->setTransform(transform); |
3645 { | 3645 { |
3646 CCLayerTreeHostImpl::FrameData frame; | 3646 CCLayerTreeHostImpl::FrameData frame; |
3647 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3647 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3648 | 3648 |
3649 // Must receive one render pass, as the other one should be culled. | 3649 // Must receive one render pass, as the other one should be culled. |
3650 ASSERT_EQ(1U, frame.renderPasses.size()); | 3650 ASSERT_EQ(1U, frame.renderPasses.size()); |
3651 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3651 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3652 | 3652 |
3653 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); | 3653 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); |
3654 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0].get()); | 3654 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0]); |
3655 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3655 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3656 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3656 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3657 | 3657 |
3658 myHostImpl->drawLayers(frame); | 3658 myHostImpl->drawLayers(frame); |
3659 myHostImpl->didDrawAllLayers(frame); | 3659 myHostImpl->didDrawAllLayers(frame); |
3660 } | 3660 } |
3661 } | 3661 } |
3662 | 3662 |
3663 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap) | 3663 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap) |
3664 { | 3664 { |
(...skipping 13 matching lines...) Expand all Loading... |
3678 { | 3678 { |
3679 CCLayerTreeHostImpl::FrameData frame; | 3679 CCLayerTreeHostImpl::FrameData frame; |
3680 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3680 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3681 | 3681 |
3682 // Must receive two render passes, each with one quad | 3682 // Must receive two render passes, each with one quad |
3683 ASSERT_EQ(2U, frame.renderPasses.size()); | 3683 ASSERT_EQ(2U, frame.renderPasses.size()); |
3684 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3684 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3685 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3685 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); |
3686 | 3686 |
3687 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); | 3687 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); |
3688 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0].get()); | 3688 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0]); |
3689 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3689 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3690 EXPECT_FALSE(targetPass->damageRect().isEmpty()); | 3690 EXPECT_FALSE(targetPass->damageRect().isEmpty()); |
3691 | 3691 |
3692 EXPECT_FALSE(frame.renderPasses[0]->damageRect().isEmpty()); | 3692 EXPECT_FALSE(frame.renderPasses[0]->damageRect().isEmpty()); |
3693 EXPECT_FALSE(frame.renderPasses[1]->damageRect().isEmpty()); | 3693 EXPECT_FALSE(frame.renderPasses[1]->damageRect().isEmpty()); |
3694 | 3694 |
3695 EXPECT_FALSE(frame.renderPasses[0]->hasOcclusionFromOutsideTargetSurface
()); | 3695 EXPECT_FALSE(frame.renderPasses[0]->hasOcclusionFromOutsideTargetSurface
()); |
3696 EXPECT_FALSE(frame.renderPasses[1]->hasOcclusionFromOutsideTargetSurface
()); | 3696 EXPECT_FALSE(frame.renderPasses[1]->hasOcclusionFromOutsideTargetSurface
()); |
3697 | 3697 |
3698 myHostImpl->drawLayers(frame); | 3698 myHostImpl->drawLayers(frame); |
(...skipping 21 matching lines...) Expand all Loading... |
3720 surfaceLayerPtr->setOpacity(0.6f); | 3720 surfaceLayerPtr->setOpacity(0.6f); |
3721 { | 3721 { |
3722 CCLayerTreeHostImpl::FrameData frame; | 3722 CCLayerTreeHostImpl::FrameData frame; |
3723 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3723 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3724 | 3724 |
3725 // Must receive one render pass, as the other one should be culled | 3725 // Must receive one render pass, as the other one should be culled |
3726 ASSERT_EQ(1U, frame.renderPasses.size()); | 3726 ASSERT_EQ(1U, frame.renderPasses.size()); |
3727 | 3727 |
3728 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3728 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3729 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); | 3729 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); |
3730 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0].get()); | 3730 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0]); |
3731 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3731 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3732 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3732 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3733 | 3733 |
3734 myHostImpl->drawLayers(frame); | 3734 myHostImpl->drawLayers(frame); |
3735 myHostImpl->didDrawAllLayers(frame); | 3735 myHostImpl->didDrawAllLayers(frame); |
3736 } | 3736 } |
3737 | 3737 |
3738 // Change less benign property and draw - should have contents changed flag | 3738 // Change less benign property and draw - should have contents changed flag |
3739 surfaceLayerPtr->setStackingOrderChanged(true); | 3739 surfaceLayerPtr->setStackingOrderChanged(true); |
3740 { | 3740 { |
3741 CCLayerTreeHostImpl::FrameData frame; | 3741 CCLayerTreeHostImpl::FrameData frame; |
3742 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3742 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3743 | 3743 |
3744 // Must receive two render passes, each with one quad | 3744 // Must receive two render passes, each with one quad |
3745 ASSERT_EQ(2U, frame.renderPasses.size()); | 3745 ASSERT_EQ(2U, frame.renderPasses.size()); |
3746 | 3746 |
3747 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3747 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3748 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]->
material()); | 3748 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]->
material()); |
3749 | 3749 |
3750 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); | 3750 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); |
3751 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0].get()); | 3751 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0]); |
3752 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3752 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3753 EXPECT_FALSE(targetPass->damageRect().isEmpty()); | 3753 EXPECT_FALSE(targetPass->damageRect().isEmpty()); |
3754 | 3754 |
3755 myHostImpl->drawLayers(frame); | 3755 myHostImpl->drawLayers(frame); |
3756 myHostImpl->didDrawAllLayers(frame); | 3756 myHostImpl->didDrawAllLayers(frame); |
3757 } | 3757 } |
3758 | 3758 |
3759 // Change opacity again, and evict the cached surface texture. | 3759 // Change opacity again, and evict the cached surface texture. |
3760 surfaceLayerPtr->setOpacity(0.5f); | 3760 surfaceLayerPtr->setOpacity(0.5f); |
3761 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea
seRenderPassTextures(); | 3761 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea
seRenderPassTextures(); |
3762 | 3762 |
3763 // Change opacity and draw | 3763 // Change opacity and draw |
3764 surfaceLayerPtr->setOpacity(0.6f); | 3764 surfaceLayerPtr->setOpacity(0.6f); |
3765 { | 3765 { |
3766 CCLayerTreeHostImpl::FrameData frame; | 3766 CCLayerTreeHostImpl::FrameData frame; |
3767 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3767 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3768 | 3768 |
3769 // Must receive two render passes | 3769 // Must receive two render passes |
3770 ASSERT_EQ(2U, frame.renderPasses.size()); | 3770 ASSERT_EQ(2U, frame.renderPasses.size()); |
3771 | 3771 |
3772 // Even though not enough properties changed, the entire thing must be | 3772 // Even though not enough properties changed, the entire thing must be |
3773 // redrawn as we don't have cached textures | 3773 // redrawn as we don't have cached textures |
3774 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3774 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3775 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3775 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); |
3776 | 3776 |
3777 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); | 3777 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->
material()); |
3778 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0].get()); | 3778 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[1]->quadList()[0]); |
3779 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3779 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3780 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3780 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3781 | 3781 |
3782 // Was our surface evicted? | 3782 // Was our surface evicted? |
3783 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id())); | 3783 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id())); |
3784 | 3784 |
3785 myHostImpl->drawLayers(frame); | 3785 myHostImpl->drawLayers(frame); |
3786 myHostImpl->didDrawAllLayers(frame); | 3786 myHostImpl->didDrawAllLayers(frame); |
3787 } | 3787 } |
3788 | 3788 |
(...skipping 18 matching lines...) Expand all Loading... |
3807 intermediateLayerPtr->setTransform(transform); | 3807 intermediateLayerPtr->setTransform(transform); |
3808 { | 3808 { |
3809 CCLayerTreeHostImpl::FrameData frame; | 3809 CCLayerTreeHostImpl::FrameData frame; |
3810 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3810 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
3811 | 3811 |
3812 // Must receive one render pass, as the other one should be culled. | 3812 // Must receive one render pass, as the other one should be culled. |
3813 ASSERT_EQ(1U, frame.renderPasses.size()); | 3813 ASSERT_EQ(1U, frame.renderPasses.size()); |
3814 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3814 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); |
3815 | 3815 |
3816 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); | 3816 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->
material()); |
3817 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0].get()); | 3817 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re
nderPasses[0]->quadList()[0]); |
3818 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); | 3818 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId
()); |
3819 EXPECT_TRUE(targetPass->damageRect().isEmpty()); | 3819 EXPECT_TRUE(targetPass->damageRect().isEmpty()); |
3820 | 3820 |
3821 myHostImpl->drawLayers(frame); | 3821 myHostImpl->drawLayers(frame); |
3822 myHostImpl->didDrawAllLayers(frame); | 3822 myHostImpl->didDrawAllLayers(frame); |
3823 } | 3823 } |
3824 } | 3824 } |
3825 | 3825 |
3826 TEST_F(CCLayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit) | 3826 TEST_F(CCLayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit) |
3827 { | 3827 { |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3999 char* pos = buffer; | 3999 char* pos = buffer; |
4000 for (CCRenderPassList::const_reverse_iterator it = testData.renderPasses.rbe
gin(); it != testData.renderPasses.rend(); ++it) { | 4000 for (CCRenderPassList::const_reverse_iterator it = testData.renderPasses.rbe
gin(); it != testData.renderPasses.rend(); ++it) { |
4001 const CCRenderPass* currentPass = *it; | 4001 const CCRenderPass* currentPass = *it; |
4002 *pos = currentPass->id().layerId; | 4002 *pos = currentPass->id().layerId; |
4003 pos++; | 4003 pos++; |
4004 *pos = currentPass->id().index; | 4004 *pos = currentPass->id().index; |
4005 pos++; | 4005 pos++; |
4006 | 4006 |
4007 CCQuadList::const_iterator quadListIterator = currentPass->quadList().be
gin(); | 4007 CCQuadList::const_iterator quadListIterator = currentPass->quadList().be
gin(); |
4008 while (quadListIterator != currentPass->quadList().end()) { | 4008 while (quadListIterator != currentPass->quadList().end()) { |
4009 CCDrawQuad* currentQuad = (*quadListIterator).get(); | 4009 CCDrawQuad* currentQuad = *quadListIterator; |
4010 switch (currentQuad->material()) { | 4010 switch (currentQuad->material()) { |
4011 case CCDrawQuad::SolidColor: | 4011 case CCDrawQuad::SolidColor: |
4012 *pos = 's'; | 4012 *pos = 's'; |
4013 pos++; | 4013 pos++; |
4014 break; | 4014 break; |
4015 case CCDrawQuad::RenderPass: | 4015 case CCDrawQuad::RenderPass: |
4016 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa
ssId().layerId; | 4016 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa
ssId().layerId; |
4017 pos++; | 4017 pos++; |
4018 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa
ssId().index; | 4018 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa
ssId().index; |
4019 pos++; | 4019 pos++; |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4192 while (removeRenderPassesCases[testCaseIndex].name) { | 4192 while (removeRenderPassesCases[testCaseIndex].name) { |
4193 RenderPassRemovalTestData testData; | 4193 RenderPassRemovalTestData testData; |
4194 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS
cript, testData, renderer.get()); | 4194 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS
cript, testData, renderer.get()); |
4195 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP
assesWithCachedTextures(*renderer), testData); | 4195 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP
assesWithCachedTextures(*renderer), testData); |
4196 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); | 4196 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); |
4197 testCaseIndex++; | 4197 testCaseIndex++; |
4198 } | 4198 } |
4199 } | 4199 } |
4200 | 4200 |
4201 } // namespace | 4201 } // namespace |
OLD | NEW |