OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/playback/display_item_list.h" | 5 #include "cc/playback/display_item_list.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "cc/output/filter_operation.h" | 9 #include "cc/output/filter_operation.h" |
10 #include "cc/output/filter_operations.h" | 10 #include "cc/output/filter_operations.h" |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 scoped_refptr<DisplayItemList> list_with_caching = | 277 scoped_refptr<DisplayItemList> list_with_caching = |
278 DisplayItemList::Create(layer_rect, use_cached_picture); | 278 DisplayItemList::Create(layer_rect, use_cached_picture); |
279 auto* item2 = list_with_caching->CreateAndAppendItem<DrawingDisplayItem>(); | 279 auto* item2 = list_with_caching->CreateAndAppendItem<DrawingDisplayItem>(); |
280 item2->SetNew(picture); | 280 item2->SetNew(picture); |
281 list_with_caching->Finalize(); | 281 list_with_caching->Finalize(); |
282 DrawDisplayList(expected_pixels, layer_rect, list_with_caching); | 282 DrawDisplayList(expected_pixels, layer_rect, list_with_caching); |
283 | 283 |
284 EXPECT_EQ(0, memcmp(pixels, expected_pixels, 4 * 100 * 100)); | 284 EXPECT_EQ(0, memcmp(pixels, expected_pixels, 4 * 100 * 100)); |
285 } | 285 } |
286 | 286 |
287 TEST(DisplayItemListTest, PictureMemoryUsage) { | 287 TEST(DisplayItemListTest, ApproximateMemoryUsage) { |
288 scoped_refptr<DisplayItemList> list; | 288 scoped_refptr<DisplayItemList> list; |
289 size_t memory_usage; | 289 size_t memory_usage; |
290 | 290 |
291 // Make an SkPicture whose size is known. | 291 // Make an SkPicture whose size is known. |
292 gfx::Rect layer_rect(100, 100); | 292 gfx::Rect layer_rect(100, 100); |
293 SkPictureRecorder recorder; | 293 SkPictureRecorder recorder; |
294 SkPaint blue_paint; | 294 SkPaint blue_paint; |
295 blue_paint.setColor(SK_ColorBLUE); | 295 blue_paint.setColor(SK_ColorBLUE); |
296 SkCanvas* canvas = recorder.beginRecording(gfx::RectFToSkRect(layer_rect)); | 296 SkCanvas* canvas = recorder.beginRecording(gfx::RectFToSkRect(layer_rect)); |
297 for (int i = 0; i < 100; i++) | 297 for (int i = 0; i < 100; i++) |
298 canvas->drawPaint(blue_paint); | 298 canvas->drawPaint(blue_paint); |
299 skia::RefPtr<SkPicture> picture = | 299 skia::RefPtr<SkPicture> picture = |
300 skia::AdoptRef(recorder.endRecordingAsPicture()); | 300 skia::AdoptRef(recorder.endRecordingAsPicture()); |
301 size_t picture_size = SkPictureUtils::ApproximateBytesUsed(picture.get()); | 301 size_t picture_size = SkPictureUtils::ApproximateBytesUsed(picture.get()); |
302 ASSERT_GE(picture_size, 100 * sizeof(SkPaint)); | 302 ASSERT_GE(picture_size, 100 * sizeof(SkPaint)); |
303 ASSERT_LE(picture_size, 200 * sizeof(SkPaint)); | 303 ASSERT_LE(picture_size, 200 * sizeof(SkPaint)); |
304 | 304 |
305 // Using a cached picture, we should get about the right size. | 305 // Using a cached picture, we should get about the right size. |
306 list = DisplayItemList::Create(layer_rect, true); | 306 list = DisplayItemList::Create(layer_rect, true); |
307 auto* item = list->CreateAndAppendItem<DrawingDisplayItem>(); | 307 auto* item = list->CreateAndAppendItem<DrawingDisplayItem>(); |
308 item->SetNew(picture); | 308 item->SetNew(picture); |
309 list->Finalize(); | 309 list->Finalize(); |
310 memory_usage = list->PictureMemoryUsage(); | 310 memory_usage = list->ApproximateMemoryUsage(); |
311 EXPECT_GE(memory_usage, picture_size); | 311 EXPECT_GE(memory_usage, picture_size); |
312 EXPECT_LE(memory_usage, 2 * picture_size); | 312 EXPECT_LE(memory_usage, 2 * picture_size); |
313 | 313 |
314 // Using no cached picture, we should still get the right size. | 314 // Using no cached picture, we should still get the right size. |
315 list = DisplayItemList::Create(layer_rect, false); | 315 list = DisplayItemList::Create(layer_rect, false); |
316 item = list->CreateAndAppendItem<DrawingDisplayItem>(); | 316 item = list->CreateAndAppendItem<DrawingDisplayItem>(); |
317 item->SetNew(picture); | 317 item->SetNew(picture); |
318 list->Finalize(); | 318 list->Finalize(); |
319 memory_usage = list->PictureMemoryUsage(); | 319 memory_usage = list->ApproximateMemoryUsage(); |
320 EXPECT_GE(memory_usage, picture_size); | 320 EXPECT_GE(memory_usage, picture_size); |
321 EXPECT_LE(memory_usage, 2 * picture_size); | 321 EXPECT_LE(memory_usage, 2 * picture_size); |
322 | 322 |
323 // To avoid double counting, we expect zero size to be computed if both the | 323 // To avoid double counting, we expect zero size to be computed if both the |
324 // picture and items are retained (currently this only happens due to certain | 324 // picture and items are retained (currently this only happens due to certain |
325 // categories being traced). | 325 // categories being traced). |
326 DisplayItemListSettings settings; | 326 DisplayItemListSettings settings; |
327 settings.use_cached_picture = true; | 327 settings.use_cached_picture = true; |
328 list = new DisplayItemList(layer_rect, settings, true); | 328 list = new DisplayItemList(layer_rect, settings, true); |
329 item = list->CreateAndAppendItem<DrawingDisplayItem>(); | 329 item = list->CreateAndAppendItem<DrawingDisplayItem>(); |
330 item->SetNew(picture); | 330 item->SetNew(picture); |
331 list->Finalize(); | 331 list->Finalize(); |
332 memory_usage = list->PictureMemoryUsage(); | 332 memory_usage = list->ApproximateMemoryUsage(); |
333 EXPECT_EQ(static_cast<size_t>(0), memory_usage); | 333 EXPECT_EQ(static_cast<size_t>(0), memory_usage); |
334 } | 334 } |
335 | 335 |
336 } // namespace cc | 336 } // namespace cc |
OLD | NEW |