| 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 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 path.lineTo(0, 100); | 520 path.lineTo(0, 100); |
| 521 path.lineTo(50, 50); | 521 path.lineTo(50, 50); |
| 522 path.lineTo(100, 100); | 522 path.lineTo(100, 100); |
| 523 path.lineTo(100, 0); | 523 path.lineTo(100, 0); |
| 524 path.close(); | 524 path.close(); |
| 525 | 525 |
| 526 SkPaint paint; | 526 SkPaint paint; |
| 527 paint.setAntiAlias(true); | 527 paint.setAntiAlias(true); |
| 528 canvas->drawPath(path, paint); | 528 canvas->drawPath(path, paint); |
| 529 | 529 |
| 530 list->CreateAndAppendItem<DrawingDisplayItem>( | 530 skia::RefPtr<SkPicture> suitable_picture = |
| 531 kVisualRect, skia::AdoptRef(recorder.endRecordingAsPicture())); | 531 skia::AdoptRef(recorder.endRecordingAsPicture()); |
| 532 list->CreateAndAppendItem<DrawingDisplayItem>(kVisualRect, suitable_picture); |
| 532 list->Finalize(); | 533 list->Finalize(); |
| 533 | 534 |
| 534 // A single DrawingDisplayItem with a large AA concave path shouldn't trigger | 535 // A single DrawingDisplayItem with a large AA concave path shouldn't trigger |
| 535 // a veto. | 536 // a veto. |
| 536 EXPECT_TRUE(list->IsSuitableForGpuRasterization()); | 537 EXPECT_TRUE(list->IsSuitableForGpuRasterization()); |
| 537 | 538 |
| 539 // Now check the RasterIntoCanvas path. |
| 540 list = DisplayItemList::Create(layer_rect, settings); |
| 541 DrawingDisplayItem suitable_item(suitable_picture); |
| 542 list->RasterIntoCanvas(suitable_item); |
| 543 list->Finalize(); |
| 544 EXPECT_TRUE(list->IsSuitableForGpuRasterization()); |
| 545 |
| 538 list = DisplayItemList::Create(layer_rect, settings); | 546 list = DisplayItemList::Create(layer_rect, settings); |
| 539 canvas = | 547 canvas = |
| 540 skia::SharePtr(recorder.beginRecording(gfx::RectToSkRect(layer_rect))); | 548 skia::SharePtr(recorder.beginRecording(gfx::RectToSkRect(layer_rect))); |
| 541 for (int i = 0; i < 10; ++i) | 549 for (int i = 0; i < 10; ++i) |
| 542 canvas->drawPath(path, paint); | 550 canvas->drawPath(path, paint); |
| 543 list->CreateAndAppendItem<DrawingDisplayItem>( | 551 skia::RefPtr<SkPicture> unsuitable_picture = |
| 544 kVisualRect, skia::AdoptRef(recorder.endRecordingAsPicture())); | 552 skia::AdoptRef(recorder.endRecordingAsPicture()); |
| 553 list->CreateAndAppendItem<DrawingDisplayItem>(kVisualRect, |
| 554 unsuitable_picture); |
| 545 list->Finalize(); | 555 list->Finalize(); |
| 546 | 556 |
| 547 // A single DrawingDisplayItem with several large AA concave paths should | 557 // A single DrawingDisplayItem with several large AA concave paths should |
| 548 // trigger a veto. | 558 // trigger a veto. |
| 549 EXPECT_FALSE(list->IsSuitableForGpuRasterization()); | 559 EXPECT_FALSE(list->IsSuitableForGpuRasterization()); |
| 560 |
| 561 // Now check the RasterIntoCanvas path. |
| 562 list = DisplayItemList::Create(layer_rect, settings); |
| 563 DrawingDisplayItem unsuitable_item(unsuitable_picture); |
| 564 list->RasterIntoCanvas(unsuitable_item); |
| 565 list->Finalize(); |
| 566 EXPECT_FALSE(list->IsSuitableForGpuRasterization()); |
| 550 } | 567 } |
| 551 | 568 |
| 552 TEST(DisplayItemListTest, IsSuitableForGpuRasterizationWithoutCachedPicture) { | 569 TEST(DisplayItemListTest, IsSuitableForGpuRasterizationWithoutCachedPicture) { |
| 553 gfx::Rect layer_rect(1000, 1000); | 570 gfx::Rect layer_rect(1000, 1000); |
| 554 SkPictureRecorder recorder; | 571 SkPictureRecorder recorder; |
| 555 skia::RefPtr<SkCanvas> canvas; | 572 skia::RefPtr<SkCanvas> canvas; |
| 556 skia::RefPtr<SkPicture> picture; | 573 skia::RefPtr<SkPicture> picture; |
| 557 | 574 |
| 558 DisplayItemListSettings settings; | 575 DisplayItemListSettings settings; |
| 559 settings.use_cached_picture = false; | 576 settings.use_cached_picture = false; |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 | 751 |
| 735 value = list->AsValue(false)->ToString(); | 752 value = list->AsValue(false)->ToString(); |
| 736 EXPECT_EQ(value.find("\"items\":"), std::string::npos); | 753 EXPECT_EQ(value.find("\"items\":"), std::string::npos); |
| 737 EXPECT_NE(value.find("\"layer_rect\":[0,0,0,0]"), std::string::npos); | 754 EXPECT_NE(value.find("\"layer_rect\":[0,0,0,0]"), std::string::npos); |
| 738 // There should be no skp64 entry present as the items aren't included and the | 755 // There should be no skp64 entry present as the items aren't included and the |
| 739 // layer rect is empty. | 756 // layer rect is empty. |
| 740 EXPECT_EQ(value.find("\"skp64\":"), std::string::npos); | 757 EXPECT_EQ(value.find("\"skp64\":"), std::string::npos); |
| 741 } | 758 } |
| 742 | 759 |
| 743 } // namespace cc | 760 } // namespace cc |
| OLD | NEW |