OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |