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