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