| 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 "TiledLayerChromium.h" | 7 #include "TiledLayerChromium.h" |
| 8 | 8 |
| 9 #include "BitmapCanvasLayerTextureUpdater.h" | 9 #include "BitmapCanvasLayerTextureUpdater.h" |
| 10 #include "CCAnimationTestCommon.h" | 10 #include "CCAnimationTestCommon.h" |
| (...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 | 903 |
| 904 // The tile size is 100x100, so this invalidates and then paints two tiles. | 904 // The tile size is 100x100, so this invalidates and then paints two tiles. |
| 905 layer->setBounds(IntSize(100, 200)); | 905 layer->setBounds(IntSize(100, 200)); |
| 906 layer->setDrawableContentRect(IntRect(0, 0, 100, 200)); | 906 layer->setDrawableContentRect(IntRect(0, 0, 100, 200)); |
| 907 layer->setVisibleContentRect(IntRect(0, 0, 100, 200)); | 907 layer->setVisibleContentRect(IntRect(0, 0, 100, 200)); |
| 908 layer->invalidateContentRect(IntRect(0, 0, 100, 200)); | 908 layer->invalidateContentRect(IntRect(0, 0, 100, 200)); |
| 909 | 909 |
| 910 layer->setTexturePriorities(m_priorityCalculator); | 910 layer->setTexturePriorities(m_priorityCalculator); |
| 911 m_textureManager->prioritizeTextures(); | 911 m_textureManager->prioritizeTextures(); |
| 912 layer->update(*m_queue.get(), 0, m_stats); | 912 layer->update(*m_queue.get(), 0, m_stats); |
| 913 EXPECT_EQ(2, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 913 EXPECT_EQ(2, layer->fakeLayerTextureUpdater()->updateCount()); |
| 914 } | 914 } |
| 915 | 915 |
| 916 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusion) | 916 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusion) |
| 917 { | 917 { |
| 918 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); | 918 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); |
| 919 TestCCOcclusionTracker occluded; | 919 TestCCOcclusionTracker occluded; |
| 920 | 920 |
| 921 // The tile size is 100x100. | 921 // The tile size is 100x100. |
| 922 | 922 |
| 923 layer->setBounds(IntSize(600, 600)); | 923 layer->setBounds(IntSize(600, 600)); |
| 924 | 924 |
| 925 occluded.setOcclusion(IntRect(200, 200, 300, 100)); | 925 occluded.setOcclusion(IntRect(200, 200, 300, 100)); |
| 926 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); | 926 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 927 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); | 927 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 928 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 928 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 929 | 929 |
| 930 layer->setTexturePriorities(m_priorityCalculator); | 930 layer->setTexturePriorities(m_priorityCalculator); |
| 931 m_textureManager->prioritizeTextures(); | 931 m_textureManager->prioritizeTextures(); |
| 932 layer->update(*m_queue.get(), &occluded, m_stats); | 932 layer->update(*m_queue.get(), &occluded, m_stats); |
| 933 EXPECT_EQ(36-3, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 933 EXPECT_EQ(36-3, layer->fakeLayerTextureUpdater()->updateCount()); |
| 934 | 934 |
| 935 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 935 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 936 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); | 936 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); |
| 937 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); | 937 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 938 | 938 |
| 939 layer->fakeLayerTextureUpdater()->clearPrepareRectCount(); | 939 layer->fakeLayerTextureUpdater()->clearUpdateCount(); |
| 940 layer->setTexturePriorities(m_priorityCalculator); | 940 layer->setTexturePriorities(m_priorityCalculator); |
| 941 m_textureManager->prioritizeTextures(); | 941 m_textureManager->prioritizeTextures(); |
| 942 | 942 |
| 943 occluded.setOcclusion(IntRect(250, 200, 300, 100)); | 943 occluded.setOcclusion(IntRect(250, 200, 300, 100)); |
| 944 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 944 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 945 layer->update(*m_queue.get(), &occluded, m_stats); | 945 layer->update(*m_queue.get(), &occluded, m_stats); |
| 946 EXPECT_EQ(36-2, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 946 EXPECT_EQ(36-2, layer->fakeLayerTextureUpdater()->updateCount()); |
| 947 | 947 |
| 948 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 948 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 949 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 +
340000, 1); | 949 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 +
340000, 1); |
| 950 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload()); | 950 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 951 | 951 |
| 952 layer->fakeLayerTextureUpdater()->clearPrepareRectCount(); | 952 layer->fakeLayerTextureUpdater()->clearUpdateCount(); |
| 953 layer->setTexturePriorities(m_priorityCalculator); | 953 layer->setTexturePriorities(m_priorityCalculator); |
| 954 m_textureManager->prioritizeTextures(); | 954 m_textureManager->prioritizeTextures(); |
| 955 | 955 |
| 956 occluded.setOcclusion(IntRect(250, 250, 300, 100)); | 956 occluded.setOcclusion(IntRect(250, 250, 300, 100)); |
| 957 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 957 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 958 layer->update(*m_queue.get(), &occluded, m_stats); | 958 layer->update(*m_queue.get(), &occluded, m_stats); |
| 959 EXPECT_EQ(36, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 959 EXPECT_EQ(36, layer->fakeLayerTextureUpdater()->updateCount()); |
| 960 | 960 |
| 961 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 961 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 962 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 +
340000 + 360000, 1); | 962 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 +
340000 + 360000, 1); |
| 963 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload()); | 963 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 964 } | 964 } |
| 965 | 965 |
| 966 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusionAndVisiblityConstraints) | 966 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusionAndVisiblityConstraints) |
| 967 { | 967 { |
| 968 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); | 968 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); |
| 969 TestCCOcclusionTracker occluded; | 969 TestCCOcclusionTracker occluded; |
| 970 | 970 |
| 971 // The tile size is 100x100. | 971 // The tile size is 100x100. |
| 972 | 972 |
| 973 layer->setBounds(IntSize(600, 600)); | 973 layer->setBounds(IntSize(600, 600)); |
| 974 | 974 |
| 975 // The partially occluded tiles (by the 150 occlusion height) are visible be
yond the occlusion, so not culled. | 975 // The partially occluded tiles (by the 150 occlusion height) are visible be
yond the occlusion, so not culled. |
| 976 occluded.setOcclusion(IntRect(200, 200, 300, 150)); | 976 occluded.setOcclusion(IntRect(200, 200, 300, 150)); |
| 977 layer->setDrawableContentRect(IntRect(0, 0, 600, 360)); | 977 layer->setDrawableContentRect(IntRect(0, 0, 600, 360)); |
| 978 layer->setVisibleContentRect(IntRect(0, 0, 600, 360)); | 978 layer->setVisibleContentRect(IntRect(0, 0, 600, 360)); |
| 979 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 979 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 980 | 980 |
| 981 layer->setTexturePriorities(m_priorityCalculator); | 981 layer->setTexturePriorities(m_priorityCalculator); |
| 982 m_textureManager->prioritizeTextures(); | 982 m_textureManager->prioritizeTextures(); |
| 983 layer->update(*m_queue.get(), &occluded, m_stats); | 983 layer->update(*m_queue.get(), &occluded, m_stats); |
| 984 EXPECT_EQ(24-3, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 984 EXPECT_EQ(24-3, layer->fakeLayerTextureUpdater()->updateCount()); |
| 985 | 985 |
| 986 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 986 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 987 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000,
1); | 987 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000,
1); |
| 988 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); | 988 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 989 | 989 |
| 990 layer->fakeLayerTextureUpdater()->clearPrepareRectCount(); | 990 layer->fakeLayerTextureUpdater()->clearUpdateCount(); |
| 991 | 991 |
| 992 // Now the visible region stops at the edge of the occlusion so the partly v
isible tiles become fully occluded. | 992 // Now the visible region stops at the edge of the occlusion so the partly v
isible tiles become fully occluded. |
| 993 occluded.setOcclusion(IntRect(200, 200, 300, 150)); | 993 occluded.setOcclusion(IntRect(200, 200, 300, 150)); |
| 994 layer->setDrawableContentRect(IntRect(0, 0, 600, 350)); | 994 layer->setDrawableContentRect(IntRect(0, 0, 600, 350)); |
| 995 layer->setVisibleContentRect(IntRect(0, 0, 600, 350)); | 995 layer->setVisibleContentRect(IntRect(0, 0, 600, 350)); |
| 996 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 996 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 997 layer->setTexturePriorities(m_priorityCalculator); | 997 layer->setTexturePriorities(m_priorityCalculator); |
| 998 m_textureManager->prioritizeTextures(); | 998 m_textureManager->prioritizeTextures(); |
| 999 layer->update(*m_queue.get(), &occluded, m_stats); | 999 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1000 EXPECT_EQ(24-6, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1000 EXPECT_EQ(24-6, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1001 | 1001 |
| 1002 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1002 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1003 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 +
180000, 1); | 1003 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 +
180000, 1); |
| 1004 EXPECT_EQ(3 + 6, occluded.overdrawMetrics().tilesCulledForUpload()); | 1004 EXPECT_EQ(3 + 6, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1005 | 1005 |
| 1006 layer->fakeLayerTextureUpdater()->clearPrepareRectCount(); | 1006 layer->fakeLayerTextureUpdater()->clearUpdateCount(); |
| 1007 | 1007 |
| 1008 // Now the visible region is even smaller than the occlusion, it should have
the same result. | 1008 // Now the visible region is even smaller than the occlusion, it should have
the same result. |
| 1009 occluded.setOcclusion(IntRect(200, 200, 300, 150)); | 1009 occluded.setOcclusion(IntRect(200, 200, 300, 150)); |
| 1010 layer->setDrawableContentRect(IntRect(0, 0, 600, 340)); | 1010 layer->setDrawableContentRect(IntRect(0, 0, 600, 340)); |
| 1011 layer->setVisibleContentRect(IntRect(0, 0, 600, 340)); | 1011 layer->setVisibleContentRect(IntRect(0, 0, 600, 340)); |
| 1012 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 1012 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 1013 layer->setTexturePriorities(m_priorityCalculator); | 1013 layer->setTexturePriorities(m_priorityCalculator); |
| 1014 m_textureManager->prioritizeTextures(); | 1014 m_textureManager->prioritizeTextures(); |
| 1015 layer->update(*m_queue.get(), &occluded, m_stats); | 1015 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1016 EXPECT_EQ(24-6, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1016 EXPECT_EQ(24-6, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1017 | 1017 |
| 1018 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1018 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1019 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 +
180000 + 180000, 1); | 1019 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 +
180000 + 180000, 1); |
| 1020 EXPECT_EQ(3 + 6 + 6, occluded.overdrawMetrics().tilesCulledForUpload()); | 1020 EXPECT_EQ(3 + 6 + 6, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1021 | 1021 |
| 1022 } | 1022 } |
| 1023 | 1023 |
| 1024 TEST_F(TiledLayerChromiumTest, tilesNotPaintedWithoutInvalidation) | 1024 TEST_F(TiledLayerChromiumTest, tilesNotPaintedWithoutInvalidation) |
| 1025 { | 1025 { |
| 1026 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); | 1026 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); |
| 1027 TestCCOcclusionTracker occluded; | 1027 TestCCOcclusionTracker occluded; |
| 1028 | 1028 |
| 1029 // The tile size is 100x100. | 1029 // The tile size is 100x100. |
| 1030 | 1030 |
| 1031 layer->setBounds(IntSize(600, 600)); | 1031 layer->setBounds(IntSize(600, 600)); |
| 1032 | 1032 |
| 1033 occluded.setOcclusion(IntRect(200, 200, 300, 100)); | 1033 occluded.setOcclusion(IntRect(200, 200, 300, 100)); |
| 1034 layer->setDrawableContentRect(IntRect(0, 0, 600, 600)); | 1034 layer->setDrawableContentRect(IntRect(0, 0, 600, 600)); |
| 1035 layer->setVisibleContentRect(IntRect(0, 0, 600, 600)); | 1035 layer->setVisibleContentRect(IntRect(0, 0, 600, 600)); |
| 1036 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 1036 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 1037 layer->setTexturePriorities(m_priorityCalculator); | 1037 layer->setTexturePriorities(m_priorityCalculator); |
| 1038 m_textureManager->prioritizeTextures(); | 1038 m_textureManager->prioritizeTextures(); |
| 1039 layer->update(*m_queue.get(), &occluded, m_stats); | 1039 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1040 EXPECT_EQ(36-3, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1040 EXPECT_EQ(36-3, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1041 { | 1041 { |
| 1042 updateTextures(); | 1042 updateTextures(); |
| 1043 } | 1043 } |
| 1044 | 1044 |
| 1045 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1045 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1046 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); | 1046 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); |
| 1047 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); | 1047 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1048 | 1048 |
| 1049 layer->fakeLayerTextureUpdater()->clearPrepareRectCount(); | 1049 layer->fakeLayerTextureUpdater()->clearUpdateCount(); |
| 1050 layer->setTexturePriorities(m_priorityCalculator); | 1050 layer->setTexturePriorities(m_priorityCalculator); |
| 1051 m_textureManager->prioritizeTextures(); | 1051 m_textureManager->prioritizeTextures(); |
| 1052 | 1052 |
| 1053 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted
now. | 1053 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted
now. |
| 1054 layer->update(*m_queue.get(), &occluded, m_stats); | 1054 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1055 EXPECT_EQ(3, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1055 EXPECT_EQ(3, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1056 | 1056 |
| 1057 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1057 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1058 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); | 1058 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); |
| 1059 EXPECT_EQ(6, occluded.overdrawMetrics().tilesCulledForUpload()); | 1059 EXPECT_EQ(6, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1060 } | 1060 } |
| 1061 | 1061 |
| 1062 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusionAndTransforms) | 1062 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusionAndTransforms) |
| 1063 { | 1063 { |
| 1064 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); | 1064 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); |
| 1065 TestCCOcclusionTracker occluded; | 1065 TestCCOcclusionTracker occluded; |
| 1066 | 1066 |
| 1067 // The tile size is 100x100. | 1067 // The tile size is 100x100. |
| 1068 | 1068 |
| 1069 // This makes sure the painting works when the occluded region (in screen sp
ace) | 1069 // This makes sure the painting works when the occluded region (in screen sp
ace) |
| 1070 // is transformed differently than the layer. | 1070 // is transformed differently than the layer. |
| 1071 layer->setBounds(IntSize(600, 600)); | 1071 layer->setBounds(IntSize(600, 600)); |
| 1072 WebTransformationMatrix screenTransform; | 1072 WebTransformationMatrix screenTransform; |
| 1073 screenTransform.scale(0.5); | 1073 screenTransform.scale(0.5); |
| 1074 layer->setScreenSpaceTransform(screenTransform); | 1074 layer->setScreenSpaceTransform(screenTransform); |
| 1075 layer->setDrawTransform(screenTransform); | 1075 layer->setDrawTransform(screenTransform); |
| 1076 | 1076 |
| 1077 occluded.setOcclusion(IntRect(100, 100, 150, 50)); | 1077 occluded.setOcclusion(IntRect(100, 100, 150, 50)); |
| 1078 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1078 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1079 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1079 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1080 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 1080 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 1081 layer->setTexturePriorities(m_priorityCalculator); | 1081 layer->setTexturePriorities(m_priorityCalculator); |
| 1082 m_textureManager->prioritizeTextures(); | 1082 m_textureManager->prioritizeTextures(); |
| 1083 layer->update(*m_queue.get(), &occluded, m_stats); | 1083 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1084 EXPECT_EQ(36-3, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1084 EXPECT_EQ(36-3, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1085 | 1085 |
| 1086 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1086 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1087 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); | 1087 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000,
1); |
| 1088 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); | 1088 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1089 } | 1089 } |
| 1090 | 1090 |
| 1091 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusionAndScaling) | 1091 TEST_F(TiledLayerChromiumTest, tilesPaintedWithOcclusionAndScaling) |
| 1092 { | 1092 { |
| 1093 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); | 1093 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); |
| 1094 TestCCOcclusionTracker occluded; | 1094 TestCCOcclusionTracker occluded; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1108 occluded.setOcclusion(IntRect(200, 200, 300, 100)); | 1108 occluded.setOcclusion(IntRect(200, 200, 300, 100)); |
| 1109 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1109 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1110 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1110 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1111 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 1111 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 1112 layer->setTexturePriorities(m_priorityCalculator); | 1112 layer->setTexturePriorities(m_priorityCalculator); |
| 1113 m_textureManager->prioritizeTextures(); | 1113 m_textureManager->prioritizeTextures(); |
| 1114 layer->update(*m_queue.get(), &occluded, m_stats); | 1114 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1115 // The content is half the size of the layer (so the number of tiles is fewe
r). | 1115 // The content is half the size of the layer (so the number of tiles is fewe
r). |
| 1116 // In this case, the content is 300x300, and since the tile size is 100, the | 1116 // In this case, the content is 300x300, and since the tile size is 100, the |
| 1117 // number of tiles 3x3. | 1117 // number of tiles 3x3. |
| 1118 EXPECT_EQ(9, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1118 EXPECT_EQ(9, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1119 | 1119 |
| 1120 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1120 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1121 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000, 1
); | 1121 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000, 1
); |
| 1122 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); | 1122 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1123 | 1123 |
| 1124 layer->fakeLayerTextureUpdater()->clearPrepareRectCount(); | 1124 layer->fakeLayerTextureUpdater()->clearUpdateCount(); |
| 1125 | 1125 |
| 1126 // This makes sure the painting works when the content space is scaled to | 1126 // This makes sure the painting works when the content space is scaled to |
| 1127 // a different layer space. In this case the occluded region catches the | 1127 // a different layer space. In this case the occluded region catches the |
| 1128 // blown up tiles. | 1128 // blown up tiles. |
| 1129 occluded.setOcclusion(IntRect(200, 200, 300, 200)); | 1129 occluded.setOcclusion(IntRect(200, 200, 300, 200)); |
| 1130 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1130 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1131 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1131 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1132 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 1132 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 1133 layer->setTexturePriorities(m_priorityCalculator); | 1133 layer->setTexturePriorities(m_priorityCalculator); |
| 1134 m_textureManager->prioritizeTextures(); | 1134 m_textureManager->prioritizeTextures(); |
| 1135 layer->update(*m_queue.get(), &occluded, m_stats); | 1135 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1136 EXPECT_EQ(9-1, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1136 EXPECT_EQ(9-1, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1137 | 1137 |
| 1138 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1138 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1139 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 +
80000, 1); | 1139 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 +
80000, 1); |
| 1140 EXPECT_EQ(1, occluded.overdrawMetrics().tilesCulledForUpload()); | 1140 EXPECT_EQ(1, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1141 | 1141 |
| 1142 layer->fakeLayerTextureUpdater()->clearPrepareRectCount(); | 1142 layer->fakeLayerTextureUpdater()->clearUpdateCount(); |
| 1143 | 1143 |
| 1144 // This makes sure content scaling and transforms work together. | 1144 // This makes sure content scaling and transforms work together. |
| 1145 WebTransformationMatrix screenTransform; | 1145 WebTransformationMatrix screenTransform; |
| 1146 screenTransform.scale(0.5); | 1146 screenTransform.scale(0.5); |
| 1147 layer->setScreenSpaceTransform(screenTransform); | 1147 layer->setScreenSpaceTransform(screenTransform); |
| 1148 layer->setDrawTransform(screenTransform); | 1148 layer->setDrawTransform(screenTransform); |
| 1149 | 1149 |
| 1150 occluded.setOcclusion(IntRect(100, 100, 150, 100)); | 1150 occluded.setOcclusion(IntRect(100, 100, 150, 100)); |
| 1151 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1151 layer->setDrawableContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1152 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); | 1152 layer->setVisibleContentRect(IntRect(IntPoint(), layer->contentBounds())); |
| 1153 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); | 1153 layer->invalidateContentRect(IntRect(0, 0, 600, 600)); |
| 1154 layer->setTexturePriorities(m_priorityCalculator); | 1154 layer->setTexturePriorities(m_priorityCalculator); |
| 1155 m_textureManager->prioritizeTextures(); | 1155 m_textureManager->prioritizeTextures(); |
| 1156 layer->update(*m_queue.get(), &occluded, m_stats); | 1156 layer->update(*m_queue.get(), &occluded, m_stats); |
| 1157 EXPECT_EQ(9-1, layer->fakeLayerTextureUpdater()->prepareRectCount()); | 1157 EXPECT_EQ(9-1, layer->fakeLayerTextureUpdater()->updateCount()); |
| 1158 | 1158 |
| 1159 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); | 1159 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); |
| 1160 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 +
80000 + 80000, 1); | 1160 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 +
80000 + 80000, 1); |
| 1161 EXPECT_EQ(1 + 1, occluded.overdrawMetrics().tilesCulledForUpload()); | 1161 EXPECT_EQ(1 + 1, occluded.overdrawMetrics().tilesCulledForUpload()); |
| 1162 } | 1162 } |
| 1163 | 1163 |
| 1164 TEST_F(TiledLayerChromiumTest, visibleContentOpaqueRegion) | 1164 TEST_F(TiledLayerChromiumTest, visibleContentOpaqueRegion) |
| 1165 { | 1165 { |
| 1166 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); | 1166 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(m
_textureManager.get())); |
| 1167 TestCCOcclusionTracker occluded; | 1167 TestCCOcclusionTracker occluded; |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1552 updateTextures(); | 1552 updateTextures(); |
| 1553 | 1553 |
| 1554 // Invalidate the entire layer in layer space. When painting, the rect given
to webkit should match the layer's bounds. | 1554 // Invalidate the entire layer in layer space. When painting, the rect given
to webkit should match the layer's bounds. |
| 1555 layer->setNeedsDisplayRect(layerRect); | 1555 layer->setNeedsDisplayRect(layerRect); |
| 1556 layer->update(*m_queue.get(), 0, m_stats); | 1556 layer->update(*m_queue.get(), 0, m_stats); |
| 1557 | 1557 |
| 1558 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); | 1558 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); |
| 1559 } | 1559 } |
| 1560 | 1560 |
| 1561 } // namespace | 1561 } // namespace |
| OLD | NEW |