Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: cc/tiled_layer_unittest.cc

Issue 12728002: cc: Chromify the OverdrawMetrics class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/tiled_layer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "cc/tiled_layer.h" 5 #include "cc/tiled_layer.h"
6 6
7 #include "cc/bitmap_content_layer_updater.h" 7 #include "cc/bitmap_content_layer_updater.h"
8 #include "cc/layer_painter.h" 8 #include "cc/layer_painter.h"
9 #include "cc/overdraw_metrics.h" 9 #include "cc/overdraw_metrics.h"
10 #include "cc/prioritized_resource_manager.h" 10 #include "cc/prioritized_resource_manager.h"
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1)); 223 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
224 TestOcclusionTracker occluded; 224 TestOcclusionTracker occluded;
225 m_occlusion = &occluded; 225 m_occlusion = &occluded;
226 m_layerTreeHost->setViewportSize(gfx::Size(1000, 1000), gfx::Size(1000, 1000 )); 226 m_layerTreeHost->setViewportSize(gfx::Size(1000, 1000), gfx::Size(1000, 1000 ));
227 227
228 // The tile size is 100x100, so this invalidates and then paints two tiles. 228 // The tile size is 100x100, so this invalidates and then paints two tiles.
229 layer->setBounds(gfx::Size(100, 200)); 229 layer->setBounds(gfx::Size(100, 200));
230 calcDrawProps(layer); 230 calcDrawProps(layer);
231 updateAndPush(layer, layerImpl); 231 updateAndPush(layer, layerImpl);
232 232
233 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 233 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
234 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 ); 234 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 20000, 1);
235 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 235 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
236 236
237 // We should have both tiles on the impl side. 237 // We should have both tiles on the impl side.
238 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 238 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
239 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 239 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
240 240
241 // Invalidates part of the top tile... 241 // Invalidates part of the top tile...
242 layer->invalidateContentRect(gfx::Rect(0, 0, 50, 50)); 242 layer->invalidateContentRect(gfx::Rect(0, 0, 50, 50));
243 // ....but the area is occluded. 243 // ....but the area is occluded.
244 occluded.setOcclusion(gfx::Rect(0, 0, 50, 50)); 244 occluded.setOcclusion(gfx::Rect(0, 0, 50, 50));
245 calcDrawProps(layer); 245 calcDrawProps(layer);
246 updateAndPush(layer, layerImpl); 246 updateAndPush(layer, layerImpl);
247 247
248 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 248 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
249 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 20000 + 2500, 1); 249 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 20000 + 2500, 1);
250 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 250 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
251 251
252 // We should still have both tiles, as part of the top tile is still unocclu ded. 252 // We should still have both tiles, as part of the top tile is still unocclu ded.
253 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 253 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
254 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 254 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
255 } 255 }
256 256
257 TEST_F(TiledLayerTest, pushDeletedTiles) 257 TEST_F(TiledLayerTest, pushDeletedTiles)
258 { 258 {
259 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 259 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
260 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1)); 260 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 // The tile size is 100x100, so this invalidates one occluded tile, culls it during paint, but prepaints it. 460 // The tile size is 100x100, so this invalidates one occluded tile, culls it during paint, but prepaints it.
461 occluded.setOcclusion(gfx::Rect(0, 0, 100, 100)); 461 occluded.setOcclusion(gfx::Rect(0, 0, 100, 100));
462 462
463 layer->setBounds(gfx::Size(100, 100)); 463 layer->setBounds(gfx::Size(100, 100));
464 calcDrawProps(layer); 464 calcDrawProps(layer);
465 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 465 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
466 updateAndPush(layer, layerImpl); 466 updateAndPush(layer, layerImpl);
467 467
468 // We should have the prepainted tile on the impl side, but culled it during paint. 468 // We should have the prepainted tile on the impl side, but culled it during paint.
469 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 469 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
470 EXPECT_EQ(1, occluded.OverdrawMetrics().tilesCulledForUpload()); 470 EXPECT_EQ(1, occluded.OverdrawMetrics().tiles_culled_for_upload());
471 } 471 }
472 472
473 TEST_F(TiledLayerTest, pushTilesMarkedDirtyDuringPaint) 473 TEST_F(TiledLayerTest, pushTilesMarkedDirtyDuringPaint)
474 { 474 {
475 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 475 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
476 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1)); 476 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
477 477
478 // The tile size is 100x100, so this invalidates and then paints two tiles. 478 // The tile size is 100x100, so this invalidates and then paints two tiles.
479 // However, during the paint, we invalidate one of the tiles. This should 479 // However, during the paint, we invalidate one of the tiles. This should
480 // not prevent the tile from being pushed. 480 // not prevent the tile from being pushed.
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1023 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1024 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds()); 1024 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds());
1025 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1025 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1026 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1026 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1027 1027
1028 layer->setTexturePriorities(m_priorityCalculator); 1028 layer->setTexturePriorities(m_priorityCalculator);
1029 m_resourceManager->prioritizeTextures(); 1029 m_resourceManager->prioritizeTextures();
1030 layer->update(*m_queue.get(), &occluded, NULL); 1030 layer->update(*m_queue.get(), &occluded, NULL);
1031 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1031 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1032 1032
1033 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1033 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1034 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1034 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 330000 , 1);
1035 EXPECT_EQ(3, occluded.OverdrawMetrics().tilesCulledForUpload()); 1035 EXPECT_EQ(3, occluded.OverdrawMetrics().tiles_culled_for_upload());
1036 1036
1037 layer->fakeLayerUpdater()->clearUpdateCount(); 1037 layer->fakeLayerUpdater()->clearUpdateCount();
1038 layer->setTexturePriorities(m_priorityCalculator); 1038 layer->setTexturePriorities(m_priorityCalculator);
1039 m_resourceManager->prioritizeTextures(); 1039 m_resourceManager->prioritizeTextures();
1040 1040
1041 occluded.setOcclusion(gfx::Rect(250, 200, 300, 100)); 1041 occluded.setOcclusion(gfx::Rect(250, 200, 300, 100));
1042 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1042 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1043 layer->update(*m_queue.get(), &occluded, NULL); 1043 layer->update(*m_queue.get(), &occluded, NULL);
1044 EXPECT_EQ(36-2, layer->fakeLayerUpdater()->updateCount()); 1044 EXPECT_EQ(36-2, layer->fakeLayerUpdater()->updateCount());
1045 1045
1046 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1046 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1047 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000, 1); 1047 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 330000 + 340000, 1);
1048 EXPECT_EQ(3 + 2, occluded.OverdrawMetrics().tilesCulledForUpload()); 1048 EXPECT_EQ(3 + 2, occluded.OverdrawMetrics().tiles_culled_for_upload());
1049 1049
1050 layer->fakeLayerUpdater()->clearUpdateCount(); 1050 layer->fakeLayerUpdater()->clearUpdateCount();
1051 layer->setTexturePriorities(m_priorityCalculator); 1051 layer->setTexturePriorities(m_priorityCalculator);
1052 m_resourceManager->prioritizeTextures(); 1052 m_resourceManager->prioritizeTextures();
1053 1053
1054 occluded.setOcclusion(gfx::Rect(250, 250, 300, 100)); 1054 occluded.setOcclusion(gfx::Rect(250, 250, 300, 100));
1055 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1055 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1056 layer->update(*m_queue.get(), &occluded, NULL); 1056 layer->update(*m_queue.get(), &occluded, NULL);
1057 EXPECT_EQ(36, layer->fakeLayerUpdater()->updateCount()); 1057 EXPECT_EQ(36, layer->fakeLayerUpdater()->updateCount());
1058 1058
1059 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1059 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1060 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000 + 360000, 1); 1060 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 330000 + 340000 + 360000, 1);
1061 EXPECT_EQ(3 + 2, occluded.OverdrawMetrics().tilesCulledForUpload()); 1061 EXPECT_EQ(3 + 2, occluded.OverdrawMetrics().tiles_culled_for_upload());
1062 } 1062 }
1063 1063
1064 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints) 1064 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints)
1065 { 1065 {
1066 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1066 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1067 TestOcclusionTracker occluded; 1067 TestOcclusionTracker occluded;
1068 m_occlusion = &occluded; 1068 m_occlusion = &occluded;
1069 1069
1070 // The tile size is 100x100. 1070 // The tile size is 100x100.
1071 1071
1072 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1072 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1073 layer->setBounds(gfx::Size(600, 600)); 1073 layer->setBounds(gfx::Size(600, 600));
1074 calcDrawProps(layer); 1074 calcDrawProps(layer);
1075 1075
1076 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled. 1076 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled.
1077 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1077 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1078 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 360); 1078 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 360);
1079 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 360); 1079 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 360);
1080 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1080 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1081 1081
1082 layer->setTexturePriorities(m_priorityCalculator); 1082 layer->setTexturePriorities(m_priorityCalculator);
1083 m_resourceManager->prioritizeTextures(); 1083 m_resourceManager->prioritizeTextures();
1084 layer->update(*m_queue.get(), &occluded, NULL); 1084 layer->update(*m_queue.get(), &occluded, NULL);
1085 EXPECT_EQ(24-3, layer->fakeLayerUpdater()->updateCount()); 1085 EXPECT_EQ(24-3, layer->fakeLayerUpdater()->updateCount());
1086 1086
1087 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1087 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1088 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 210000, 1); 1088 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 210000 , 1);
1089 EXPECT_EQ(3, occluded.OverdrawMetrics().tilesCulledForUpload()); 1089 EXPECT_EQ(3, occluded.OverdrawMetrics().tiles_culled_for_upload());
1090 1090
1091 layer->fakeLayerUpdater()->clearUpdateCount(); 1091 layer->fakeLayerUpdater()->clearUpdateCount();
1092 1092
1093 // Now the visible region stops at the edge of the occlusion so the partly v isible tiles become fully occluded. 1093 // Now the visible region stops at the edge of the occlusion so the partly v isible tiles become fully occluded.
1094 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1094 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1095 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 350); 1095 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 350);
1096 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 350); 1096 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 350);
1097 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1097 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1098 layer->setTexturePriorities(m_priorityCalculator); 1098 layer->setTexturePriorities(m_priorityCalculator);
1099 m_resourceManager->prioritizeTextures(); 1099 m_resourceManager->prioritizeTextures();
1100 layer->update(*m_queue.get(), &occluded, NULL); 1100 layer->update(*m_queue.get(), &occluded, NULL);
1101 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount()); 1101 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount());
1102 1102
1103 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1103 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1104 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000, 1); 1104 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 210000 + 180000, 1);
1105 EXPECT_EQ(3 + 6, occluded.OverdrawMetrics().tilesCulledForUpload()); 1105 EXPECT_EQ(3 + 6, occluded.OverdrawMetrics().tiles_culled_for_upload());
1106 1106
1107 layer->fakeLayerUpdater()->clearUpdateCount(); 1107 layer->fakeLayerUpdater()->clearUpdateCount();
1108 1108
1109 // Now the visible region is even smaller than the occlusion, it should have the same result. 1109 // Now the visible region is even smaller than the occlusion, it should have the same result.
1110 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1110 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1111 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 340); 1111 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 340);
1112 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 340); 1112 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 340);
1113 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1113 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1114 layer->setTexturePriorities(m_priorityCalculator); 1114 layer->setTexturePriorities(m_priorityCalculator);
1115 m_resourceManager->prioritizeTextures(); 1115 m_resourceManager->prioritizeTextures();
1116 layer->update(*m_queue.get(), &occluded, NULL); 1116 layer->update(*m_queue.get(), &occluded, NULL);
1117 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount()); 1117 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount());
1118 1118
1119 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1119 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1120 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000 + 180000, 1); 1120 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 210000 + 180000 + 180000, 1);
1121 EXPECT_EQ(3 + 6 + 6, occluded.OverdrawMetrics().tilesCulledForUpload()); 1121 EXPECT_EQ(3 + 6 + 6, occluded.OverdrawMetrics().tiles_culled_for_upload());
1122 1122
1123 } 1123 }
1124 1124
1125 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation) 1125 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation)
1126 { 1126 {
1127 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1127 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1128 TestOcclusionTracker occluded; 1128 TestOcclusionTracker occluded;
1129 m_occlusion = &occluded; 1129 m_occlusion = &occluded;
1130 1130
1131 // The tile size is 100x100. 1131 // The tile size is 100x100.
1132 1132
1133 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1133 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1134 layer->setBounds(gfx::Size(600, 600)); 1134 layer->setBounds(gfx::Size(600, 600));
1135 calcDrawProps(layer); 1135 calcDrawProps(layer);
1136 1136
1137 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1137 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1138 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 600); 1138 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 600);
1139 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 600); 1139 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 600);
1140 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1140 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1141 layer->setTexturePriorities(m_priorityCalculator); 1141 layer->setTexturePriorities(m_priorityCalculator);
1142 m_resourceManager->prioritizeTextures(); 1142 m_resourceManager->prioritizeTextures();
1143 layer->update(*m_queue.get(), &occluded, NULL); 1143 layer->update(*m_queue.get(), &occluded, NULL);
1144 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1144 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1145 { 1145 {
1146 updateTextures(); 1146 updateTextures();
1147 } 1147 }
1148 1148
1149 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1149 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1150 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1150 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 330000 , 1);
1151 EXPECT_EQ(3, occluded.OverdrawMetrics().tilesCulledForUpload()); 1151 EXPECT_EQ(3, occluded.OverdrawMetrics().tiles_culled_for_upload());
1152 1152
1153 layer->fakeLayerUpdater()->clearUpdateCount(); 1153 layer->fakeLayerUpdater()->clearUpdateCount();
1154 layer->setTexturePriorities(m_priorityCalculator); 1154 layer->setTexturePriorities(m_priorityCalculator);
1155 m_resourceManager->prioritizeTextures(); 1155 m_resourceManager->prioritizeTextures();
1156 1156
1157 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted now. 1157 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted now.
1158 layer->update(*m_queue.get(), &occluded, NULL); 1158 layer->update(*m_queue.get(), &occluded, NULL);
1159 EXPECT_EQ(3, layer->fakeLayerUpdater()->updateCount()); 1159 EXPECT_EQ(3, layer->fakeLayerUpdater()->updateCount());
1160 1160
1161 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1161 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1162 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1162 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 330000 , 1);
1163 EXPECT_EQ(6, occluded.OverdrawMetrics().tilesCulledForUpload()); 1163 EXPECT_EQ(6, occluded.OverdrawMetrics().tiles_culled_for_upload());
1164 } 1164 }
1165 1165
1166 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms) 1166 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms)
1167 { 1167 {
1168 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1168 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1169 TestOcclusionTracker occluded; 1169 TestOcclusionTracker occluded;
1170 m_occlusion = &occluded; 1170 m_occlusion = &occluded;
1171 1171
1172 // The tile size is 100x100. 1172 // The tile size is 100x100.
1173 1173
1174 // This makes sure the painting works when the occluded region (in screen sp ace) 1174 // This makes sure the painting works when the occluded region (in screen sp ace)
1175 // is transformed differently than the layer. 1175 // is transformed differently than the layer.
1176 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1176 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1177 layer->setBounds(gfx::Size(600, 600)); 1177 layer->setBounds(gfx::Size(600, 600));
1178 calcDrawProps(layer); 1178 calcDrawProps(layer);
1179 gfx::Transform screenTransform; 1179 gfx::Transform screenTransform;
1180 screenTransform.Scale(0.5, 0.5); 1180 screenTransform.Scale(0.5, 0.5);
1181 layer->drawProperties().screen_space_transform = screenTransform; 1181 layer->drawProperties().screen_space_transform = screenTransform;
1182 layer->drawProperties().target_space_transform = screenTransform; 1182 layer->drawProperties().target_space_transform = screenTransform;
1183 1183
1184 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50)); 1184 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50));
1185 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds()); 1185 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds());
1186 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1186 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1187 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1187 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1188 layer->setTexturePriorities(m_priorityCalculator); 1188 layer->setTexturePriorities(m_priorityCalculator);
1189 m_resourceManager->prioritizeTextures(); 1189 m_resourceManager->prioritizeTextures();
1190 layer->update(*m_queue.get(), &occluded, NULL); 1190 layer->update(*m_queue.get(), &occluded, NULL);
1191 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1191 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1192 1192
1193 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1193 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1194 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1194 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 330000 , 1);
1195 EXPECT_EQ(3, occluded.OverdrawMetrics().tilesCulledForUpload()); 1195 EXPECT_EQ(3, occluded.OverdrawMetrics().tiles_culled_for_upload());
1196 } 1196 }
1197 1197
1198 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) 1198 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling)
1199 { 1199 {
1200 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1200 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1201 TestOcclusionTracker occluded; 1201 TestOcclusionTracker occluded;
1202 m_occlusion = &occluded; 1202 m_occlusion = &occluded;
1203 1203
1204 // The tile size is 100x100. 1204 // The tile size is 100x100.
1205 1205
(...skipping 16 matching lines...) Expand all
1222 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1222 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1223 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1223 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1224 layer->setTexturePriorities(m_priorityCalculator); 1224 layer->setTexturePriorities(m_priorityCalculator);
1225 m_resourceManager->prioritizeTextures(); 1225 m_resourceManager->prioritizeTextures();
1226 layer->update(*m_queue.get(), &occluded, NULL); 1226 layer->update(*m_queue.get(), &occluded, NULL);
1227 // The content is half the size of the layer (so the number of tiles is fewe r). 1227 // The content is half the size of the layer (so the number of tiles is fewe r).
1228 // In this case, the content is 300x300, and since the tile size is 100, the 1228 // In this case, the content is 300x300, and since the tile size is 100, the
1229 // number of tiles 3x3. 1229 // number of tiles 3x3.
1230 EXPECT_EQ(9, layer->fakeLayerUpdater()->updateCount()); 1230 EXPECT_EQ(9, layer->fakeLayerUpdater()->updateCount());
1231 1231
1232 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1232 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1233 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 90000, 1 ); 1233 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 90000, 1);
1234 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1234 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1235 1235
1236 layer->fakeLayerUpdater()->clearUpdateCount(); 1236 layer->fakeLayerUpdater()->clearUpdateCount();
1237 1237
1238 // This makes sure the painting works when the content space is scaled to 1238 // This makes sure the painting works when the content space is scaled to
1239 // a different layer space. In this case the occluded region catches the 1239 // a different layer space. In this case the occluded region catches the
1240 // blown up tiles. 1240 // blown up tiles.
1241 occluded.setOcclusion(gfx::Rect(200, 200, 300, 200)); 1241 occluded.setOcclusion(gfx::Rect(200, 200, 300, 200));
1242 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds()); 1242 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds());
1243 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1243 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1244 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1244 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1245 layer->setTexturePriorities(m_priorityCalculator); 1245 layer->setTexturePriorities(m_priorityCalculator);
1246 m_resourceManager->prioritizeTextures(); 1246 m_resourceManager->prioritizeTextures();
1247 layer->update(*m_queue.get(), &occluded, NULL); 1247 layer->update(*m_queue.get(), &occluded, NULL);
1248 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount()); 1248 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount());
1249 1249
1250 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1250 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1251 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 90000 + 80000, 1); 1251 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 90000 + 80000, 1);
1252 EXPECT_EQ(1, occluded.OverdrawMetrics().tilesCulledForUpload()); 1252 EXPECT_EQ(1, occluded.OverdrawMetrics().tiles_culled_for_upload());
1253 1253
1254 layer->fakeLayerUpdater()->clearUpdateCount(); 1254 layer->fakeLayerUpdater()->clearUpdateCount();
1255 1255
1256 // This makes sure content scaling and transforms work together. 1256 // This makes sure content scaling and transforms work together.
1257 gfx::Transform screenTransform; 1257 gfx::Transform screenTransform;
1258 screenTransform.Scale(0.5, 0.5); 1258 screenTransform.Scale(0.5, 0.5);
1259 layer->drawProperties().screen_space_transform = screenTransform; 1259 layer->drawProperties().screen_space_transform = screenTransform;
1260 layer->drawProperties().target_space_transform = screenTransform; 1260 layer->drawProperties().target_space_transform = screenTransform;
1261 1261
1262 occluded.setOcclusion(gfx::Rect(100, 100, 150, 100)); 1262 occluded.setOcclusion(gfx::Rect(100, 100, 150, 100));
1263 1263
1264 gfx::Rect layerBoundsRect(gfx::Point(), layer->bounds()); 1264 gfx::Rect layerBoundsRect(gfx::Point(), layer->bounds());
1265 layer->drawProperties().drawable_content_rect = gfx::ToEnclosingRect(gfx::Sc aleRect(layerBoundsRect, 0.5)); 1265 layer->drawProperties().drawable_content_rect = gfx::ToEnclosingRect(gfx::Sc aleRect(layerBoundsRect, 0.5));
1266 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1266 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1267 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1267 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1268 layer->setTexturePriorities(m_priorityCalculator); 1268 layer->setTexturePriorities(m_priorityCalculator);
1269 m_resourceManager->prioritizeTextures(); 1269 m_resourceManager->prioritizeTextures();
1270 layer->update(*m_queue.get(), &occluded, NULL); 1270 layer->update(*m_queue.get(), &occluded, NULL);
1271 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount()); 1271 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount());
1272 1272
1273 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1273 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1274 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 90000 + 80000 + 80000, 1); 1274 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 90000 + 80000 + 80000, 1);
1275 EXPECT_EQ(1 + 1, occluded.OverdrawMetrics().tilesCulledForUpload()); 1275 EXPECT_EQ(1 + 1, occluded.OverdrawMetrics().tiles_culled_for_upload());
1276 } 1276 }
1277 1277
1278 TEST_F(TiledLayerTest, visibleContentOpaqueRegion) 1278 TEST_F(TiledLayerTest, visibleContentOpaqueRegion)
1279 { 1279 {
1280 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1280 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1281 TestOcclusionTracker occluded; 1281 TestOcclusionTracker occluded;
1282 m_occlusion = &occluded; 1282 m_occlusion = &occluded;
1283 m_layerTreeHost->setViewportSize(gfx::Size(1000, 1000), gfx::Size(1000, 1000 )); 1283 m_layerTreeHost->setViewportSize(gfx::Size(1000, 1000), gfx::Size(1000, 1000 ));
1284 1284
1285 // The tile size is 100x100, so this invalidates and then paints two tiles i n various ways. 1285 // The tile size is 100x100, so this invalidates and then paints two tiles i n various ways.
(...skipping 11 matching lines...) Expand all
1297 1297
1298 // If the layer doesn't paint opaque content, then the visibleContentOpaqueR egion should be empty. 1298 // If the layer doesn't paint opaque content, then the visibleContentOpaqueR egion should be empty.
1299 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1299 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1300 layer->invalidateContentRect(contentBounds); 1300 layer->invalidateContentRect(contentBounds);
1301 layer->setTexturePriorities(m_priorityCalculator); 1301 layer->setTexturePriorities(m_priorityCalculator);
1302 m_resourceManager->prioritizeTextures(); 1302 m_resourceManager->prioritizeTextures();
1303 layer->update(*m_queue.get(), &occluded, NULL); 1303 layer->update(*m_queue.get(), &occluded, NULL);
1304 opaqueContents = layer->visibleContentOpaqueRegion(); 1304 opaqueContents = layer->visibleContentOpaqueRegion();
1305 EXPECT_TRUE(opaqueContents.IsEmpty()); 1305 EXPECT_TRUE(opaqueContents.IsEmpty());
1306 1306
1307 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsPainted(), 20000, 1); 1307 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_painted(), 20000, 1);
1308 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1308 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1309 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 ); 1309 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 20000, 1);
1310 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1310 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1311 1311
1312 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque. 1312 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque.
1313 opaquePaintRect = gfx::Rect(10, 10, 90, 190); 1313 opaquePaintRect = gfx::Rect(10, 10, 90, 190);
1314 layer->fakeLayerUpdater()->setOpaquePaintRect(opaquePaintRect); 1314 layer->fakeLayerUpdater()->setOpaquePaintRect(opaquePaintRect);
1315 layer->invalidateContentRect(contentBounds); 1315 layer->invalidateContentRect(contentBounds);
1316 layer->setTexturePriorities(m_priorityCalculator); 1316 layer->setTexturePriorities(m_priorityCalculator);
1317 m_resourceManager->prioritizeTextures(); 1317 m_resourceManager->prioritizeTextures();
1318 layer->update(*m_queue.get(), &occluded, NULL); 1318 layer->update(*m_queue.get(), &occluded, NULL);
1319 updateTextures(); 1319 updateTextures();
1320 opaqueContents = layer->visibleContentOpaqueRegion(); 1320 opaqueContents = layer->visibleContentOpaqueRegion();
1321 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1321 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1322 1322
1323 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsPainted(), 20000 * 2, 1); 1323 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_painted(), 20000 * 2, 1);
1324 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1324 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 17100, 1);
1325 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1); 1325 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 20000 + 20000 - 17100, 1);
1326 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1326 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1327 1327
1328 // If we paint again without invalidating, the same stuff should be opaque. 1328 // If we paint again without invalidating, the same stuff should be opaque.
1329 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1329 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1330 layer->setTexturePriorities(m_priorityCalculator); 1330 layer->setTexturePriorities(m_priorityCalculator);
1331 m_resourceManager->prioritizeTextures(); 1331 m_resourceManager->prioritizeTextures();
1332 layer->update(*m_queue.get(), &occluded, NULL); 1332 layer->update(*m_queue.get(), &occluded, NULL);
1333 updateTextures(); 1333 updateTextures();
1334 opaqueContents = layer->visibleContentOpaqueRegion(); 1334 opaqueContents = layer->visibleContentOpaqueRegion();
1335 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1335 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1336 1336
1337 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsPainted(), 20000 * 2, 1); 1337 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_painted(), 20000 * 2, 1);
1338 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1338 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 17100, 1);
1339 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1); 1339 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 20000 + 20000 - 17100, 1);
1340 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1340 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1341 1341
1342 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should 1342 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should
1343 // not be affected. 1343 // not be affected.
1344 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1344 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1345 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1)); 1345 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1));
1346 layer->setTexturePriorities(m_priorityCalculator); 1346 layer->setTexturePriorities(m_priorityCalculator);
1347 m_resourceManager->prioritizeTextures(); 1347 m_resourceManager->prioritizeTextures();
1348 layer->update(*m_queue.get(), &occluded, NULL); 1348 layer->update(*m_queue.get(), &occluded, NULL);
1349 updateTextures(); 1349 updateTextures();
1350 opaqueContents = layer->visibleContentOpaqueRegion(); 1350 opaqueContents = layer->visibleContentOpaqueRegion();
1351 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1351 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1352 1352
1353 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsPainted(), 20000 * 2 + 1, 1); 1353 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_painted(), 20000 * 2 + 1, 1);
1354 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1354 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 17100, 1);
1355 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1, 1); 1355 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 20000 + 20000 - 17100 + 1, 1);
1356 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1356 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1357 1357
1358 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still 1358 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still
1359 // not be affected. 1359 // not be affected.
1360 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1360 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1361 layer->invalidateContentRect(gfx::Rect(10, 10, 1, 1)); 1361 layer->invalidateContentRect(gfx::Rect(10, 10, 1, 1));
1362 layer->setTexturePriorities(m_priorityCalculator); 1362 layer->setTexturePriorities(m_priorityCalculator);
1363 m_resourceManager->prioritizeTextures(); 1363 m_resourceManager->prioritizeTextures();
1364 layer->update(*m_queue.get(), &occluded, NULL); 1364 layer->update(*m_queue.get(), &occluded, NULL);
1365 updateTextures(); 1365 updateTextures();
1366 opaqueContents = layer->visibleContentOpaqueRegion(); 1366 opaqueContents = layer->visibleContentOpaqueRegion();
1367 EXPECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBounds).To String(), opaqueContents.ToString()); 1367 EXPECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBounds).To String(), opaqueContents.ToString());
1368 1368
1369 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsPainted(), 20000 * 2 + 1 + 1, 1); 1369 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_painted(), 20000 * 2 + 1 + 1, 1);
1370 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1370 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 17100, 1);
1371 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1 + 1, 1); 1371 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 20000 + 20000 - 17100 + 1 + 1, 1);
1372 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1372 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1373 } 1373 }
1374 1374
1375 TEST_F(TiledLayerTest, pixelsPaintedMetrics) 1375 TEST_F(TiledLayerTest, pixels_paintedMetrics)
1376 { 1376 {
1377 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1377 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1378 TestOcclusionTracker occluded; 1378 TestOcclusionTracker occluded;
1379 m_occlusion = &occluded; 1379 m_occlusion = &occluded;
1380 m_layerTreeHost->setViewportSize(gfx::Size(1000, 1000), gfx::Size(1000, 1000 )); 1380 m_layerTreeHost->setViewportSize(gfx::Size(1000, 1000), gfx::Size(1000, 1000 ));
1381 1381
1382 // The tile size is 100x100, so this invalidates and then paints two tiles i n various ways. 1382 // The tile size is 100x100, so this invalidates and then paints two tiles i n various ways.
1383 1383
1384 gfx::Rect opaquePaintRect; 1384 gfx::Rect opaquePaintRect;
1385 Region opaqueContents; 1385 Region opaqueContents;
1386 1386
1387 gfx::Rect contentBounds = gfx::Rect(0, 0, 100, 300); 1387 gfx::Rect contentBounds = gfx::Rect(0, 0, 100, 300);
1388 layer->setBounds(contentBounds.size()); 1388 layer->setBounds(contentBounds.size());
1389 calcDrawProps(layer); 1389 calcDrawProps(layer);
1390 1390
1391 // Invalidates and paints the whole layer. 1391 // Invalidates and paints the whole layer.
1392 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1392 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1393 layer->invalidateContentRect(contentBounds); 1393 layer->invalidateContentRect(contentBounds);
1394 layer->setTexturePriorities(m_priorityCalculator); 1394 layer->setTexturePriorities(m_priorityCalculator);
1395 m_resourceManager->prioritizeTextures(); 1395 m_resourceManager->prioritizeTextures();
1396 layer->update(*m_queue.get(), &occluded, NULL); 1396 layer->update(*m_queue.get(), &occluded, NULL);
1397 updateTextures(); 1397 updateTextures();
1398 opaqueContents = layer->visibleContentOpaqueRegion(); 1398 opaqueContents = layer->visibleContentOpaqueRegion();
1399 EXPECT_TRUE(opaqueContents.IsEmpty()); 1399 EXPECT_TRUE(opaqueContents.IsEmpty());
1400 1400
1401 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsPainted(), 30000, 1); 1401 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_painted(), 30000, 1);
1402 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1402 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1403 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 30000, 1 ); 1403 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 30000, 1);
1404 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1404 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1405 1405
1406 // Invalidates an area on the top and bottom tile, which will cause us to pa int the tile in the middle, 1406 // Invalidates an area on the top and bottom tile, which will cause us to pa int the tile in the middle,
1407 // even though it is not dirty and will not be uploaded. 1407 // even though it is not dirty and will not be uploaded.
1408 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1408 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1409 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1)); 1409 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1));
1410 layer->invalidateContentRect(gfx::Rect(50, 200, 10, 10)); 1410 layer->invalidateContentRect(gfx::Rect(50, 200, 10, 10));
1411 layer->setTexturePriorities(m_priorityCalculator); 1411 layer->setTexturePriorities(m_priorityCalculator);
1412 m_resourceManager->prioritizeTextures(); 1412 m_resourceManager->prioritizeTextures();
1413 layer->update(*m_queue.get(), &occluded, NULL); 1413 layer->update(*m_queue.get(), &occluded, NULL);
1414 updateTextures(); 1414 updateTextures();
1415 opaqueContents = layer->visibleContentOpaqueRegion(); 1415 opaqueContents = layer->visibleContentOpaqueRegion();
1416 EXPECT_TRUE(opaqueContents.IsEmpty()); 1416 EXPECT_TRUE(opaqueContents.IsEmpty());
1417 1417
1418 // The middle tile was painted even though not invalidated. 1418 // The middle tile was painted even though not invalidated.
1419 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsPainted(), 30000 + 60 * 210, 1) ; 1419 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_painted(), 30000 + 60 * 210, 1 );
1420 // The pixels uploaded will not include the non-invalidated tile in the midd le. 1420 // The pixels uploaded will not include the non-invalidated tile in the midd le.
1421 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1421 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_opaque(), 0, 1);
1422 EXPECT_NEAR(occluded.OverdrawMetrics().pixelsUploadedTranslucent(), 30000 + 1 + 100, 1); 1422 EXPECT_NEAR(occluded.OverdrawMetrics().pixels_uploaded_translucent(), 30000 + 1 + 100, 1);
1423 EXPECT_EQ(0, occluded.OverdrawMetrics().tilesCulledForUpload()); 1423 EXPECT_EQ(0, occluded.OverdrawMetrics().tiles_culled_for_upload());
1424 } 1424 }
1425 1425
1426 TEST_F(TiledLayerTest, dontAllocateContentsWhenTargetSurfaceCantBeAllocated) 1426 TEST_F(TiledLayerTest, dontAllocateContentsWhenTargetSurfaceCantBeAllocated)
1427 { 1427 {
1428 // Tile size is 100x100. 1428 // Tile size is 100x100.
1429 gfx::Rect rootRect(0, 0, 300, 200); 1429 gfx::Rect rootRect(0, 0, 300, 200);
1430 gfx::Rect childRect(0, 0, 300, 100); 1430 gfx::Rect childRect(0, 0, 300, 100);
1431 gfx::Rect child2Rect(0, 100, 300, 100); 1431 gfx::Rect child2Rect(0, 100, 300, 100);
1432 1432
1433 scoped_refptr<FakeTiledLayer> root = make_scoped_refptr(new FakeTiledLayer(m _layerTreeHost->contentsTextureManager())); 1433 scoped_refptr<FakeTiledLayer> root = make_scoped_refptr(new FakeTiledLayer(m _layerTreeHost->contentsTextureManager()));
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 1666
1667 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds. 1667 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds.
1668 layer->setNeedsDisplayRect(layerRect); 1668 layer->setNeedsDisplayRect(layerRect);
1669 layer->update(*m_queue.get(), 0, NULL); 1669 layer->update(*m_queue.get(), 0, NULL);
1670 1670
1671 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); 1671 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect());
1672 } 1672 }
1673 1673
1674 } // namespace 1674 } // namespace
1675 } // namespace cc 1675 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiled_layer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698