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

Side by Side Diff: cc/output/renderer_pixeltest.cc

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 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
« no previous file with comments | « cc/output/renderer.h ('k') | cc/output/renderer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "cc/output/gl_renderer.h" 9 #include "cc/output/gl_renderer.h"
10 #include "cc/quads/draw_quad.h" 10 #include "cc/quads/draw_quad.h"
(...skipping 12 matching lines...) Expand all
23 #include "third_party/skia/include/effects/SkColorFilterImageFilter.h" 23 #include "third_party/skia/include/effects/SkColorFilterImageFilter.h"
24 #include "third_party/skia/include/effects/SkColorMatrixFilter.h" 24 #include "third_party/skia/include/effects/SkColorMatrixFilter.h"
25 #include "ui/gfx/geometry/rect_conversions.h" 25 #include "ui/gfx/geometry/rect_conversions.h"
26 26
27 using gpu::gles2::GLES2Interface; 27 using gpu::gles2::GLES2Interface;
28 28
29 namespace cc { 29 namespace cc {
30 namespace { 30 namespace {
31 31
32 #if !defined(OS_ANDROID) 32 #if !defined(OS_ANDROID)
33 scoped_ptr<RenderPass> CreateTestRootRenderPass(RenderPassId id, 33 std::unique_ptr<RenderPass> CreateTestRootRenderPass(RenderPassId id,
34 const gfx::Rect& rect) { 34 const gfx::Rect& rect) {
35 scoped_ptr<RenderPass> pass = RenderPass::Create(); 35 std::unique_ptr<RenderPass> pass = RenderPass::Create();
36 const gfx::Rect output_rect = rect; 36 const gfx::Rect output_rect = rect;
37 const gfx::Rect damage_rect = rect; 37 const gfx::Rect damage_rect = rect;
38 const gfx::Transform transform_to_root_target; 38 const gfx::Transform transform_to_root_target;
39 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target); 39 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target);
40 return pass; 40 return pass;
41 } 41 }
42 42
43 scoped_ptr<RenderPass> CreateTestRenderPass( 43 std::unique_ptr<RenderPass> CreateTestRenderPass(
44 RenderPassId id, 44 RenderPassId id,
45 const gfx::Rect& rect, 45 const gfx::Rect& rect,
46 const gfx::Transform& transform_to_root_target) { 46 const gfx::Transform& transform_to_root_target) {
47 scoped_ptr<RenderPass> pass = RenderPass::Create(); 47 std::unique_ptr<RenderPass> pass = RenderPass::Create();
48 const gfx::Rect output_rect = rect; 48 const gfx::Rect output_rect = rect;
49 const gfx::Rect damage_rect = rect; 49 const gfx::Rect damage_rect = rect;
50 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target); 50 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target);
51 return pass; 51 return pass;
52 } 52 }
53 53
54 SharedQuadState* CreateTestSharedQuadState( 54 SharedQuadState* CreateTestSharedQuadState(
55 gfx::Transform quad_to_target_transform, 55 gfx::Transform quad_to_target_transform,
56 const gfx::Rect& rect, 56 const gfx::Rect& rect,
57 RenderPass* render_pass) { 57 RenderPass* render_pass) {
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 bool FuzzyForSoftwareOnlyPixelComparator<RendererType>::Compare( 516 bool FuzzyForSoftwareOnlyPixelComparator<RendererType>::Compare(
517 const SkBitmap& actual_bmp, 517 const SkBitmap& actual_bmp,
518 const SkBitmap& expected_bmp) const { 518 const SkBitmap& expected_bmp) const {
519 return exact_.Compare(actual_bmp, expected_bmp); 519 return exact_.Compare(actual_bmp, expected_bmp);
520 } 520 }
521 521
522 TYPED_TEST(RendererPixelTest, SimpleGreenRect) { 522 TYPED_TEST(RendererPixelTest, SimpleGreenRect) {
523 gfx::Rect rect(this->device_viewport_size_); 523 gfx::Rect rect(this->device_viewport_size_);
524 524
525 RenderPassId id(1, 1); 525 RenderPassId id(1, 1);
526 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 526 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
527 527
528 SharedQuadState* shared_state = 528 SharedQuadState* shared_state =
529 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 529 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
530 530
531 SolidColorDrawQuad* color_quad = 531 SolidColorDrawQuad* color_quad =
532 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 532 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
533 color_quad->SetNew(shared_state, rect, rect, SK_ColorGREEN, false); 533 color_quad->SetNew(shared_state, rect, rect, SK_ColorGREEN, false);
534 534
535 RenderPassList pass_list; 535 RenderPassList pass_list;
536 pass_list.push_back(std::move(pass)); 536 pass_list.push_back(std::move(pass));
537 537
538 EXPECT_TRUE(this->RunPixelTest( 538 EXPECT_TRUE(this->RunPixelTest(
539 &pass_list, 539 &pass_list,
540 base::FilePath(FILE_PATH_LITERAL("green.png")), 540 base::FilePath(FILE_PATH_LITERAL("green.png")),
541 ExactPixelComparator(true))); 541 ExactPixelComparator(true)));
542 } 542 }
543 543
544 TYPED_TEST(RendererPixelTest, SimpleGreenRect_NonRootRenderPass) { 544 TYPED_TEST(RendererPixelTest, SimpleGreenRect_NonRootRenderPass) {
545 gfx::Rect rect(this->device_viewport_size_); 545 gfx::Rect rect(this->device_viewport_size_);
546 gfx::Rect small_rect(100, 100); 546 gfx::Rect small_rect(100, 100);
547 547
548 RenderPassId child_id(2, 1); 548 RenderPassId child_id(2, 1);
549 scoped_ptr<RenderPass> child_pass = 549 std::unique_ptr<RenderPass> child_pass =
550 CreateTestRenderPass(child_id, small_rect, gfx::Transform()); 550 CreateTestRenderPass(child_id, small_rect, gfx::Transform());
551 551
552 SharedQuadState* child_shared_state = 552 SharedQuadState* child_shared_state =
553 CreateTestSharedQuadState(gfx::Transform(), small_rect, child_pass.get()); 553 CreateTestSharedQuadState(gfx::Transform(), small_rect, child_pass.get());
554 554
555 SolidColorDrawQuad* color_quad = 555 SolidColorDrawQuad* color_quad =
556 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 556 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
557 color_quad->SetNew(child_shared_state, rect, rect, SK_ColorGREEN, false); 557 color_quad->SetNew(child_shared_state, rect, rect, SK_ColorGREEN, false);
558 558
559 RenderPassId root_id(1, 1); 559 RenderPassId root_id(1, 1);
560 scoped_ptr<RenderPass> root_pass = 560 std::unique_ptr<RenderPass> root_pass =
561 CreateTestRenderPass(root_id, rect, gfx::Transform()); 561 CreateTestRenderPass(root_id, rect, gfx::Transform());
562 562
563 SharedQuadState* root_shared_state = 563 SharedQuadState* root_shared_state =
564 CreateTestSharedQuadState(gfx::Transform(), rect, root_pass.get()); 564 CreateTestSharedQuadState(gfx::Transform(), rect, root_pass.get());
565 565
566 CreateTestRenderPassDrawQuad( 566 CreateTestRenderPassDrawQuad(
567 root_shared_state, small_rect, child_id, root_pass.get()); 567 root_shared_state, small_rect, child_id, root_pass.get());
568 568
569 RenderPass* child_pass_ptr = child_pass.get(); 569 RenderPass* child_pass_ptr = child_pass.get();
570 570
571 RenderPassList pass_list; 571 RenderPassList pass_list;
572 pass_list.push_back(std::move(child_pass)); 572 pass_list.push_back(std::move(child_pass));
573 pass_list.push_back(std::move(root_pass)); 573 pass_list.push_back(std::move(root_pass));
574 574
575 EXPECT_TRUE(this->RunPixelTestWithReadbackTarget( 575 EXPECT_TRUE(this->RunPixelTestWithReadbackTarget(
576 &pass_list, 576 &pass_list,
577 child_pass_ptr, 577 child_pass_ptr,
578 base::FilePath(FILE_PATH_LITERAL("green_small.png")), 578 base::FilePath(FILE_PATH_LITERAL("green_small.png")),
579 ExactPixelComparator(true))); 579 ExactPixelComparator(true)));
580 } 580 }
581 581
582 TYPED_TEST(RendererPixelTest, PremultipliedTextureWithoutBackground) { 582 TYPED_TEST(RendererPixelTest, PremultipliedTextureWithoutBackground) {
583 gfx::Rect rect(this->device_viewport_size_); 583 gfx::Rect rect(this->device_viewport_size_);
584 584
585 RenderPassId id(1, 1); 585 RenderPassId id(1, 1);
586 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 586 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
587 587
588 SharedQuadState* shared_state = 588 SharedQuadState* shared_state =
589 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 589 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
590 590
591 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_), 591 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_),
592 SkColorSetARGB(128, 0, 255, 0), // Texel color. 592 SkColorSetARGB(128, 0, 255, 0), // Texel color.
593 SK_ColorTRANSPARENT, // Background color. 593 SK_ColorTRANSPARENT, // Background color.
594 true, // Premultiplied alpha. 594 true, // Premultiplied alpha.
595 shared_state, 595 shared_state,
596 this->resource_provider_.get(), 596 this->resource_provider_.get(),
597 pass.get()); 597 pass.get());
598 598
599 SolidColorDrawQuad* color_quad = 599 SolidColorDrawQuad* color_quad =
600 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 600 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
601 color_quad->SetNew(shared_state, rect, rect, SK_ColorWHITE, false); 601 color_quad->SetNew(shared_state, rect, rect, SK_ColorWHITE, false);
602 602
603 RenderPassList pass_list; 603 RenderPassList pass_list;
604 pass_list.push_back(std::move(pass)); 604 pass_list.push_back(std::move(pass));
605 605
606 EXPECT_TRUE(this->RunPixelTest( 606 EXPECT_TRUE(this->RunPixelTest(
607 &pass_list, 607 &pass_list,
608 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), 608 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")),
609 FuzzyPixelOffByOneComparator(true))); 609 FuzzyPixelOffByOneComparator(true)));
610 } 610 }
611 611
612 TYPED_TEST(RendererPixelTest, PremultipliedTextureWithBackground) { 612 TYPED_TEST(RendererPixelTest, PremultipliedTextureWithBackground) {
613 gfx::Rect rect(this->device_viewport_size_); 613 gfx::Rect rect(this->device_viewport_size_);
614 614
615 RenderPassId id(1, 1); 615 RenderPassId id(1, 1);
616 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 616 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
617 617
618 SharedQuadState* texture_quad_state = 618 SharedQuadState* texture_quad_state =
619 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 619 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
620 texture_quad_state->opacity = 0.8f; 620 texture_quad_state->opacity = 0.8f;
621 621
622 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_), 622 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_),
623 SkColorSetARGB(204, 120, 255, 120), // Texel color. 623 SkColorSetARGB(204, 120, 255, 120), // Texel color.
624 SK_ColorGREEN, // Background color. 624 SK_ColorGREEN, // Background color.
625 true, // Premultiplied alpha. 625 true, // Premultiplied alpha.
626 texture_quad_state, 626 texture_quad_state,
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 pass_list_.push_back(std::move(render_pass_)); 705 pass_list_.push_back(std::move(render_pass_));
706 const base::FilePath::CharType* fileName = IntersectingQuadImage<T>(); 706 const base::FilePath::CharType* fileName = IntersectingQuadImage<T>();
707 EXPECT_TRUE( 707 EXPECT_TRUE(
708 this->RunPixelTest(&pass_list_, base::FilePath(fileName), comparator)); 708 this->RunPixelTest(&pass_list_, base::FilePath(fileName), comparator));
709 } 709 }
710 template <typename T> 710 template <typename T>
711 T* CreateAndAppendDrawQuad() { 711 T* CreateAndAppendDrawQuad() {
712 return render_pass_->CreateAndAppendDrawQuad<T>(); 712 return render_pass_->CreateAndAppendDrawQuad<T>();
713 } 713 }
714 714
715 scoped_ptr<RenderPass> render_pass_; 715 std::unique_ptr<RenderPass> render_pass_;
716 gfx::Rect viewport_rect_; 716 gfx::Rect viewport_rect_;
717 SharedQuadState* front_quad_state_; 717 SharedQuadState* front_quad_state_;
718 SharedQuadState* back_quad_state_; 718 SharedQuadState* back_quad_state_;
719 gfx::Rect quad_rect_; 719 gfx::Rect quad_rect_;
720 RenderPassList pass_list_; 720 RenderPassList pass_list_;
721 }; 721 };
722 722
723 template <typename TypeParam> 723 template <typename TypeParam>
724 class IntersectingQuadGLPixelTest 724 class IntersectingQuadGLPixelTest
725 : public IntersectingQuadPixelTest<TypeParam> { 725 : public IntersectingQuadPixelTest<TypeParam> {
726 public: 726 public:
727 void SetUp() override { 727 void SetUp() override {
728 IntersectingQuadPixelTest<TypeParam>::SetUp(); 728 IntersectingQuadPixelTest<TypeParam>::SetUp();
729 video_resource_updater_.reset( 729 video_resource_updater_.reset(
730 new VideoResourceUpdater(this->output_surface_->context_provider(), 730 new VideoResourceUpdater(this->output_surface_->context_provider(),
731 this->resource_provider_.get())); 731 this->resource_provider_.get()));
732 video_resource_updater2_.reset( 732 video_resource_updater2_.reset(
733 new VideoResourceUpdater(this->output_surface_->context_provider(), 733 new VideoResourceUpdater(this->output_surface_->context_provider(),
734 this->resource_provider_.get())); 734 this->resource_provider_.get()));
735 } 735 }
736 736
737 protected: 737 protected:
738 scoped_ptr<VideoResourceUpdater> video_resource_updater_; 738 std::unique_ptr<VideoResourceUpdater> video_resource_updater_;
739 scoped_ptr<VideoResourceUpdater> video_resource_updater2_; 739 std::unique_ptr<VideoResourceUpdater> video_resource_updater2_;
740 }; 740 };
741 741
742 template <typename TypeParam> 742 template <typename TypeParam>
743 class IntersectingQuadSoftwareTest 743 class IntersectingQuadSoftwareTest
744 : public IntersectingQuadPixelTest<TypeParam> {}; 744 : public IntersectingQuadPixelTest<TypeParam> {};
745 745
746 typedef ::testing::Types<SoftwareRenderer, SoftwareRendererWithExpandedViewport> 746 typedef ::testing::Types<SoftwareRenderer, SoftwareRendererWithExpandedViewport>
747 SoftwareRendererTypes; 747 SoftwareRendererTypes;
748 typedef ::testing::Types<GLRenderer, GLRendererWithExpandedViewport> 748 typedef ::testing::Types<GLRenderer, GLRendererWithExpandedViewport>
749 GLRendererTypes; 749 GLRendererTypes;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 this->quad_rect_.width() / 2, 810 this->quad_rect_.width() / 2,
811 this->quad_rect_.height() / 2); 811 this->quad_rect_.height() / 2);
812 812
813 SkPaint black_paint; 813 SkPaint black_paint;
814 black_paint.setColor(SK_ColorBLACK); 814 black_paint.setColor(SK_ColorBLACK);
815 SkPaint blue_paint; 815 SkPaint blue_paint;
816 blue_paint.setColor(SK_ColorBLUE); 816 blue_paint.setColor(SK_ColorBLUE);
817 SkPaint green_paint; 817 SkPaint green_paint;
818 green_paint.setColor(SK_ColorGREEN); 818 green_paint.setColor(SK_ColorGREEN);
819 819
820 scoped_ptr<FakeRecordingSource> blue_recording = 820 std::unique_ptr<FakeRecordingSource> blue_recording =
821 FakeRecordingSource::CreateFilledRecordingSource(this->quad_rect_.size()); 821 FakeRecordingSource::CreateFilledRecordingSource(this->quad_rect_.size());
822 blue_recording->add_draw_rect_with_paint(outer_rect, black_paint); 822 blue_recording->add_draw_rect_with_paint(outer_rect, black_paint);
823 blue_recording->add_draw_rect_with_paint(inner_rect, blue_paint); 823 blue_recording->add_draw_rect_with_paint(inner_rect, blue_paint);
824 blue_recording->Rerecord(); 824 blue_recording->Rerecord();
825 scoped_refptr<FakeRasterSource> blue_raster_source = 825 scoped_refptr<FakeRasterSource> blue_raster_source =
826 FakeRasterSource::CreateFromRecordingSource(blue_recording.get(), false); 826 FakeRasterSource::CreateFromRecordingSource(blue_recording.get(), false);
827 827
828 PictureDrawQuad* blue_quad = 828 PictureDrawQuad* blue_quad =
829 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>(); 829 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>();
830 830
831 blue_quad->SetNew(this->front_quad_state_, this->quad_rect_, gfx::Rect(), 831 blue_quad->SetNew(this->front_quad_state_, this->quad_rect_, gfx::Rect(),
832 this->quad_rect_, gfx::RectF(this->quad_rect_), 832 this->quad_rect_, gfx::RectF(this->quad_rect_),
833 this->quad_rect_.size(), false, RGBA_8888, this->quad_rect_, 833 this->quad_rect_.size(), false, RGBA_8888, this->quad_rect_,
834 1.f, blue_raster_source); 834 1.f, blue_raster_source);
835 835
836 scoped_ptr<FakeRecordingSource> green_recording = 836 std::unique_ptr<FakeRecordingSource> green_recording =
837 FakeRecordingSource::CreateFilledRecordingSource(this->quad_rect_.size()); 837 FakeRecordingSource::CreateFilledRecordingSource(this->quad_rect_.size());
838 green_recording->add_draw_rect_with_paint(outer_rect, green_paint); 838 green_recording->add_draw_rect_with_paint(outer_rect, green_paint);
839 green_recording->add_draw_rect_with_paint(inner_rect, black_paint); 839 green_recording->add_draw_rect_with_paint(inner_rect, black_paint);
840 green_recording->Rerecord(); 840 green_recording->Rerecord();
841 scoped_refptr<FakeRasterSource> green_raster_source = 841 scoped_refptr<FakeRasterSource> green_raster_source =
842 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false); 842 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false);
843 843
844 PictureDrawQuad* green_quad = 844 PictureDrawQuad* green_quad =
845 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>(); 845 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>();
846 green_quad->SetNew(this->back_quad_state_, this->quad_rect_, gfx::Rect(), 846 green_quad->SetNew(this->back_quad_state_, this->quad_rect_, gfx::Rect(),
847 this->quad_rect_, gfx::RectF(this->quad_rect_), 847 this->quad_rect_, gfx::RectF(this->quad_rect_),
848 this->quad_rect_.size(), false, RGBA_8888, 848 this->quad_rect_.size(), false, RGBA_8888,
849 this->quad_rect_, 1.f, green_raster_source); 849 this->quad_rect_, 1.f, green_raster_source);
850 SCOPED_TRACE("IntersectingPictureQuadsPass"); 850 SCOPED_TRACE("IntersectingPictureQuadsPass");
851 this->template AppendBackgroundAndRunTest<PictureDrawQuad>( 851 this->template AppendBackgroundAndRunTest<PictureDrawQuad>(
852 FuzzyPixelComparator(false, 2.f, 0.f, 256.f, 256, 0.f)); 852 FuzzyPixelComparator(false, 2.f, 0.f, 256.f, 256, 0.f));
853 } 853 }
854 854
855 TYPED_TEST(IntersectingQuadPixelTest, RenderPassQuads) { 855 TYPED_TEST(IntersectingQuadPixelTest, RenderPassQuads) {
856 this->SetupQuadStateAndRenderPass(); 856 this->SetupQuadStateAndRenderPass();
857 RenderPassId child_pass_id1(2, 2); 857 RenderPassId child_pass_id1(2, 2);
858 RenderPassId child_pass_id2(2, 3); 858 RenderPassId child_pass_id2(2, 3);
859 scoped_ptr<RenderPass> child_pass1 = 859 std::unique_ptr<RenderPass> child_pass1 =
860 CreateTestRenderPass(child_pass_id1, this->quad_rect_, gfx::Transform()); 860 CreateTestRenderPass(child_pass_id1, this->quad_rect_, gfx::Transform());
861 SharedQuadState* child1_quad_state = CreateTestSharedQuadState( 861 SharedQuadState* child1_quad_state = CreateTestSharedQuadState(
862 gfx::Transform(), this->quad_rect_, child_pass1.get()); 862 gfx::Transform(), this->quad_rect_, child_pass1.get());
863 scoped_ptr<RenderPass> child_pass2 = 863 std::unique_ptr<RenderPass> child_pass2 =
864 CreateTestRenderPass(child_pass_id2, this->quad_rect_, gfx::Transform()); 864 CreateTestRenderPass(child_pass_id2, this->quad_rect_, gfx::Transform());
865 SharedQuadState* child2_quad_state = CreateTestSharedQuadState( 865 SharedQuadState* child2_quad_state = CreateTestSharedQuadState(
866 gfx::Transform(), this->quad_rect_, child_pass2.get()); 866 gfx::Transform(), this->quad_rect_, child_pass2.get());
867 867
868 CreateTestTwoColoredTextureDrawQuad( 868 CreateTestTwoColoredTextureDrawQuad(
869 this->quad_rect_, GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 0)), 869 this->quad_rect_, GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 0)),
870 GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 255)), SK_ColorTRANSPARENT, 870 GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 255)), SK_ColorTRANSPARENT,
871 true, child1_quad_state, this->resource_provider_.get(), 871 true, child1_quad_state, this->resource_provider_.get(),
872 child_pass1.get()); 872 child_pass1.get());
873 CreateTestTwoColoredTextureDrawQuad( 873 CreateTestTwoColoredTextureDrawQuad(
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 SCOPED_TRACE("IntersectingVideoQuads"); 913 SCOPED_TRACE("IntersectingVideoQuads");
914 this->template AppendBackgroundAndRunTest<YUVVideoDrawQuad>( 914 this->template AppendBackgroundAndRunTest<YUVVideoDrawQuad>(
915 FuzzyPixelOffByOneComparator(false)); 915 FuzzyPixelOffByOneComparator(false));
916 } 916 }
917 917
918 // TODO(skaslev): The software renderer does not support non-premultplied alpha. 918 // TODO(skaslev): The software renderer does not support non-premultplied alpha.
919 TEST_F(GLRendererPixelTest, NonPremultipliedTextureWithoutBackground) { 919 TEST_F(GLRendererPixelTest, NonPremultipliedTextureWithoutBackground) {
920 gfx::Rect rect(this->device_viewport_size_); 920 gfx::Rect rect(this->device_viewport_size_);
921 921
922 RenderPassId id(1, 1); 922 RenderPassId id(1, 1);
923 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 923 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
924 924
925 SharedQuadState* shared_state = 925 SharedQuadState* shared_state =
926 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 926 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
927 927
928 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_), 928 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_),
929 SkColorSetARGB(128, 0, 255, 0), // Texel color. 929 SkColorSetARGB(128, 0, 255, 0), // Texel color.
930 SK_ColorTRANSPARENT, // Background color. 930 SK_ColorTRANSPARENT, // Background color.
931 false, // Premultiplied alpha. 931 false, // Premultiplied alpha.
932 shared_state, 932 shared_state,
933 this->resource_provider_.get(), 933 this->resource_provider_.get(),
(...skipping 10 matching lines...) Expand all
944 &pass_list, 944 &pass_list,
945 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), 945 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")),
946 FuzzyPixelOffByOneComparator(true))); 946 FuzzyPixelOffByOneComparator(true)));
947 } 947 }
948 948
949 // TODO(skaslev): The software renderer does not support non-premultplied alpha. 949 // TODO(skaslev): The software renderer does not support non-premultplied alpha.
950 TEST_F(GLRendererPixelTest, NonPremultipliedTextureWithBackground) { 950 TEST_F(GLRendererPixelTest, NonPremultipliedTextureWithBackground) {
951 gfx::Rect rect(this->device_viewport_size_); 951 gfx::Rect rect(this->device_viewport_size_);
952 952
953 RenderPassId id(1, 1); 953 RenderPassId id(1, 1);
954 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 954 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
955 955
956 SharedQuadState* texture_quad_state = 956 SharedQuadState* texture_quad_state =
957 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 957 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
958 texture_quad_state->opacity = 0.8f; 958 texture_quad_state->opacity = 0.8f;
959 959
960 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_), 960 CreateTestTextureDrawQuad(gfx::Rect(this->device_viewport_size_),
961 SkColorSetARGB(204, 120, 255, 120), // Texel color. 961 SkColorSetARGB(204, 120, 255, 120), // Texel color.
962 SK_ColorGREEN, // Background color. 962 SK_ColorGREEN, // Background color.
963 false, // Premultiplied alpha. 963 false, // Premultiplied alpha.
964 texture_quad_state, 964 texture_quad_state,
(...skipping 16 matching lines...) Expand all
981 } 981 }
982 982
983 class VideoGLRendererPixelTest : public GLRendererPixelTest { 983 class VideoGLRendererPixelTest : public GLRendererPixelTest {
984 protected: 984 protected:
985 void CreateEdgeBleedPass(media::VideoPixelFormat format, 985 void CreateEdgeBleedPass(media::VideoPixelFormat format,
986 media::ColorSpace color_space, 986 media::ColorSpace color_space,
987 RenderPassList* pass_list) { 987 RenderPassList* pass_list) {
988 gfx::Rect rect(200, 200); 988 gfx::Rect rect(200, 200);
989 989
990 RenderPassId id(1, 1); 990 RenderPassId id(1, 1);
991 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 991 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
992 992
993 // Scale the video up so that bilinear filtering kicks in to sample more 993 // Scale the video up so that bilinear filtering kicks in to sample more
994 // than just nearest neighbor would. 994 // than just nearest neighbor would.
995 gfx::Transform scale_by_2; 995 gfx::Transform scale_by_2;
996 scale_by_2.Scale(2.f, 2.f); 996 scale_by_2.Scale(2.f, 2.f);
997 gfx::Rect half_rect(100, 100); 997 gfx::Rect half_rect(100, 100);
998 SharedQuadState* shared_state = 998 SharedQuadState* shared_state =
999 CreateTestSharedQuadState(scale_by_2, half_rect, pass.get()); 999 CreateTestSharedQuadState(scale_by_2, half_rect, pass.get());
1000 1000
1001 gfx::Size background_size(200, 200); 1001 gfx::Size background_size(200, 200);
(...skipping 16 matching lines...) Expand all
1018 resource_provider_.get()); 1018 resource_provider_.get());
1019 pass_list->push_back(std::move(pass)); 1019 pass_list->push_back(std::move(pass));
1020 } 1020 }
1021 1021
1022 void SetUp() override { 1022 void SetUp() override {
1023 GLRendererPixelTest::SetUp(); 1023 GLRendererPixelTest::SetUp();
1024 video_resource_updater_.reset(new VideoResourceUpdater( 1024 video_resource_updater_.reset(new VideoResourceUpdater(
1025 output_surface_->context_provider(), resource_provider_.get())); 1025 output_surface_->context_provider(), resource_provider_.get()));
1026 } 1026 }
1027 1027
1028 scoped_ptr<VideoResourceUpdater> video_resource_updater_; 1028 std::unique_ptr<VideoResourceUpdater> video_resource_updater_;
1029 }; 1029 };
1030 1030
1031 class VideoGLRendererPixelHiLoTest 1031 class VideoGLRendererPixelHiLoTest
1032 : public VideoGLRendererPixelTest, 1032 : public VideoGLRendererPixelTest,
1033 public ::testing::WithParamInterface<bool> {}; 1033 public ::testing::WithParamInterface<bool> {};
1034 1034
1035 TEST_P(VideoGLRendererPixelHiLoTest, SimpleYUVRect) { 1035 TEST_P(VideoGLRendererPixelHiLoTest, SimpleYUVRect) {
1036 gfx::Rect rect(this->device_viewport_size_); 1036 gfx::Rect rect(this->device_viewport_size_);
1037 1037
1038 RenderPassId id(1, 1); 1038 RenderPassId id(1, 1);
1039 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 1039 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
1040 1040
1041 SharedQuadState* shared_state = 1041 SharedQuadState* shared_state =
1042 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 1042 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
1043 1043
1044 bool highbit = GetParam(); 1044 bool highbit = GetParam();
1045 CreateTestYUVVideoDrawQuad_Striped( 1045 CreateTestYUVVideoDrawQuad_Striped(
1046 shared_state, media::PIXEL_FORMAT_YV12, false, highbit, 1046 shared_state, media::PIXEL_FORMAT_YV12, false, highbit,
1047 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), 1047 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
1048 video_resource_updater_.get(), rect, rect, resource_provider_.get()); 1048 video_resource_updater_.get(), rect, rect, resource_provider_.get());
1049 1049
1050 RenderPassList pass_list; 1050 RenderPassList pass_list;
1051 pass_list.push_back(std::move(pass)); 1051 pass_list.push_back(std::move(pass));
1052 1052
1053 EXPECT_TRUE( 1053 EXPECT_TRUE(
1054 this->RunPixelTest(&pass_list, 1054 this->RunPixelTest(&pass_list,
1055 base::FilePath(FILE_PATH_LITERAL("yuv_stripes.png")), 1055 base::FilePath(FILE_PATH_LITERAL("yuv_stripes.png")),
1056 FuzzyPixelOffByOneComparator(true))); 1056 FuzzyPixelOffByOneComparator(true)));
1057 } 1057 }
1058 1058
1059 TEST_P(VideoGLRendererPixelHiLoTest, ClippedYUVRect) { 1059 TEST_P(VideoGLRendererPixelHiLoTest, ClippedYUVRect) {
1060 gfx::Rect viewport(this->device_viewport_size_); 1060 gfx::Rect viewport(this->device_viewport_size_);
1061 gfx::Rect draw_rect(this->device_viewport_size_.width() * 1.5, 1061 gfx::Rect draw_rect(this->device_viewport_size_.width() * 1.5,
1062 this->device_viewport_size_.height() * 1.5); 1062 this->device_viewport_size_.height() * 1.5);
1063 1063
1064 RenderPassId id(1, 1); 1064 RenderPassId id(1, 1);
1065 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, viewport); 1065 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, viewport);
1066 1066
1067 SharedQuadState* shared_state = 1067 SharedQuadState* shared_state =
1068 CreateTestSharedQuadState(gfx::Transform(), viewport, pass.get()); 1068 CreateTestSharedQuadState(gfx::Transform(), viewport, pass.get());
1069 1069
1070 bool highbit = GetParam(); 1070 bool highbit = GetParam();
1071 CreateTestYUVVideoDrawQuad_Striped( 1071 CreateTestYUVVideoDrawQuad_Striped(
1072 shared_state, media::PIXEL_FORMAT_YV12, false, highbit, 1072 shared_state, media::PIXEL_FORMAT_YV12, false, highbit,
1073 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), 1073 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
1074 video_resource_updater_.get(), draw_rect, viewport, 1074 video_resource_updater_.get(), draw_rect, viewport,
1075 resource_provider_.get()); 1075 resource_provider_.get());
1076 RenderPassList pass_list; 1076 RenderPassList pass_list;
1077 pass_list.push_back(std::move(pass)); 1077 pass_list.push_back(std::move(pass));
1078 1078
1079 EXPECT_TRUE(this->RunPixelTest( 1079 EXPECT_TRUE(this->RunPixelTest(
1080 &pass_list, base::FilePath(FILE_PATH_LITERAL("yuv_stripes_clipped.png")), 1080 &pass_list, base::FilePath(FILE_PATH_LITERAL("yuv_stripes_clipped.png")),
1081 FuzzyPixelOffByOneComparator(true))); 1081 FuzzyPixelOffByOneComparator(true)));
1082 } 1082 }
1083 1083
1084 TEST_F(VideoGLRendererPixelHiLoTest, OffsetYUVRect) { 1084 TEST_F(VideoGLRendererPixelHiLoTest, OffsetYUVRect) {
1085 gfx::Rect rect(this->device_viewport_size_); 1085 gfx::Rect rect(this->device_viewport_size_);
1086 1086
1087 RenderPassId id(1, 1); 1087 RenderPassId id(1, 1);
1088 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 1088 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
1089 1089
1090 SharedQuadState* shared_state = 1090 SharedQuadState* shared_state =
1091 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 1091 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
1092 1092
1093 // Intentionally sets frame format to I420 for testing coverage. 1093 // Intentionally sets frame format to I420 for testing coverage.
1094 CreateTestYUVVideoDrawQuad_Striped( 1094 CreateTestYUVVideoDrawQuad_Striped(
1095 shared_state, media::PIXEL_FORMAT_I420, false, false, 1095 shared_state, media::PIXEL_FORMAT_I420, false, false,
1096 gfx::RectF(0.125f, 0.25f, 0.75f, 0.5f), pass.get(), 1096 gfx::RectF(0.125f, 0.25f, 0.75f, 0.5f), pass.get(),
1097 video_resource_updater_.get(), rect, rect, resource_provider_.get()); 1097 video_resource_updater_.get(), rect, rect, resource_provider_.get());
1098 1098
1099 RenderPassList pass_list; 1099 RenderPassList pass_list;
1100 pass_list.push_back(std::move(pass)); 1100 pass_list.push_back(std::move(pass));
1101 1101
1102 EXPECT_TRUE(this->RunPixelTest( 1102 EXPECT_TRUE(this->RunPixelTest(
1103 &pass_list, base::FilePath(FILE_PATH_LITERAL("yuv_stripes_offset.png")), 1103 &pass_list, base::FilePath(FILE_PATH_LITERAL("yuv_stripes_offset.png")),
1104 FuzzyPixelComparator(true, 100.0f, 1.0f, 1.0f, 1, 0))); 1104 FuzzyPixelComparator(true, 100.0f, 1.0f, 1.0f, 1, 0)));
1105 } 1105 }
1106 1106
1107 TEST_F(VideoGLRendererPixelTest, SimpleYUVRectBlack) { 1107 TEST_F(VideoGLRendererPixelTest, SimpleYUVRectBlack) {
1108 gfx::Rect rect(this->device_viewport_size_); 1108 gfx::Rect rect(this->device_viewport_size_);
1109 1109
1110 RenderPassId id(1, 1); 1110 RenderPassId id(1, 1);
1111 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 1111 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
1112 1112
1113 SharedQuadState* shared_state = 1113 SharedQuadState* shared_state =
1114 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 1114 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
1115 1115
1116 // In MPEG color range YUV values of (15,128,128) should produce black. 1116 // In MPEG color range YUV values of (15,128,128) should produce black.
1117 CreateTestYUVVideoDrawQuad_Solid( 1117 CreateTestYUVVideoDrawQuad_Solid(
1118 shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_UNSPECIFIED, 1118 shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_UNSPECIFIED,
1119 false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(), 1119 false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(),
1120 video_resource_updater_.get(), rect, rect, resource_provider_.get()); 1120 video_resource_updater_.get(), rect, rect, resource_provider_.get());
1121 1121
1122 RenderPassList pass_list; 1122 RenderPassList pass_list;
1123 pass_list.push_back(std::move(pass)); 1123 pass_list.push_back(std::move(pass));
1124 1124
1125 // If we didn't get black out of the YUV values above, then we probably have a 1125 // If we didn't get black out of the YUV values above, then we probably have a
1126 // color range issue. 1126 // color range issue.
1127 EXPECT_TRUE(this->RunPixelTest(&pass_list, 1127 EXPECT_TRUE(this->RunPixelTest(&pass_list,
1128 base::FilePath(FILE_PATH_LITERAL("black.png")), 1128 base::FilePath(FILE_PATH_LITERAL("black.png")),
1129 FuzzyPixelOffByOneComparator(true))); 1129 FuzzyPixelOffByOneComparator(true)));
1130 } 1130 }
1131 1131
1132 // First argument (test case prefix) is intentionally left empty. 1132 // First argument (test case prefix) is intentionally left empty.
1133 INSTANTIATE_TEST_CASE_P(, VideoGLRendererPixelHiLoTest, ::testing::Bool()); 1133 INSTANTIATE_TEST_CASE_P(, VideoGLRendererPixelHiLoTest, ::testing::Bool());
1134 1134
1135 TEST_F(VideoGLRendererPixelTest, SimpleYUVJRect) { 1135 TEST_F(VideoGLRendererPixelTest, SimpleYUVJRect) {
1136 gfx::Rect rect(this->device_viewport_size_); 1136 gfx::Rect rect(this->device_viewport_size_);
1137 1137
1138 RenderPassId id(1, 1); 1138 RenderPassId id(1, 1);
1139 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 1139 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
1140 1140
1141 SharedQuadState* shared_state = 1141 SharedQuadState* shared_state =
1142 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 1142 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
1143 1143
1144 // YUV of (149,43,21) should be green (0,255,0) in RGB. 1144 // YUV of (149,43,21) should be green (0,255,0) in RGB.
1145 CreateTestYUVVideoDrawQuad_Solid( 1145 CreateTestYUVVideoDrawQuad_Solid(
1146 shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_JPEG, false, 1146 shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_JPEG, false,
1147 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 149, 43, 21, pass.get(), 1147 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 149, 43, 21, pass.get(),
1148 video_resource_updater_.get(), rect, rect, resource_provider_.get()); 1148 video_resource_updater_.get(), rect, rect, resource_provider_.get());
1149 1149
(...skipping 22 matching lines...) Expand all
1172 &pass_list); 1172 &pass_list);
1173 EXPECT_TRUE(this->RunPixelTest(&pass_list, 1173 EXPECT_TRUE(this->RunPixelTest(&pass_list,
1174 base::FilePath(FILE_PATH_LITERAL("green.png")), 1174 base::FilePath(FILE_PATH_LITERAL("green.png")),
1175 FuzzyPixelOffByOneComparator(true))); 1175 FuzzyPixelOffByOneComparator(true)));
1176 } 1176 }
1177 1177
1178 TEST_F(VideoGLRendererPixelTest, SimpleYUVJRectGrey) { 1178 TEST_F(VideoGLRendererPixelTest, SimpleYUVJRectGrey) {
1179 gfx::Rect rect(this->device_viewport_size_); 1179 gfx::Rect rect(this->device_viewport_size_);
1180 1180
1181 RenderPassId id(1, 1); 1181 RenderPassId id(1, 1);
1182 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 1182 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
1183 1183
1184 SharedQuadState* shared_state = 1184 SharedQuadState* shared_state =
1185 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 1185 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
1186 1186
1187 // Dark grey in JPEG color range (in MPEG, this is black). 1187 // Dark grey in JPEG color range (in MPEG, this is black).
1188 CreateTestYUVVideoDrawQuad_Solid( 1188 CreateTestYUVVideoDrawQuad_Solid(
1189 shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_JPEG, false, 1189 shared_state, media::PIXEL_FORMAT_YV12, media::COLOR_SPACE_JPEG, false,
1190 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(), 1190 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(),
1191 video_resource_updater_.get(), rect, rect, resource_provider_.get()); 1191 video_resource_updater_.get(), rect, rect, resource_provider_.get());
1192 1192
1193 RenderPassList pass_list; 1193 RenderPassList pass_list;
1194 pass_list.push_back(std::move(pass)); 1194 pass_list.push_back(std::move(pass));
1195 1195
1196 EXPECT_TRUE( 1196 EXPECT_TRUE(
1197 this->RunPixelTest(&pass_list, 1197 this->RunPixelTest(&pass_list,
1198 base::FilePath(FILE_PATH_LITERAL("dark_grey.png")), 1198 base::FilePath(FILE_PATH_LITERAL("dark_grey.png")),
1199 FuzzyPixelOffByOneComparator(true))); 1199 FuzzyPixelOffByOneComparator(true)));
1200 } 1200 }
1201 1201
1202 TEST_F(VideoGLRendererPixelHiLoTest, SimpleYUVARect) { 1202 TEST_F(VideoGLRendererPixelHiLoTest, SimpleYUVARect) {
1203 gfx::Rect rect(this->device_viewport_size_); 1203 gfx::Rect rect(this->device_viewport_size_);
1204 1204
1205 RenderPassId id(1, 1); 1205 RenderPassId id(1, 1);
1206 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 1206 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
1207 1207
1208 SharedQuadState* shared_state = 1208 SharedQuadState* shared_state =
1209 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 1209 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
1210 1210
1211 CreateTestYUVVideoDrawQuad_Striped( 1211 CreateTestYUVVideoDrawQuad_Striped(
1212 shared_state, media::PIXEL_FORMAT_YV12A, false, false, 1212 shared_state, media::PIXEL_FORMAT_YV12A, false, false,
1213 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), 1213 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
1214 video_resource_updater_.get(), rect, rect, resource_provider_.get()); 1214 video_resource_updater_.get(), rect, rect, resource_provider_.get());
1215 1215
1216 SolidColorDrawQuad* color_quad = 1216 SolidColorDrawQuad* color_quad =
1217 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1217 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1218 color_quad->SetNew(shared_state, rect, rect, SK_ColorWHITE, false); 1218 color_quad->SetNew(shared_state, rect, rect, SK_ColorWHITE, false);
1219 1219
1220 RenderPassList pass_list; 1220 RenderPassList pass_list;
1221 pass_list.push_back(std::move(pass)); 1221 pass_list.push_back(std::move(pass));
1222 1222
1223 EXPECT_TRUE(this->RunPixelTest( 1223 EXPECT_TRUE(this->RunPixelTest(
1224 &pass_list, 1224 &pass_list,
1225 base::FilePath(FILE_PATH_LITERAL("yuv_stripes_alpha.png")), 1225 base::FilePath(FILE_PATH_LITERAL("yuv_stripes_alpha.png")),
1226 FuzzyPixelOffByOneComparator(true))); 1226 FuzzyPixelOffByOneComparator(true)));
1227 } 1227 }
1228 1228
1229 TEST_F(VideoGLRendererPixelTest, FullyTransparentYUVARect) { 1229 TEST_F(VideoGLRendererPixelTest, FullyTransparentYUVARect) {
1230 gfx::Rect rect(this->device_viewport_size_); 1230 gfx::Rect rect(this->device_viewport_size_);
1231 1231
1232 RenderPassId id(1, 1); 1232 RenderPassId id(1, 1);
1233 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 1233 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
1234 1234
1235 SharedQuadState* shared_state = 1235 SharedQuadState* shared_state =
1236 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 1236 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
1237 1237
1238 CreateTestYUVVideoDrawQuad_Striped( 1238 CreateTestYUVVideoDrawQuad_Striped(
1239 shared_state, media::PIXEL_FORMAT_YV12A, true, false, 1239 shared_state, media::PIXEL_FORMAT_YV12A, true, false,
1240 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(), 1240 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
1241 video_resource_updater_.get(), rect, rect, resource_provider_.get()); 1241 video_resource_updater_.get(), rect, rect, resource_provider_.get());
1242 1242
1243 SolidColorDrawQuad* color_quad = 1243 SolidColorDrawQuad* color_quad =
1244 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1244 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1245 color_quad->SetNew(shared_state, rect, rect, SK_ColorBLACK, false); 1245 color_quad->SetNew(shared_state, rect, rect, SK_ColorBLACK, false);
1246 1246
1247 RenderPassList pass_list; 1247 RenderPassList pass_list;
1248 pass_list.push_back(std::move(pass)); 1248 pass_list.push_back(std::move(pass));
1249 1249
1250 EXPECT_TRUE(this->RunPixelTest( 1250 EXPECT_TRUE(this->RunPixelTest(
1251 &pass_list, 1251 &pass_list,
1252 base::FilePath(FILE_PATH_LITERAL("black.png")), 1252 base::FilePath(FILE_PATH_LITERAL("black.png")),
1253 ExactPixelComparator(true))); 1253 ExactPixelComparator(true)));
1254 } 1254 }
1255 1255
1256 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) { 1256 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) {
1257 gfx::Rect viewport_rect(this->device_viewport_size_); 1257 gfx::Rect viewport_rect(this->device_viewport_size_);
1258 1258
1259 RenderPassId root_pass_id(1, 1); 1259 RenderPassId root_pass_id(1, 1);
1260 scoped_ptr<RenderPass> root_pass = 1260 std::unique_ptr<RenderPass> root_pass =
1261 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1261 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1262 1262
1263 RenderPassId child_pass_id(2, 2); 1263 RenderPassId child_pass_id(2, 2);
1264 gfx::Rect pass_rect(this->device_viewport_size_); 1264 gfx::Rect pass_rect(this->device_viewport_size_);
1265 gfx::Transform transform_to_root; 1265 gfx::Transform transform_to_root;
1266 scoped_ptr<RenderPass> child_pass = 1266 std::unique_ptr<RenderPass> child_pass =
1267 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1267 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1268 1268
1269 gfx::Transform quad_to_target_transform; 1269 gfx::Transform quad_to_target_transform;
1270 SharedQuadState* shared_state = CreateTestSharedQuadState( 1270 SharedQuadState* shared_state = CreateTestSharedQuadState(
1271 quad_to_target_transform, viewport_rect, child_pass.get()); 1271 quad_to_target_transform, viewport_rect, child_pass.get());
1272 shared_state->opacity = 0.5f; 1272 shared_state->opacity = 0.5f;
1273 1273
1274 gfx::Rect blue_rect(0, 1274 gfx::Rect blue_rect(0,
1275 0, 1275 0,
1276 this->device_viewport_size_.width(), 1276 this->device_viewport_size_.width(),
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1342 EXPECT_TRUE(this->RunPixelTest( 1342 EXPECT_TRUE(this->RunPixelTest(
1343 &pass_list, 1343 &pass_list,
1344 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), 1344 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")),
1345 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); 1345 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
1346 } 1346 }
1347 1347
1348 TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) { 1348 TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) {
1349 gfx::Rect viewport_rect(this->device_viewport_size_); 1349 gfx::Rect viewport_rect(this->device_viewport_size_);
1350 1350
1351 RenderPassId root_pass_id(1, 1); 1351 RenderPassId root_pass_id(1, 1);
1352 scoped_ptr<RenderPass> root_pass = 1352 std::unique_ptr<RenderPass> root_pass =
1353 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1353 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1354 1354
1355 RenderPassId child_pass_id(2, 2); 1355 RenderPassId child_pass_id(2, 2);
1356 gfx::Rect pass_rect(this->device_viewport_size_); 1356 gfx::Rect pass_rect(this->device_viewport_size_);
1357 gfx::Transform transform_to_root; 1357 gfx::Transform transform_to_root;
1358 scoped_ptr<RenderPass> child_pass = 1358 std::unique_ptr<RenderPass> child_pass =
1359 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1359 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1360 1360
1361 gfx::Transform quad_to_target_transform; 1361 gfx::Transform quad_to_target_transform;
1362 SharedQuadState* shared_state = CreateTestSharedQuadState( 1362 SharedQuadState* shared_state = CreateTestSharedQuadState(
1363 quad_to_target_transform, viewport_rect, child_pass.get()); 1363 quad_to_target_transform, viewport_rect, child_pass.get());
1364 shared_state->opacity = 0.5f; 1364 shared_state->opacity = 0.5f;
1365 1365
1366 gfx::Rect blue_rect(0, 1366 gfx::Rect blue_rect(0,
1367 0, 1367 0,
1368 this->device_viewport_size_.width(), 1368 this->device_viewport_size_.width(),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 // renderer so use a fuzzy comparator. 1413 // renderer so use a fuzzy comparator.
1414 EXPECT_TRUE(this->RunPixelTest( 1414 EXPECT_TRUE(this->RunPixelTest(
1415 &pass_list, base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), 1415 &pass_list, base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")),
1416 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); 1416 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
1417 } 1417 }
1418 1418
1419 TYPED_TEST(RendererPixelTest, FastPassFilterChain) { 1419 TYPED_TEST(RendererPixelTest, FastPassFilterChain) {
1420 gfx::Rect viewport_rect(this->device_viewport_size_); 1420 gfx::Rect viewport_rect(this->device_viewport_size_);
1421 1421
1422 RenderPassId root_pass_id(1, 1); 1422 RenderPassId root_pass_id(1, 1);
1423 scoped_ptr<RenderPass> root_pass = 1423 std::unique_ptr<RenderPass> root_pass =
1424 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1424 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1425 1425
1426 RenderPassId child_pass_id(2, 2); 1426 RenderPassId child_pass_id(2, 2);
1427 gfx::Rect pass_rect(this->device_viewport_size_); 1427 gfx::Rect pass_rect(this->device_viewport_size_);
1428 gfx::Transform transform_to_root; 1428 gfx::Transform transform_to_root;
1429 scoped_ptr<RenderPass> child_pass = 1429 std::unique_ptr<RenderPass> child_pass =
1430 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1430 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1431 1431
1432 gfx::Transform quad_to_target_transform; 1432 gfx::Transform quad_to_target_transform;
1433 SharedQuadState* shared_state = CreateTestSharedQuadState( 1433 SharedQuadState* shared_state = CreateTestSharedQuadState(
1434 quad_to_target_transform, viewport_rect, child_pass.get()); 1434 quad_to_target_transform, viewport_rect, child_pass.get());
1435 shared_state->opacity = 0.5f; 1435 shared_state->opacity = 0.5f;
1436 1436
1437 gfx::Rect blue_rect(0, 1437 gfx::Rect blue_rect(0,
1438 0, 1438 0,
1439 this->device_viewport_size_.width(), 1439 this->device_viewport_size_.width(),
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1486 EXPECT_TRUE(this->RunPixelTest( 1486 EXPECT_TRUE(this->RunPixelTest(
1487 &pass_list, 1487 &pass_list,
1488 base::FilePath(FILE_PATH_LITERAL("blue_yellow_filter_chain.png")), 1488 base::FilePath(FILE_PATH_LITERAL("blue_yellow_filter_chain.png")),
1489 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); 1489 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
1490 } 1490 }
1491 1491
1492 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) { 1492 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) {
1493 gfx::Rect viewport_rect(this->device_viewport_size_); 1493 gfx::Rect viewport_rect(this->device_viewport_size_);
1494 1494
1495 RenderPassId root_pass_id(1, 1); 1495 RenderPassId root_pass_id(1, 1);
1496 scoped_ptr<RenderPass> root_pass = 1496 std::unique_ptr<RenderPass> root_pass =
1497 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1497 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1498 1498
1499 RenderPassId child_pass_id(2, 2); 1499 RenderPassId child_pass_id(2, 2);
1500 gfx::Rect pass_rect(this->device_viewport_size_); 1500 gfx::Rect pass_rect(this->device_viewport_size_);
1501 gfx::Transform transform_to_root; 1501 gfx::Transform transform_to_root;
1502 scoped_ptr<RenderPass> child_pass = 1502 std::unique_ptr<RenderPass> child_pass =
1503 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1503 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1504 1504
1505 gfx::Transform quad_to_target_transform; 1505 gfx::Transform quad_to_target_transform;
1506 SharedQuadState* shared_state = CreateTestSharedQuadState( 1506 SharedQuadState* shared_state = CreateTestSharedQuadState(
1507 quad_to_target_transform, viewport_rect, child_pass.get()); 1507 quad_to_target_transform, viewport_rect, child_pass.get());
1508 shared_state->opacity = 0.5f; 1508 shared_state->opacity = 0.5f;
1509 1509
1510 gfx::Rect blue_rect(0, 1510 gfx::Rect blue_rect(0,
1511 0, 1511 0,
1512 this->device_viewport_size_.width(), 1512 this->device_viewport_size_.width(),
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1582 EXPECT_TRUE(this->RunPixelTest( 1582 EXPECT_TRUE(this->RunPixelTest(
1583 &pass_list, 1583 &pass_list,
1584 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha_translate.png")), 1584 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha_translate.png")),
1585 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); 1585 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
1586 } 1586 }
1587 1587
1588 TYPED_TEST(RendererPixelTest, EnlargedRenderPassTexture) { 1588 TYPED_TEST(RendererPixelTest, EnlargedRenderPassTexture) {
1589 gfx::Rect viewport_rect(this->device_viewport_size_); 1589 gfx::Rect viewport_rect(this->device_viewport_size_);
1590 1590
1591 RenderPassId root_pass_id(1, 1); 1591 RenderPassId root_pass_id(1, 1);
1592 scoped_ptr<RenderPass> root_pass = 1592 std::unique_ptr<RenderPass> root_pass =
1593 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1593 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1594 1594
1595 RenderPassId child_pass_id(2, 2); 1595 RenderPassId child_pass_id(2, 2);
1596 gfx::Rect pass_rect(this->device_viewport_size_); 1596 gfx::Rect pass_rect(this->device_viewport_size_);
1597 gfx::Transform transform_to_root; 1597 gfx::Transform transform_to_root;
1598 scoped_ptr<RenderPass> child_pass = 1598 std::unique_ptr<RenderPass> child_pass =
1599 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1599 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1600 1600
1601 gfx::Transform quad_to_target_transform; 1601 gfx::Transform quad_to_target_transform;
1602 SharedQuadState* shared_state = CreateTestSharedQuadState( 1602 SharedQuadState* shared_state = CreateTestSharedQuadState(
1603 quad_to_target_transform, viewport_rect, child_pass.get()); 1603 quad_to_target_transform, viewport_rect, child_pass.get());
1604 1604
1605 gfx::Rect blue_rect(0, 1605 gfx::Rect blue_rect(0,
1606 0, 1606 0,
1607 this->device_viewport_size_.width(), 1607 this->device_viewport_size_.width(),
1608 this->device_viewport_size_.height() / 2); 1608 this->device_viewport_size_.height() / 2);
(...skipping 22 matching lines...) Expand all
1631 EXPECT_TRUE(this->RunPixelTest( 1631 EXPECT_TRUE(this->RunPixelTest(
1632 &pass_list, 1632 &pass_list,
1633 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")), 1633 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")),
1634 ExactPixelComparator(true))); 1634 ExactPixelComparator(true)));
1635 } 1635 }
1636 1636
1637 TYPED_TEST(RendererPixelTest, EnlargedRenderPassTextureWithAntiAliasing) { 1637 TYPED_TEST(RendererPixelTest, EnlargedRenderPassTextureWithAntiAliasing) {
1638 gfx::Rect viewport_rect(this->device_viewport_size_); 1638 gfx::Rect viewport_rect(this->device_viewport_size_);
1639 1639
1640 RenderPassId root_pass_id(1, 1); 1640 RenderPassId root_pass_id(1, 1);
1641 scoped_ptr<RenderPass> root_pass = 1641 std::unique_ptr<RenderPass> root_pass =
1642 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1642 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1643 1643
1644 RenderPassId child_pass_id(2, 2); 1644 RenderPassId child_pass_id(2, 2);
1645 gfx::Rect pass_rect(this->device_viewport_size_); 1645 gfx::Rect pass_rect(this->device_viewport_size_);
1646 gfx::Transform transform_to_root; 1646 gfx::Transform transform_to_root;
1647 scoped_ptr<RenderPass> child_pass = 1647 std::unique_ptr<RenderPass> child_pass =
1648 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1648 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1649 1649
1650 gfx::Transform quad_to_target_transform; 1650 gfx::Transform quad_to_target_transform;
1651 SharedQuadState* shared_state = CreateTestSharedQuadState( 1651 SharedQuadState* shared_state = CreateTestSharedQuadState(
1652 quad_to_target_transform, viewport_rect, child_pass.get()); 1652 quad_to_target_transform, viewport_rect, child_pass.get());
1653 1653
1654 gfx::Rect blue_rect(0, 1654 gfx::Rect blue_rect(0,
1655 0, 1655 0,
1656 this->device_viewport_size_.width(), 1656 this->device_viewport_size_.width(),
1657 this->device_viewport_size_.height() / 2); 1657 this->device_viewport_size_.height() / 2);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1695 base::FilePath(FILE_PATH_LITERAL("blue_yellow_anti_aliasing.png")), 1695 base::FilePath(FILE_PATH_LITERAL("blue_yellow_anti_aliasing.png")),
1696 FuzzyPixelOffByOneComparator(true))); 1696 FuzzyPixelOffByOneComparator(true)));
1697 } 1697 }
1698 1698
1699 // This tests the case where we have a RenderPass with a mask, but the quad 1699 // This tests the case where we have a RenderPass with a mask, but the quad
1700 // for the masked surface does not include the full surface texture. 1700 // for the masked surface does not include the full surface texture.
1701 TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad) { 1701 TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad) {
1702 gfx::Rect viewport_rect(this->device_viewport_size_); 1702 gfx::Rect viewport_rect(this->device_viewport_size_);
1703 1703
1704 RenderPassId root_pass_id(1, 1); 1704 RenderPassId root_pass_id(1, 1);
1705 scoped_ptr<RenderPass> root_pass = 1705 std::unique_ptr<RenderPass> root_pass =
1706 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1706 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1707 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( 1707 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState(
1708 gfx::Transform(), viewport_rect, root_pass.get()); 1708 gfx::Transform(), viewport_rect, root_pass.get());
1709 1709
1710 RenderPassId child_pass_id(2, 2); 1710 RenderPassId child_pass_id(2, 2);
1711 gfx::Transform transform_to_root; 1711 gfx::Transform transform_to_root;
1712 scoped_ptr<RenderPass> child_pass = 1712 std::unique_ptr<RenderPass> child_pass =
1713 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); 1713 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root);
1714 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState( 1714 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState(
1715 gfx::Transform(), viewport_rect, child_pass.get()); 1715 gfx::Transform(), viewport_rect, child_pass.get());
1716 1716
1717 // The child render pass is just a green box. 1717 // The child render pass is just a green box.
1718 static const SkColor kCSSGreen = 0xff008000; 1718 static const SkColor kCSSGreen = 0xff008000;
1719 SolidColorDrawQuad* green = 1719 SolidColorDrawQuad* green =
1720 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1720 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1721 green->SetNew( 1721 green->SetNew(
1722 child_pass_shared_state, viewport_rect, viewport_rect, kCSSGreen, false); 1722 child_pass_shared_state, viewport_rect, viewport_rect, kCSSGreen, false);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1788 base::FilePath(FILE_PATH_LITERAL("mask_bottom_right.png")), 1788 base::FilePath(FILE_PATH_LITERAL("mask_bottom_right.png")),
1789 ExactPixelComparator(true))); 1789 ExactPixelComparator(true)));
1790 } 1790 }
1791 1791
1792 // This tests the case where we have a RenderPass with a mask, but the quad 1792 // This tests the case where we have a RenderPass with a mask, but the quad
1793 // for the masked surface does not include the full surface texture. 1793 // for the masked surface does not include the full surface texture.
1794 TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad2) { 1794 TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad2) {
1795 gfx::Rect viewport_rect(this->device_viewport_size_); 1795 gfx::Rect viewport_rect(this->device_viewport_size_);
1796 1796
1797 RenderPassId root_pass_id(1, 1); 1797 RenderPassId root_pass_id(1, 1);
1798 scoped_ptr<RenderPass> root_pass = 1798 std::unique_ptr<RenderPass> root_pass =
1799 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1799 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1800 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( 1800 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState(
1801 gfx::Transform(), viewport_rect, root_pass.get()); 1801 gfx::Transform(), viewport_rect, root_pass.get());
1802 1802
1803 RenderPassId child_pass_id(2, 2); 1803 RenderPassId child_pass_id(2, 2);
1804 gfx::Transform transform_to_root; 1804 gfx::Transform transform_to_root;
1805 scoped_ptr<RenderPass> child_pass = 1805 std::unique_ptr<RenderPass> child_pass =
1806 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); 1806 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root);
1807 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState( 1807 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState(
1808 gfx::Transform(), viewport_rect, child_pass.get()); 1808 gfx::Transform(), viewport_rect, child_pass.get());
1809 1809
1810 // The child render pass is just a green box. 1810 // The child render pass is just a green box.
1811 static const SkColor kCSSGreen = 0xff008000; 1811 static const SkColor kCSSGreen = 0xff008000;
1812 SolidColorDrawQuad* green = 1812 SolidColorDrawQuad* green =
1813 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1813 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1814 green->SetNew(child_pass_shared_state, viewport_rect, viewport_rect, 1814 green->SetNew(child_pass_shared_state, viewport_rect, viewport_rect,
1815 kCSSGreen, false); 1815 kCSSGreen, false);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1879 } 1879 }
1880 1880
1881 template <typename RendererType> 1881 template <typename RendererType>
1882 class RendererPixelTestWithBackgroundFilter 1882 class RendererPixelTestWithBackgroundFilter
1883 : public RendererPixelTest<RendererType> { 1883 : public RendererPixelTest<RendererType> {
1884 protected: 1884 protected:
1885 void SetUpRenderPassList() { 1885 void SetUpRenderPassList() {
1886 gfx::Rect device_viewport_rect(this->device_viewport_size_); 1886 gfx::Rect device_viewport_rect(this->device_viewport_size_);
1887 1887
1888 RenderPassId root_id(1, 1); 1888 RenderPassId root_id(1, 1);
1889 scoped_ptr<RenderPass> root_pass = 1889 std::unique_ptr<RenderPass> root_pass =
1890 CreateTestRootRenderPass(root_id, device_viewport_rect); 1890 CreateTestRootRenderPass(root_id, device_viewport_rect);
1891 root_pass->has_transparent_background = false; 1891 root_pass->has_transparent_background = false;
1892 1892
1893 gfx::Transform identity_quad_to_target_transform; 1893 gfx::Transform identity_quad_to_target_transform;
1894 1894
1895 RenderPassId filter_pass_id(2, 1); 1895 RenderPassId filter_pass_id(2, 1);
1896 gfx::Transform transform_to_root; 1896 gfx::Transform transform_to_root;
1897 scoped_ptr<RenderPass> filter_pass = CreateTestRenderPass( 1897 std::unique_ptr<RenderPass> filter_pass = CreateTestRenderPass(
1898 filter_pass_id, filter_pass_layer_rect_, transform_to_root); 1898 filter_pass_id, filter_pass_layer_rect_, transform_to_root);
1899 1899
1900 // A non-visible quad in the filtering render pass. 1900 // A non-visible quad in the filtering render pass.
1901 { 1901 {
1902 SharedQuadState* shared_state = 1902 SharedQuadState* shared_state =
1903 CreateTestSharedQuadState(identity_quad_to_target_transform, 1903 CreateTestSharedQuadState(identity_quad_to_target_transform,
1904 filter_pass_layer_rect_, filter_pass.get()); 1904 filter_pass_layer_rect_, filter_pass.get());
1905 SolidColorDrawQuad* color_quad = 1905 SolidColorDrawQuad* color_quad =
1906 filter_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1906 filter_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1907 color_quad->SetNew(shared_state, filter_pass_layer_rect_, 1907 color_quad->SetNew(shared_state, filter_pass_layer_rect_,
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
2038 2038
2039 TEST_F(ExternalStencilPixelTest, StencilTestEnabled) { 2039 TEST_F(ExternalStencilPixelTest, StencilTestEnabled) {
2040 ClearBackgroundToGreen(); 2040 ClearBackgroundToGreen();
2041 PopulateStencilBuffer(); 2041 PopulateStencilBuffer();
2042 this->EnableExternalStencilTest(); 2042 this->EnableExternalStencilTest();
2043 2043
2044 // Draw a blue quad that covers the entire device viewport. It should be 2044 // Draw a blue quad that covers the entire device viewport. It should be
2045 // clipped to the bottom left and top right corners by the external stencil. 2045 // clipped to the bottom left and top right corners by the external stencil.
2046 gfx::Rect rect(this->device_viewport_size_); 2046 gfx::Rect rect(this->device_viewport_size_);
2047 RenderPassId id(1, 1); 2047 RenderPassId id(1, 1);
2048 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 2048 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
2049 SharedQuadState* blue_shared_state = 2049 SharedQuadState* blue_shared_state =
2050 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 2050 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
2051 SolidColorDrawQuad* blue = 2051 SolidColorDrawQuad* blue =
2052 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2052 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
2053 blue->SetNew(blue_shared_state, rect, rect, SK_ColorBLUE, false); 2053 blue->SetNew(blue_shared_state, rect, rect, SK_ColorBLUE, false);
2054 pass->has_transparent_background = false; 2054 pass->has_transparent_background = false;
2055 RenderPassList pass_list; 2055 RenderPassList pass_list;
2056 pass_list.push_back(std::move(pass)); 2056 pass_list.push_back(std::move(pass));
2057 2057
2058 EXPECT_TRUE(this->RunPixelTest( 2058 EXPECT_TRUE(this->RunPixelTest(
2059 &pass_list, 2059 &pass_list,
2060 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), 2060 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
2061 ExactPixelComparator(true))); 2061 ExactPixelComparator(true)));
2062 } 2062 }
2063 2063
2064 TEST_F(ExternalStencilPixelTest, StencilTestDisabled) { 2064 TEST_F(ExternalStencilPixelTest, StencilTestDisabled) {
2065 PopulateStencilBuffer(); 2065 PopulateStencilBuffer();
2066 2066
2067 // Draw a green quad that covers the entire device viewport. The stencil 2067 // Draw a green quad that covers the entire device viewport. The stencil
2068 // buffer should be ignored. 2068 // buffer should be ignored.
2069 gfx::Rect rect(this->device_viewport_size_); 2069 gfx::Rect rect(this->device_viewport_size_);
2070 RenderPassId id(1, 1); 2070 RenderPassId id(1, 1);
2071 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 2071 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
2072 SharedQuadState* green_shared_state = 2072 SharedQuadState* green_shared_state =
2073 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 2073 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
2074 SolidColorDrawQuad* green = 2074 SolidColorDrawQuad* green =
2075 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2075 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
2076 green->SetNew(green_shared_state, rect, rect, SK_ColorGREEN, false); 2076 green->SetNew(green_shared_state, rect, rect, SK_ColorGREEN, false);
2077 RenderPassList pass_list; 2077 RenderPassList pass_list;
2078 pass_list.push_back(std::move(pass)); 2078 pass_list.push_back(std::move(pass));
2079 2079
2080 EXPECT_TRUE(this->RunPixelTest( 2080 EXPECT_TRUE(this->RunPixelTest(
2081 &pass_list, 2081 &pass_list,
2082 base::FilePath(FILE_PATH_LITERAL("green.png")), 2082 base::FilePath(FILE_PATH_LITERAL("green.png")),
2083 ExactPixelComparator(true))); 2083 ExactPixelComparator(true)));
2084 } 2084 }
2085 2085
2086 TEST_F(ExternalStencilPixelTest, RenderSurfacesIgnoreStencil) { 2086 TEST_F(ExternalStencilPixelTest, RenderSurfacesIgnoreStencil) {
2087 // The stencil test should apply only to the final render pass. 2087 // The stencil test should apply only to the final render pass.
2088 ClearBackgroundToGreen(); 2088 ClearBackgroundToGreen();
2089 PopulateStencilBuffer(); 2089 PopulateStencilBuffer();
2090 this->EnableExternalStencilTest(); 2090 this->EnableExternalStencilTest();
2091 2091
2092 gfx::Rect viewport_rect(this->device_viewport_size_); 2092 gfx::Rect viewport_rect(this->device_viewport_size_);
2093 2093
2094 RenderPassId root_pass_id(1, 1); 2094 RenderPassId root_pass_id(1, 1);
2095 scoped_ptr<RenderPass> root_pass = 2095 std::unique_ptr<RenderPass> root_pass =
2096 CreateTestRootRenderPass(root_pass_id, viewport_rect); 2096 CreateTestRootRenderPass(root_pass_id, viewport_rect);
2097 root_pass->has_transparent_background = false; 2097 root_pass->has_transparent_background = false;
2098 2098
2099 RenderPassId child_pass_id(2, 2); 2099 RenderPassId child_pass_id(2, 2);
2100 gfx::Rect pass_rect(this->device_viewport_size_); 2100 gfx::Rect pass_rect(this->device_viewport_size_);
2101 gfx::Transform transform_to_root; 2101 gfx::Transform transform_to_root;
2102 scoped_ptr<RenderPass> child_pass = 2102 std::unique_ptr<RenderPass> child_pass =
2103 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 2103 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
2104 2104
2105 gfx::Transform quad_to_target_transform; 2105 gfx::Transform quad_to_target_transform;
2106 SharedQuadState* shared_state = CreateTestSharedQuadState( 2106 SharedQuadState* shared_state = CreateTestSharedQuadState(
2107 quad_to_target_transform, viewport_rect, child_pass.get()); 2107 quad_to_target_transform, viewport_rect, child_pass.get());
2108 2108
2109 gfx::Rect blue_rect(0, 2109 gfx::Rect blue_rect(0,
2110 0, 2110 0,
2111 this->device_viewport_size_.width(), 2111 this->device_viewport_size_.width(),
2112 this->device_viewport_size_.height()); 2112 this->device_viewport_size_.height());
(...skipping 17 matching lines...) Expand all
2130 2130
2131 TEST_F(ExternalStencilPixelTest, DeviceClip) { 2131 TEST_F(ExternalStencilPixelTest, DeviceClip) {
2132 ClearBackgroundToGreen(); 2132 ClearBackgroundToGreen();
2133 gfx::Rect clip_rect(gfx::Point(150, 150), gfx::Size(50, 50)); 2133 gfx::Rect clip_rect(gfx::Point(150, 150), gfx::Size(50, 50));
2134 this->ForceDeviceClip(clip_rect); 2134 this->ForceDeviceClip(clip_rect);
2135 2135
2136 // Draw a blue quad that covers the entire device viewport. It should be 2136 // Draw a blue quad that covers the entire device viewport. It should be
2137 // clipped to the bottom right corner by the device clip. 2137 // clipped to the bottom right corner by the device clip.
2138 gfx::Rect rect(this->device_viewport_size_); 2138 gfx::Rect rect(this->device_viewport_size_);
2139 RenderPassId id(1, 1); 2139 RenderPassId id(1, 1);
2140 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 2140 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
2141 SharedQuadState* blue_shared_state = 2141 SharedQuadState* blue_shared_state =
2142 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 2142 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
2143 SolidColorDrawQuad* blue = 2143 SolidColorDrawQuad* blue =
2144 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2144 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
2145 blue->SetNew(blue_shared_state, rect, rect, SK_ColorBLUE, false); 2145 blue->SetNew(blue_shared_state, rect, rect, SK_ColorBLUE, false);
2146 RenderPassList pass_list; 2146 RenderPassList pass_list;
2147 pass_list.push_back(std::move(pass)); 2147 pass_list.push_back(std::move(pass));
2148 2148
2149 EXPECT_TRUE(this->RunPixelTest( 2149 EXPECT_TRUE(this->RunPixelTest(
2150 &pass_list, 2150 &pass_list,
2151 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), 2151 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")),
2152 ExactPixelComparator(true))); 2152 ExactPixelComparator(true)));
2153 } 2153 }
2154 2154
2155 // Software renderer does not support anti-aliased edges. 2155 // Software renderer does not support anti-aliased edges.
2156 TEST_F(GLRendererPixelTest, AntiAliasing) { 2156 TEST_F(GLRendererPixelTest, AntiAliasing) {
2157 gfx::Rect rect(this->device_viewport_size_); 2157 gfx::Rect rect(this->device_viewport_size_);
2158 2158
2159 RenderPassId id(1, 1); 2159 RenderPassId id(1, 1);
2160 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 2160 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
2161 2161
2162 gfx::Transform red_quad_to_target_transform; 2162 gfx::Transform red_quad_to_target_transform;
2163 red_quad_to_target_transform.Rotate(10); 2163 red_quad_to_target_transform.Rotate(10);
2164 SharedQuadState* red_shared_state = 2164 SharedQuadState* red_shared_state =
2165 CreateTestSharedQuadState(red_quad_to_target_transform, rect, pass.get()); 2165 CreateTestSharedQuadState(red_quad_to_target_transform, rect, pass.get());
2166 2166
2167 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2167 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
2168 red->SetNew(red_shared_state, rect, rect, SK_ColorRED, false); 2168 red->SetNew(red_shared_state, rect, rect, SK_ColorRED, false);
2169 2169
2170 gfx::Transform yellow_quad_to_target_transform; 2170 gfx::Transform yellow_quad_to_target_transform;
(...skipping 22 matching lines...) Expand all
2193 FuzzyPixelOffByOneComparator(true))); 2193 FuzzyPixelOffByOneComparator(true)));
2194 } 2194 }
2195 2195
2196 // This test tests that anti-aliasing works for axis aligned quads. 2196 // This test tests that anti-aliasing works for axis aligned quads.
2197 // Anti-aliasing is only supported in the gl renderer. 2197 // Anti-aliasing is only supported in the gl renderer.
2198 TEST_F(GLRendererPixelTest, AxisAligned) { 2198 TEST_F(GLRendererPixelTest, AxisAligned) {
2199 gfx::Rect rect(this->device_viewport_size_); 2199 gfx::Rect rect(this->device_viewport_size_);
2200 2200
2201 RenderPassId id(1, 1); 2201 RenderPassId id(1, 1);
2202 gfx::Transform transform_to_root; 2202 gfx::Transform transform_to_root;
2203 scoped_ptr<RenderPass> pass = 2203 std::unique_ptr<RenderPass> pass =
2204 CreateTestRenderPass(id, rect, transform_to_root); 2204 CreateTestRenderPass(id, rect, transform_to_root);
2205 2205
2206 gfx::Transform red_quad_to_target_transform; 2206 gfx::Transform red_quad_to_target_transform;
2207 red_quad_to_target_transform.Translate(50, 50); 2207 red_quad_to_target_transform.Translate(50, 50);
2208 red_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f), 2208 red_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f),
2209 0.5f + 1.0f / (rect.height() * 2.0f)); 2209 0.5f + 1.0f / (rect.height() * 2.0f));
2210 SharedQuadState* red_shared_state = 2210 SharedQuadState* red_shared_state =
2211 CreateTestSharedQuadState(red_quad_to_target_transform, rect, pass.get()); 2211 CreateTestSharedQuadState(red_quad_to_target_transform, rect, pass.get());
2212 2212
2213 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2213 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
(...skipping 26 matching lines...) Expand all
2240 ExactPixelComparator(true))); 2240 ExactPixelComparator(true)));
2241 } 2241 }
2242 2242
2243 // This test tests that forcing anti-aliasing off works as expected. 2243 // This test tests that forcing anti-aliasing off works as expected.
2244 // Anti-aliasing is only supported in the gl renderer. 2244 // Anti-aliasing is only supported in the gl renderer.
2245 TEST_F(GLRendererPixelTest, ForceAntiAliasingOff) { 2245 TEST_F(GLRendererPixelTest, ForceAntiAliasingOff) {
2246 gfx::Rect rect(this->device_viewport_size_); 2246 gfx::Rect rect(this->device_viewport_size_);
2247 2247
2248 RenderPassId id(1, 1); 2248 RenderPassId id(1, 1);
2249 gfx::Transform transform_to_root; 2249 gfx::Transform transform_to_root;
2250 scoped_ptr<RenderPass> pass = 2250 std::unique_ptr<RenderPass> pass =
2251 CreateTestRenderPass(id, rect, transform_to_root); 2251 CreateTestRenderPass(id, rect, transform_to_root);
2252 2252
2253 gfx::Transform hole_quad_to_target_transform; 2253 gfx::Transform hole_quad_to_target_transform;
2254 hole_quad_to_target_transform.Translate(50, 50); 2254 hole_quad_to_target_transform.Translate(50, 50);
2255 hole_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f), 2255 hole_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f),
2256 0.5f + 1.0f / (rect.height() * 2.0f)); 2256 0.5f + 1.0f / (rect.height() * 2.0f));
2257 SharedQuadState* hole_shared_state = CreateTestSharedQuadState( 2257 SharedQuadState* hole_shared_state = CreateTestSharedQuadState(
2258 hole_quad_to_target_transform, rect, pass.get()); 2258 hole_quad_to_target_transform, rect, pass.get());
2259 2259
2260 SolidColorDrawQuad* hole = 2260 SolidColorDrawQuad* hole =
(...skipping 14 matching lines...) Expand all
2275 2275
2276 EXPECT_TRUE(this->RunPixelTest( 2276 EXPECT_TRUE(this->RunPixelTest(
2277 &pass_list, 2277 &pass_list,
2278 base::FilePath(FILE_PATH_LITERAL("force_anti_aliasing_off.png")), 2278 base::FilePath(FILE_PATH_LITERAL("force_anti_aliasing_off.png")),
2279 ExactPixelComparator(false))); 2279 ExactPixelComparator(false)));
2280 } 2280 }
2281 2281
2282 TEST_F(GLRendererPixelTest, AntiAliasingPerspective) { 2282 TEST_F(GLRendererPixelTest, AntiAliasingPerspective) {
2283 gfx::Rect rect(this->device_viewport_size_); 2283 gfx::Rect rect(this->device_viewport_size_);
2284 2284
2285 scoped_ptr<RenderPass> pass = 2285 std::unique_ptr<RenderPass> pass =
2286 CreateTestRootRenderPass(RenderPassId(1, 1), rect); 2286 CreateTestRootRenderPass(RenderPassId(1, 1), rect);
2287 2287
2288 gfx::Rect red_rect(0, 0, 180, 500); 2288 gfx::Rect red_rect(0, 0, 180, 500);
2289 gfx::Transform red_quad_to_target_transform( 2289 gfx::Transform red_quad_to_target_transform(
2290 1.0f, 2.4520f, 10.6206f, 19.0f, 0.0f, 0.3528f, 5.9737f, 9.5f, 0.0f, 2290 1.0f, 2.4520f, 10.6206f, 19.0f, 0.0f, 0.3528f, 5.9737f, 9.5f, 0.0f,
2291 -0.2250f, -0.9744f, 0.0f, 0.0f, 0.0225f, 0.0974f, 1.0f); 2291 -0.2250f, -0.9744f, 0.0f, 0.0f, 0.0225f, 0.0974f, 1.0f);
2292 SharedQuadState* red_shared_state = CreateTestSharedQuadState( 2292 SharedQuadState* red_shared_state = CreateTestSharedQuadState(
2293 red_quad_to_target_transform, red_rect, pass.get()); 2293 red_quad_to_target_transform, red_rect, pass.get());
2294 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2294 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
2295 red->SetNew(red_shared_state, red_rect, red_rect, SK_ColorRED, false); 2295 red->SetNew(red_shared_state, red_rect, red_rect, SK_ColorRED, false);
(...skipping 22 matching lines...) Expand all
2318 } 2318 }
2319 2319
2320 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) { 2320 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) {
2321 gfx::Rect viewport(this->device_viewport_size_); 2321 gfx::Rect viewport(this->device_viewport_size_);
2322 // TODO(enne): the renderer should figure this out on its own. 2322 // TODO(enne): the renderer should figure this out on its own.
2323 ResourceFormat texture_format = RGBA_8888; 2323 ResourceFormat texture_format = RGBA_8888;
2324 bool nearest_neighbor = false; 2324 bool nearest_neighbor = false;
2325 2325
2326 RenderPassId id(1, 1); 2326 RenderPassId id(1, 1);
2327 gfx::Transform transform_to_root; 2327 gfx::Transform transform_to_root;
2328 scoped_ptr<RenderPass> pass = 2328 std::unique_ptr<RenderPass> pass =
2329 CreateTestRenderPass(id, viewport, transform_to_root); 2329 CreateTestRenderPass(id, viewport, transform_to_root);
2330 2330
2331 // One clipped blue quad in the lower right corner. Outside the clip 2331 // One clipped blue quad in the lower right corner. Outside the clip
2332 // is red, which should not appear. 2332 // is red, which should not appear.
2333 gfx::Rect blue_rect(gfx::Size(100, 100)); 2333 gfx::Rect blue_rect(gfx::Size(100, 100));
2334 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50)); 2334 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50));
2335 2335
2336 scoped_ptr<FakeRecordingSource> blue_recording = 2336 std::unique_ptr<FakeRecordingSource> blue_recording =
2337 FakeRecordingSource::CreateFilledRecordingSource(blue_rect.size()); 2337 FakeRecordingSource::CreateFilledRecordingSource(blue_rect.size());
2338 SkPaint red_paint; 2338 SkPaint red_paint;
2339 red_paint.setColor(SK_ColorRED); 2339 red_paint.setColor(SK_ColorRED);
2340 blue_recording->add_draw_rect_with_paint(blue_rect, red_paint); 2340 blue_recording->add_draw_rect_with_paint(blue_rect, red_paint);
2341 SkPaint blue_paint; 2341 SkPaint blue_paint;
2342 blue_paint.setColor(SK_ColorBLUE); 2342 blue_paint.setColor(SK_ColorBLUE);
2343 blue_recording->add_draw_rect_with_paint(blue_clip_rect, blue_paint); 2343 blue_recording->add_draw_rect_with_paint(blue_clip_rect, blue_paint);
2344 blue_recording->Rerecord(); 2344 blue_recording->Rerecord();
2345 2345
2346 scoped_refptr<FakeRasterSource> blue_raster_source = 2346 scoped_refptr<FakeRasterSource> blue_raster_source =
(...skipping 10 matching lines...) Expand all
2357 2357
2358 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); 2358 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
2359 2359
2360 blue_quad->SetNew(blue_shared_state, 2360 blue_quad->SetNew(blue_shared_state,
2361 viewport, // Intentionally bigger than clip. 2361 viewport, // Intentionally bigger than clip.
2362 gfx::Rect(), viewport, gfx::RectF(viewport), 2362 gfx::Rect(), viewport, gfx::RectF(viewport),
2363 viewport.size(), nearest_neighbor, texture_format, viewport, 2363 viewport.size(), nearest_neighbor, texture_format, viewport,
2364 1.f, std::move(blue_raster_source)); 2364 1.f, std::move(blue_raster_source));
2365 2365
2366 // One viewport-filling green quad. 2366 // One viewport-filling green quad.
2367 scoped_ptr<FakeRecordingSource> green_recording = 2367 std::unique_ptr<FakeRecordingSource> green_recording =
2368 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); 2368 FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
2369 SkPaint green_paint; 2369 SkPaint green_paint;
2370 green_paint.setColor(SK_ColorGREEN); 2370 green_paint.setColor(SK_ColorGREEN);
2371 green_recording->add_draw_rect_with_paint(viewport, green_paint); 2371 green_recording->add_draw_rect_with_paint(viewport, green_paint);
2372 green_recording->Rerecord(); 2372 green_recording->Rerecord();
2373 scoped_refptr<FakeRasterSource> green_raster_source = 2373 scoped_refptr<FakeRasterSource> green_raster_source =
2374 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false); 2374 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false);
2375 2375
2376 gfx::Transform green_quad_to_target_transform; 2376 gfx::Transform green_quad_to_target_transform;
2377 SharedQuadState* green_shared_state = CreateTestSharedQuadState( 2377 SharedQuadState* green_shared_state = CreateTestSharedQuadState(
(...skipping 16 matching lines...) Expand all
2394 } 2394 }
2395 2395
2396 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. 2396 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity.
2397 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) { 2397 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) {
2398 gfx::Rect viewport(this->device_viewport_size_); 2398 gfx::Rect viewport(this->device_viewport_size_);
2399 ResourceFormat texture_format = RGBA_8888; 2399 ResourceFormat texture_format = RGBA_8888;
2400 bool nearest_neighbor = false; 2400 bool nearest_neighbor = false;
2401 2401
2402 RenderPassId id(1, 1); 2402 RenderPassId id(1, 1);
2403 gfx::Transform transform_to_root; 2403 gfx::Transform transform_to_root;
2404 scoped_ptr<RenderPass> pass = 2404 std::unique_ptr<RenderPass> pass =
2405 CreateTestRenderPass(id, viewport, transform_to_root); 2405 CreateTestRenderPass(id, viewport, transform_to_root);
2406 2406
2407 // One viewport-filling 0.5-opacity green quad. 2407 // One viewport-filling 0.5-opacity green quad.
2408 scoped_ptr<FakeRecordingSource> green_recording = 2408 std::unique_ptr<FakeRecordingSource> green_recording =
2409 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); 2409 FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
2410 SkPaint green_paint; 2410 SkPaint green_paint;
2411 green_paint.setColor(SK_ColorGREEN); 2411 green_paint.setColor(SK_ColorGREEN);
2412 green_recording->add_draw_rect_with_paint(viewport, green_paint); 2412 green_recording->add_draw_rect_with_paint(viewport, green_paint);
2413 green_recording->Rerecord(); 2413 green_recording->Rerecord();
2414 scoped_refptr<FakeRasterSource> green_raster_source = 2414 scoped_refptr<FakeRasterSource> green_raster_source =
2415 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false); 2415 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false);
2416 2416
2417 gfx::Transform green_quad_to_target_transform; 2417 gfx::Transform green_quad_to_target_transform;
2418 SharedQuadState* green_shared_state = CreateTestSharedQuadState( 2418 SharedQuadState* green_shared_state = CreateTestSharedQuadState(
2419 green_quad_to_target_transform, viewport, pass.get()); 2419 green_quad_to_target_transform, viewport, pass.get());
2420 green_shared_state->opacity = 0.5f; 2420 green_shared_state->opacity = 0.5f;
2421 2421
2422 PictureDrawQuad* green_quad = 2422 PictureDrawQuad* green_quad =
2423 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); 2423 pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
2424 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, 2424 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport,
2425 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, 2425 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor,
2426 texture_format, viewport, 1.f, green_raster_source.get()); 2426 texture_format, viewport, 1.f, green_raster_source.get());
2427 2427
2428 // One viewport-filling white quad. 2428 // One viewport-filling white quad.
2429 scoped_ptr<FakeRecordingSource> white_recording = 2429 std::unique_ptr<FakeRecordingSource> white_recording =
2430 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); 2430 FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
2431 SkPaint white_paint; 2431 SkPaint white_paint;
2432 white_paint.setColor(SK_ColorWHITE); 2432 white_paint.setColor(SK_ColorWHITE);
2433 white_recording->add_draw_rect_with_paint(viewport, white_paint); 2433 white_recording->add_draw_rect_with_paint(viewport, white_paint);
2434 white_recording->Rerecord(); 2434 white_recording->Rerecord();
2435 scoped_refptr<FakeRasterSource> white_raster_source = 2435 scoped_refptr<FakeRasterSource> white_raster_source =
2436 FakeRasterSource::CreateFromRecordingSource(white_recording.get(), false); 2436 FakeRasterSource::CreateFromRecordingSource(white_recording.get(), false);
2437 2437
2438 gfx::Transform white_quad_to_target_transform; 2438 gfx::Transform white_quad_to_target_transform;
2439 SharedQuadState* white_shared_state = CreateTestSharedQuadState( 2439 SharedQuadState* white_shared_state = CreateTestSharedQuadState(
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2476 // cheap in hardware. 2476 // cheap in hardware.
2477 if (!IsSoftwareRenderer<TypeParam>()) 2477 if (!IsSoftwareRenderer<TypeParam>())
2478 return; 2478 return;
2479 2479
2480 gfx::Rect viewport(this->device_viewport_size_); 2480 gfx::Rect viewport(this->device_viewport_size_);
2481 ResourceFormat texture_format = RGBA_8888; 2481 ResourceFormat texture_format = RGBA_8888;
2482 bool nearest_neighbor = false; 2482 bool nearest_neighbor = false;
2483 2483
2484 RenderPassId id(1, 1); 2484 RenderPassId id(1, 1);
2485 gfx::Transform transform_to_root; 2485 gfx::Transform transform_to_root;
2486 scoped_ptr<RenderPass> pass = 2486 std::unique_ptr<RenderPass> pass =
2487 CreateTestRenderPass(id, viewport, transform_to_root); 2487 CreateTestRenderPass(id, viewport, transform_to_root);
2488 2488
2489 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2); 2489 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2);
2490 ASSERT_NE(surface, nullptr); 2490 ASSERT_NE(surface, nullptr);
2491 SkCanvas* canvas = surface->getCanvas(); 2491 SkCanvas* canvas = surface->getCanvas();
2492 canvas->drawPoint(0, 0, SK_ColorGREEN); 2492 canvas->drawPoint(0, 0, SK_ColorGREEN);
2493 canvas->drawPoint(0, 1, SK_ColorBLUE); 2493 canvas->drawPoint(0, 1, SK_ColorBLUE);
2494 canvas->drawPoint(1, 0, SK_ColorBLUE); 2494 canvas->drawPoint(1, 0, SK_ColorBLUE);
2495 canvas->drawPoint(1, 1, SK_ColorGREEN); 2495 canvas->drawPoint(1, 1, SK_ColorGREEN);
2496 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot()); 2496 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot());
2497 2497
2498 scoped_ptr<FakeRecordingSource> recording = 2498 std::unique_ptr<FakeRecordingSource> recording =
2499 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); 2499 FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
2500 SkPaint paint; 2500 SkPaint paint;
2501 paint.setFilterQuality(kLow_SkFilterQuality); 2501 paint.setFilterQuality(kLow_SkFilterQuality);
2502 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint); 2502 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint);
2503 recording->Rerecord(); 2503 recording->Rerecord();
2504 scoped_refptr<FakeRasterSource> raster_source = 2504 scoped_refptr<FakeRasterSource> raster_source =
2505 FakeRasterSource::CreateFromRecordingSource(recording.get(), false); 2505 FakeRasterSource::CreateFromRecordingSource(recording.get(), false);
2506 2506
2507 gfx::Transform quad_to_target_transform; 2507 gfx::Transform quad_to_target_transform;
2508 SharedQuadState* shared_state = 2508 SharedQuadState* shared_state =
(...skipping 16 matching lines...) Expand all
2525 } 2525 }
2526 2526
2527 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. 2527 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad.
2528 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) { 2528 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) {
2529 gfx::Rect viewport(this->device_viewport_size_); 2529 gfx::Rect viewport(this->device_viewport_size_);
2530 ResourceFormat texture_format = RGBA_8888; 2530 ResourceFormat texture_format = RGBA_8888;
2531 bool nearest_neighbor = true; 2531 bool nearest_neighbor = true;
2532 2532
2533 RenderPassId id(1, 1); 2533 RenderPassId id(1, 1);
2534 gfx::Transform transform_to_root; 2534 gfx::Transform transform_to_root;
2535 scoped_ptr<RenderPass> pass = 2535 std::unique_ptr<RenderPass> pass =
2536 CreateTestRenderPass(id, viewport, transform_to_root); 2536 CreateTestRenderPass(id, viewport, transform_to_root);
2537 2537
2538 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2); 2538 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2);
2539 ASSERT_NE(surface, nullptr); 2539 ASSERT_NE(surface, nullptr);
2540 SkCanvas* canvas = surface->getCanvas(); 2540 SkCanvas* canvas = surface->getCanvas();
2541 canvas->drawPoint(0, 0, SK_ColorGREEN); 2541 canvas->drawPoint(0, 0, SK_ColorGREEN);
2542 canvas->drawPoint(0, 1, SK_ColorBLUE); 2542 canvas->drawPoint(0, 1, SK_ColorBLUE);
2543 canvas->drawPoint(1, 0, SK_ColorBLUE); 2543 canvas->drawPoint(1, 0, SK_ColorBLUE);
2544 canvas->drawPoint(1, 1, SK_ColorGREEN); 2544 canvas->drawPoint(1, 1, SK_ColorGREEN);
2545 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot()); 2545 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot());
2546 2546
2547 scoped_ptr<FakeRecordingSource> recording = 2547 std::unique_ptr<FakeRecordingSource> recording =
2548 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); 2548 FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
2549 SkPaint paint; 2549 SkPaint paint;
2550 paint.setFilterQuality(kLow_SkFilterQuality); 2550 paint.setFilterQuality(kLow_SkFilterQuality);
2551 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint); 2551 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint);
2552 recording->Rerecord(); 2552 recording->Rerecord();
2553 scoped_refptr<FakeRasterSource> raster_source = 2553 scoped_refptr<FakeRasterSource> raster_source =
2554 FakeRasterSource::CreateFromRecordingSource(recording.get(), false); 2554 FakeRasterSource::CreateFromRecordingSource(recording.get(), false);
2555 2555
2556 gfx::Transform quad_to_target_transform; 2556 gfx::Transform quad_to_target_transform;
2557 SharedQuadState* shared_state = 2557 SharedQuadState* shared_state =
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2593 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 2593 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888);
2594 2594
2595 { 2595 {
2596 SkAutoLockPixels lock(bitmap); 2596 SkAutoLockPixels lock(bitmap);
2597 this->resource_provider_->CopyToResource( 2597 this->resource_provider_->CopyToResource(
2598 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); 2598 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2599 } 2599 }
2600 2600
2601 RenderPassId id(1, 1); 2601 RenderPassId id(1, 1);
2602 gfx::Transform transform_to_root; 2602 gfx::Transform transform_to_root;
2603 scoped_ptr<RenderPass> pass = 2603 std::unique_ptr<RenderPass> pass =
2604 CreateTestRenderPass(id, viewport, transform_to_root); 2604 CreateTestRenderPass(id, viewport, transform_to_root);
2605 2605
2606 gfx::Transform quad_to_target_transform; 2606 gfx::Transform quad_to_target_transform;
2607 SharedQuadState* shared_state = 2607 SharedQuadState* shared_state =
2608 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); 2608 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get());
2609 2609
2610 TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>(); 2610 TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>();
2611 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, 2611 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource,
2612 gfx::RectF(gfx::Rect(tile_size)), tile_size, swizzle_contents, 2612 gfx::RectF(gfx::Rect(tile_size)), tile_size, swizzle_contents,
2613 nearest_neighbor); 2613 nearest_neighbor);
(...skipping 29 matching lines...) Expand all
2643 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 2643 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888);
2644 2644
2645 { 2645 {
2646 SkAutoLockPixels lock(bitmap); 2646 SkAutoLockPixels lock(bitmap);
2647 this->resource_provider_->CopyToResource( 2647 this->resource_provider_->CopyToResource(
2648 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); 2648 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2649 } 2649 }
2650 2650
2651 RenderPassId id(1, 1); 2651 RenderPassId id(1, 1);
2652 gfx::Transform transform_to_root; 2652 gfx::Transform transform_to_root;
2653 scoped_ptr<RenderPass> pass = 2653 std::unique_ptr<RenderPass> pass =
2654 CreateTestRenderPass(id, viewport, transform_to_root); 2654 CreateTestRenderPass(id, viewport, transform_to_root);
2655 2655
2656 gfx::Transform quad_to_target_transform; 2656 gfx::Transform quad_to_target_transform;
2657 SharedQuadState* shared_state = 2657 SharedQuadState* shared_state =
2658 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); 2658 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get());
2659 2659
2660 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 2660 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
2661 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 2661 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
2662 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false, 2662 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false,
2663 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK, 2663 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK,
(...skipping 30 matching lines...) Expand all
2694 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 2694 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888);
2695 2695
2696 { 2696 {
2697 SkAutoLockPixels lock(bitmap); 2697 SkAutoLockPixels lock(bitmap);
2698 this->resource_provider_->CopyToResource( 2698 this->resource_provider_->CopyToResource(
2699 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); 2699 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2700 } 2700 }
2701 2701
2702 RenderPassId id(1, 1); 2702 RenderPassId id(1, 1);
2703 gfx::Transform transform_to_root; 2703 gfx::Transform transform_to_root;
2704 scoped_ptr<RenderPass> pass = 2704 std::unique_ptr<RenderPass> pass =
2705 CreateTestRenderPass(id, viewport, transform_to_root); 2705 CreateTestRenderPass(id, viewport, transform_to_root);
2706 2706
2707 gfx::Transform quad_to_target_transform; 2707 gfx::Transform quad_to_target_transform;
2708 SharedQuadState* shared_state = 2708 SharedQuadState* shared_state =
2709 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); 2709 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get());
2710 2710
2711 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 2711 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
2712 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 2712 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
2713 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false, 2713 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false,
2714 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK, 2714 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK,
(...skipping 11 matching lines...) Expand all
2726 } 2726 }
2727 2727
2728 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) { 2728 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) {
2729 gfx::Rect viewport(this->device_viewport_size_); 2729 gfx::Rect viewport(this->device_viewport_size_);
2730 // TODO(enne): the renderer should figure this out on its own. 2730 // TODO(enne): the renderer should figure this out on its own.
2731 ResourceFormat texture_format = RGBA_8888; 2731 ResourceFormat texture_format = RGBA_8888;
2732 bool nearest_neighbor = false; 2732 bool nearest_neighbor = false;
2733 2733
2734 RenderPassId id(1, 1); 2734 RenderPassId id(1, 1);
2735 gfx::Transform transform_to_root; 2735 gfx::Transform transform_to_root;
2736 scoped_ptr<RenderPass> pass = 2736 std::unique_ptr<RenderPass> pass =
2737 CreateTestRenderPass(id, viewport, transform_to_root); 2737 CreateTestRenderPass(id, viewport, transform_to_root);
2738 2738
2739 // As scaling up the blue checkerboards will cause sampling on the GPU, 2739 // As scaling up the blue checkerboards will cause sampling on the GPU,
2740 // a few extra "cleanup rects" need to be added to clobber the blending 2740 // a few extra "cleanup rects" need to be added to clobber the blending
2741 // to make the output image more clean. This will also test subrects 2741 // to make the output image more clean. This will also test subrects
2742 // of the layer. 2742 // of the layer.
2743 gfx::Transform green_quad_to_target_transform; 2743 gfx::Transform green_quad_to_target_transform;
2744 gfx::Rect green_rect1(gfx::Point(80, 0), gfx::Size(20, 100)); 2744 gfx::Rect green_rect1(gfx::Point(80, 0), gfx::Size(20, 100));
2745 gfx::Rect green_rect2(gfx::Point(0, 80), gfx::Size(100, 20)); 2745 gfx::Rect green_rect2(gfx::Point(0, 80), gfx::Size(100, 20));
2746 2746
2747 scoped_ptr<FakeRecordingSource> green_recording = 2747 std::unique_ptr<FakeRecordingSource> green_recording =
2748 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); 2748 FakeRecordingSource::CreateFilledRecordingSource(viewport.size());
2749 2749
2750 SkPaint red_paint; 2750 SkPaint red_paint;
2751 red_paint.setColor(SK_ColorRED); 2751 red_paint.setColor(SK_ColorRED);
2752 green_recording->add_draw_rect_with_paint(viewport, red_paint); 2752 green_recording->add_draw_rect_with_paint(viewport, red_paint);
2753 SkPaint green_paint; 2753 SkPaint green_paint;
2754 green_paint.setColor(SK_ColorGREEN); 2754 green_paint.setColor(SK_ColorGREEN);
2755 green_recording->add_draw_rect_with_paint(green_rect1, green_paint); 2755 green_recording->add_draw_rect_with_paint(green_rect1, green_paint);
2756 green_recording->add_draw_rect_with_paint(green_rect2, green_paint); 2756 green_recording->add_draw_rect_with_paint(green_rect2, green_paint);
2757 green_recording->Rerecord(); 2757 green_recording->Rerecord();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2803 gfx::RectF blue_layer_rect2(gfx::PointF(8.0f, 6.5f), gfx::SizeF(2.5f, 2.5f)); 2803 gfx::RectF blue_layer_rect2(gfx::PointF(8.0f, 6.5f), gfx::SizeF(2.5f, 2.5f));
2804 gfx::RectF union_layer_rect = blue_layer_rect1; 2804 gfx::RectF union_layer_rect = blue_layer_rect1;
2805 union_layer_rect.Union(blue_layer_rect2); 2805 union_layer_rect.Union(blue_layer_rect2);
2806 2806
2807 // Because scaling up will cause sampling outside the rects, add one extra 2807 // Because scaling up will cause sampling outside the rects, add one extra
2808 // pixel of buffer at the final content scale. 2808 // pixel of buffer at the final content scale.
2809 float inset = -1.f / contents_scale; 2809 float inset = -1.f / contents_scale;
2810 blue_layer_rect1.Inset(inset, inset, inset, inset); 2810 blue_layer_rect1.Inset(inset, inset, inset, inset);
2811 blue_layer_rect2.Inset(inset, inset, inset, inset); 2811 blue_layer_rect2.Inset(inset, inset, inset, inset);
2812 2812
2813 scoped_ptr<FakeRecordingSource> recording = 2813 std::unique_ptr<FakeRecordingSource> recording =
2814 FakeRecordingSource::CreateFilledRecordingSource(layer_rect.size()); 2814 FakeRecordingSource::CreateFilledRecordingSource(layer_rect.size());
2815 2815
2816 Region outside(layer_rect); 2816 Region outside(layer_rect);
2817 outside.Subtract(gfx::ToEnclosingRect(union_layer_rect)); 2817 outside.Subtract(gfx::ToEnclosingRect(union_layer_rect));
2818 for (Region::Iterator iter(outside); iter.has_rect(); iter.next()) { 2818 for (Region::Iterator iter(outside); iter.has_rect(); iter.next()) {
2819 recording->add_draw_rect_with_paint(iter.rect(), red_paint); 2819 recording->add_draw_rect_with_paint(iter.rect(), red_paint);
2820 } 2820 }
2821 2821
2822 SkPaint blue_paint; 2822 SkPaint blue_paint;
2823 blue_paint.setColor(SK_ColorBLUE); 2823 blue_paint.setColor(SK_ColorBLUE);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2870 } 2870 }
2871 2871
2872 typedef RendererPixelTest<GLRendererWithFlippedSurface> 2872 typedef RendererPixelTest<GLRendererWithFlippedSurface>
2873 GLRendererPixelTestWithFlippedOutputSurface; 2873 GLRendererPixelTestWithFlippedOutputSurface;
2874 2874
2875 TEST_F(GLRendererPixelTestWithFlippedOutputSurface, ExplicitFlipTest) { 2875 TEST_F(GLRendererPixelTestWithFlippedOutputSurface, ExplicitFlipTest) {
2876 // This draws a blue rect above a yellow rect with an inverted output surface. 2876 // This draws a blue rect above a yellow rect with an inverted output surface.
2877 gfx::Rect viewport_rect(this->device_viewport_size_); 2877 gfx::Rect viewport_rect(this->device_viewport_size_);
2878 2878
2879 RenderPassId root_pass_id(1, 1); 2879 RenderPassId root_pass_id(1, 1);
2880 scoped_ptr<RenderPass> root_pass = 2880 std::unique_ptr<RenderPass> root_pass =
2881 CreateTestRootRenderPass(root_pass_id, viewport_rect); 2881 CreateTestRootRenderPass(root_pass_id, viewport_rect);
2882 2882
2883 RenderPassId child_pass_id(2, 2); 2883 RenderPassId child_pass_id(2, 2);
2884 gfx::Rect pass_rect(this->device_viewport_size_); 2884 gfx::Rect pass_rect(this->device_viewport_size_);
2885 gfx::Transform transform_to_root; 2885 gfx::Transform transform_to_root;
2886 scoped_ptr<RenderPass> child_pass = 2886 std::unique_ptr<RenderPass> child_pass =
2887 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 2887 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
2888 2888
2889 gfx::Transform quad_to_target_transform; 2889 gfx::Transform quad_to_target_transform;
2890 SharedQuadState* shared_state = CreateTestSharedQuadState( 2890 SharedQuadState* shared_state = CreateTestSharedQuadState(
2891 quad_to_target_transform, viewport_rect, child_pass.get()); 2891 quad_to_target_transform, viewport_rect, child_pass.get());
2892 2892
2893 gfx::Rect blue_rect(0, 2893 gfx::Rect blue_rect(0,
2894 0, 2894 0,
2895 this->device_viewport_size_.width(), 2895 this->device_viewport_size_.width(),
2896 this->device_viewport_size_.height() / 2); 2896 this->device_viewport_size_.height() / 2);
(...skipping 21 matching lines...) Expand all
2918 &pass_list, 2918 &pass_list,
2919 base::FilePath(FILE_PATH_LITERAL("blue_yellow_flipped.png")), 2919 base::FilePath(FILE_PATH_LITERAL("blue_yellow_flipped.png")),
2920 ExactPixelComparator(true))); 2920 ExactPixelComparator(true)));
2921 } 2921 }
2922 2922
2923 TEST_F(GLRendererPixelTestWithFlippedOutputSurface, CheckChildPassUnflipped) { 2923 TEST_F(GLRendererPixelTestWithFlippedOutputSurface, CheckChildPassUnflipped) {
2924 // This draws a blue rect above a yellow rect with an inverted output surface. 2924 // This draws a blue rect above a yellow rect with an inverted output surface.
2925 gfx::Rect viewport_rect(this->device_viewport_size_); 2925 gfx::Rect viewport_rect(this->device_viewport_size_);
2926 2926
2927 RenderPassId root_pass_id(1, 1); 2927 RenderPassId root_pass_id(1, 1);
2928 scoped_ptr<RenderPass> root_pass = 2928 std::unique_ptr<RenderPass> root_pass =
2929 CreateTestRootRenderPass(root_pass_id, viewport_rect); 2929 CreateTestRootRenderPass(root_pass_id, viewport_rect);
2930 2930
2931 RenderPassId child_pass_id(2, 2); 2931 RenderPassId child_pass_id(2, 2);
2932 gfx::Rect pass_rect(this->device_viewport_size_); 2932 gfx::Rect pass_rect(this->device_viewport_size_);
2933 gfx::Transform transform_to_root; 2933 gfx::Transform transform_to_root;
2934 scoped_ptr<RenderPass> child_pass = 2934 std::unique_ptr<RenderPass> child_pass =
2935 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 2935 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
2936 2936
2937 gfx::Transform quad_to_target_transform; 2937 gfx::Transform quad_to_target_transform;
2938 SharedQuadState* shared_state = CreateTestSharedQuadState( 2938 SharedQuadState* shared_state = CreateTestSharedQuadState(
2939 quad_to_target_transform, viewport_rect, child_pass.get()); 2939 quad_to_target_transform, viewport_rect, child_pass.get());
2940 2940
2941 gfx::Rect blue_rect(0, 2941 gfx::Rect blue_rect(0,
2942 0, 2942 0,
2943 this->device_viewport_size_.width(), 2943 this->device_viewport_size_.width(),
2944 this->device_viewport_size_.height() / 2); 2944 this->device_viewport_size_.height() / 2);
(...skipping 21 matching lines...) Expand all
2966 EXPECT_TRUE(this->RunPixelTestWithReadbackTarget( 2966 EXPECT_TRUE(this->RunPixelTestWithReadbackTarget(
2967 &pass_list, pass_list.front().get(), 2967 &pass_list, pass_list.front().get(),
2968 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")), 2968 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")),
2969 ExactPixelComparator(true))); 2969 ExactPixelComparator(true)));
2970 } 2970 }
2971 2971
2972 TEST_F(GLRendererPixelTest, CheckReadbackSubset) { 2972 TEST_F(GLRendererPixelTest, CheckReadbackSubset) {
2973 gfx::Rect viewport_rect(this->device_viewport_size_); 2973 gfx::Rect viewport_rect(this->device_viewport_size_);
2974 2974
2975 RenderPassId root_pass_id(1, 1); 2975 RenderPassId root_pass_id(1, 1);
2976 scoped_ptr<RenderPass> root_pass = 2976 std::unique_ptr<RenderPass> root_pass =
2977 CreateTestRootRenderPass(root_pass_id, viewport_rect); 2977 CreateTestRootRenderPass(root_pass_id, viewport_rect);
2978 2978
2979 RenderPassId child_pass_id(2, 2); 2979 RenderPassId child_pass_id(2, 2);
2980 gfx::Rect pass_rect(this->device_viewport_size_); 2980 gfx::Rect pass_rect(this->device_viewport_size_);
2981 gfx::Transform transform_to_root; 2981 gfx::Transform transform_to_root;
2982 scoped_ptr<RenderPass> child_pass = 2982 std::unique_ptr<RenderPass> child_pass =
2983 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 2983 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
2984 2984
2985 gfx::Transform quad_to_target_transform; 2985 gfx::Transform quad_to_target_transform;
2986 SharedQuadState* shared_state = CreateTestSharedQuadState( 2986 SharedQuadState* shared_state = CreateTestSharedQuadState(
2987 quad_to_target_transform, viewport_rect, child_pass.get()); 2987 quad_to_target_transform, viewport_rect, child_pass.get());
2988 2988
2989 // Draw a green quad full-size with a blue quad in the lower-right corner. 2989 // Draw a green quad full-size with a blue quad in the lower-right corner.
2990 gfx::Rect blue_rect(this->device_viewport_size_.width() * 3 / 4, 2990 gfx::Rect blue_rect(this->device_viewport_size_.width() * 3 / 4,
2991 this->device_viewport_size_.height() * 3 / 4, 2991 this->device_viewport_size_.height() * 3 / 4,
2992 this->device_viewport_size_.width() * 3 / 4, 2992 this->device_viewport_size_.width() * 3 / 4,
(...skipping 30 matching lines...) Expand all
3023 } 3023 }
3024 3024
3025 TEST_F(GLRendererPixelTest, TextureQuadBatching) { 3025 TEST_F(GLRendererPixelTest, TextureQuadBatching) {
3026 // This test verifies that multiple texture quads using the same resource 3026 // This test verifies that multiple texture quads using the same resource
3027 // get drawn correctly. It implicitly is trying to test that the 3027 // get drawn correctly. It implicitly is trying to test that the
3028 // GLRenderer does the right thing with its draw quad cache. 3028 // GLRenderer does the right thing with its draw quad cache.
3029 3029
3030 gfx::Rect rect(this->device_viewport_size_); 3030 gfx::Rect rect(this->device_viewport_size_);
3031 3031
3032 RenderPassId id(1, 1); 3032 RenderPassId id(1, 1);
3033 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 3033 std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
3034 3034
3035 SharedQuadState* shared_state = 3035 SharedQuadState* shared_state =
3036 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 3036 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
3037 3037
3038 // Make a mask. 3038 // Make a mask.
3039 gfx::Rect mask_rect = rect; 3039 gfx::Rect mask_rect = rect;
3040 SkBitmap bitmap; 3040 SkBitmap bitmap;
3041 bitmap.allocPixels( 3041 bitmap.allocPixels(
3042 SkImageInfo::MakeN32Premul(mask_rect.width(), mask_rect.height())); 3042 SkImageInfo::MakeN32Premul(mask_rect.width(), mask_rect.height()));
3043 SkCanvas canvas(bitmap); 3043 SkCanvas canvas(bitmap);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
3100 3100
3101 EXPECT_TRUE(this->RunPixelTest( 3101 EXPECT_TRUE(this->RunPixelTest(
3102 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")), 3102 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")),
3103 FuzzyPixelOffByOneComparator(true))); 3103 FuzzyPixelOffByOneComparator(true)));
3104 } 3104 }
3105 3105
3106 #endif // !defined(OS_ANDROID) 3106 #endif // !defined(OS_ANDROID)
3107 3107
3108 } // namespace 3108 } // namespace
3109 } // namespace cc 3109 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/renderer.h ('k') | cc/output/renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698