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 "base/message_loop.h" | 5 #include "base/message_loop.h" |
6 #include "cc/layers/append_quads_data.h" | 6 #include "cc/layers/append_quads_data.h" |
7 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
8 #include "cc/quads/draw_quad.h" | 8 #include "cc/quads/draw_quad.h" |
9 #include "cc/quads/picture_draw_quad.h" | 9 #include "cc/quads/picture_draw_quad.h" |
10 #include "cc/resources/platform_color.h" | 10 #include "cc/resources/platform_color.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 WebKit::WebFilterOperations(), // foreground filters | 90 WebKit::WebFilterOperations(), // foreground filters |
91 skia::RefPtr<SkImageFilter>(), // foreground filter | 91 skia::RefPtr<SkImageFilter>(), // foreground filter |
92 WebKit::WebFilterOperations()); // background filters | 92 WebKit::WebFilterOperations()); // background filters |
93 | 93 |
94 return quad.PassAs<DrawQuad>(); | 94 return quad.PassAs<DrawQuad>(); |
95 } | 95 } |
96 | 96 |
97 typedef ::testing::Types<GLRenderer, SoftwareRenderer> RendererTypes; | 97 typedef ::testing::Types<GLRenderer, SoftwareRenderer> RendererTypes; |
98 TYPED_TEST_CASE(RendererPixelTest, RendererTypes); | 98 TYPED_TEST_CASE(RendererPixelTest, RendererTypes); |
99 | 99 |
| 100 typedef ::testing::Types<GLRenderer, |
| 101 GLRendererWithSkiaGPUBackend, |
| 102 SoftwareRenderer> RendererTypesWithSkiaGPUBackend; |
| 103 template <typename RendererType> |
| 104 class RendererPixelTestWithSkiaGPUBackend |
| 105 : public RendererPixelTest<RendererType> { |
| 106 }; |
| 107 TYPED_TEST_CASE(RendererPixelTestWithSkiaGPUBackend, |
| 108 RendererTypesWithSkiaGPUBackend); |
| 109 |
100 // All pixels can be off by one, but any more than that is an error. | 110 // All pixels can be off by one, but any more than that is an error. |
101 class FuzzyPixelOffByOneComparator : public FuzzyPixelComparator { | 111 class FuzzyPixelOffByOneComparator : public FuzzyPixelComparator { |
102 public: | 112 public: |
103 explicit FuzzyPixelOffByOneComparator(bool discard_alpha) | 113 explicit FuzzyPixelOffByOneComparator(bool discard_alpha) |
104 : FuzzyPixelComparator(discard_alpha, 100.f, 0.f, 1.f, 1, 0) {} | 114 : FuzzyPixelComparator(discard_alpha, 100.f, 0.f, 1.f, 1, 0) {} |
105 }; | 115 }; |
106 | 116 |
107 template <typename RendererType> | 117 template <typename RendererType> |
108 class FuzzyForSoftwareOnlyPixelComparator : public PixelComparator { | 118 class FuzzyForSoftwareOnlyPixelComparator : public PixelComparator { |
109 public: | 119 public: |
110 explicit FuzzyForSoftwareOnlyPixelComparator(bool discard_alpha) | 120 explicit FuzzyForSoftwareOnlyPixelComparator(bool discard_alpha) |
111 : fuzzy_(discard_alpha), exact_(discard_alpha) {} | 121 : fuzzy_(discard_alpha), exact_(discard_alpha) {} |
112 | 122 |
113 virtual bool Compare(const SkBitmap& actual_bmp, | 123 virtual bool Compare(const SkBitmap& actual_bmp, |
114 const SkBitmap& expected_bmp) const; | 124 const SkBitmap& expected_bmp) const; |
115 | 125 |
116 private: | 126 private: |
117 FuzzyPixelOffByOneComparator fuzzy_; | 127 FuzzyPixelOffByOneComparator fuzzy_; |
118 ExactPixelComparator exact_; | 128 ExactPixelComparator exact_; |
119 }; | 129 }; |
120 | 130 |
121 template<> | 131 template<> |
122 bool FuzzyForSoftwareOnlyPixelComparator<GLRenderer>::Compare( | |
123 const SkBitmap& actual_bmp, | |
124 const SkBitmap& expected_bmp) const { | |
125 return exact_.Compare(actual_bmp, expected_bmp); | |
126 } | |
127 | |
128 template<> | |
129 bool FuzzyForSoftwareOnlyPixelComparator<SoftwareRenderer>::Compare( | 132 bool FuzzyForSoftwareOnlyPixelComparator<SoftwareRenderer>::Compare( |
130 const SkBitmap& actual_bmp, | 133 const SkBitmap& actual_bmp, |
131 const SkBitmap& expected_bmp) const { | 134 const SkBitmap& expected_bmp) const { |
132 return fuzzy_.Compare(actual_bmp, expected_bmp); | 135 return fuzzy_.Compare(actual_bmp, expected_bmp); |
133 } | 136 } |
134 | 137 |
| 138 template<typename RendererType> |
| 139 bool FuzzyForSoftwareOnlyPixelComparator<RendererType>::Compare( |
| 140 const SkBitmap& actual_bmp, |
| 141 const SkBitmap& expected_bmp) const { |
| 142 return exact_.Compare(actual_bmp, expected_bmp); |
| 143 } |
| 144 |
135 #if !defined(OS_ANDROID) | 145 #if !defined(OS_ANDROID) |
136 TYPED_TEST(RendererPixelTest, SimpleGreenRect) { | 146 TYPED_TEST(RendererPixelTest, SimpleGreenRect) { |
137 gfx::Rect rect(this->device_viewport_size_); | 147 gfx::Rect rect(this->device_viewport_size_); |
138 | 148 |
139 RenderPass::Id id(1, 1); | 149 RenderPass::Id id(1, 1); |
140 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); | 150 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
141 | 151 |
142 scoped_ptr<SharedQuadState> shared_state = | 152 scoped_ptr<SharedQuadState> shared_state = |
143 CreateTestSharedQuadState(gfx::Transform(), rect); | 153 CreateTestSharedQuadState(gfx::Transform(), rect); |
144 | 154 |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
563 pass_list_.push_back(filter_pass.Pass()); | 573 pass_list_.push_back(filter_pass.Pass()); |
564 pass_list_.push_back(root_pass.Pass()); | 574 pass_list_.push_back(root_pass.Pass()); |
565 } | 575 } |
566 | 576 |
567 RenderPassList pass_list_; | 577 RenderPassList pass_list_; |
568 WebKit::WebFilterOperations background_filters_; | 578 WebKit::WebFilterOperations background_filters_; |
569 gfx::Transform filter_pass_to_target_transform_; | 579 gfx::Transform filter_pass_to_target_transform_; |
570 gfx::Rect filter_pass_content_rect_; | 580 gfx::Rect filter_pass_content_rect_; |
571 }; | 581 }; |
572 | 582 |
573 typedef ::testing::Types<GLRenderer, SoftwareRenderer> RendererTypes; | 583 typedef ::testing::Types<GLRenderer, SoftwareRenderer> |
574 TYPED_TEST_CASE(RendererPixelTestWithBackgroundFilter, RendererTypes); | 584 BackgroundFilterRendererTypes; |
| 585 TYPED_TEST_CASE(RendererPixelTestWithBackgroundFilter, |
| 586 BackgroundFilterRendererTypes); |
575 | 587 |
576 typedef RendererPixelTestWithBackgroundFilter<GLRenderer> | 588 typedef RendererPixelTestWithBackgroundFilter<GLRenderer> |
577 GLRendererPixelTestWithBackgroundFilter; | 589 GLRendererPixelTestWithBackgroundFilter; |
578 | 590 |
579 // TODO(skaslev): The software renderer does not support filters yet. | 591 // TODO(skaslev): The software renderer does not support filters yet. |
580 TEST_F(GLRendererPixelTestWithBackgroundFilter, InvertFilter) { | 592 TEST_F(GLRendererPixelTestWithBackgroundFilter, InvertFilter) { |
581 this->background_filters_.append( | 593 this->background_filters_.append( |
582 WebKit::WebFilterOperation::createInvertFilter(1.f)); | 594 WebKit::WebFilterOperation::createInvertFilter(1.f)); |
583 | 595 |
584 this->filter_pass_content_rect_ = gfx::Rect(this->device_viewport_size_); | 596 this->filter_pass_content_rect_ = gfx::Rect(this->device_viewport_size_); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 | 734 |
723 RenderPassList pass_list; | 735 RenderPassList pass_list; |
724 pass_list.push_back(pass.Pass()); | 736 pass_list.push_back(pass.Pass()); |
725 | 737 |
726 EXPECT_TRUE(this->RunPixelTest( | 738 EXPECT_TRUE(this->RunPixelTest( |
727 &pass_list, | 739 &pass_list, |
728 base::FilePath(FILE_PATH_LITERAL("force_anti_aliasing_off.png")), | 740 base::FilePath(FILE_PATH_LITERAL("force_anti_aliasing_off.png")), |
729 ExactPixelComparator(false))); | 741 ExactPixelComparator(false))); |
730 } | 742 } |
731 | 743 |
732 TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) { | 744 TYPED_TEST(RendererPixelTestWithSkiaGPUBackend, PictureDrawQuadIdentityScale) { |
733 gfx::Size pile_tile_size(1000, 1000); | 745 gfx::Size pile_tile_size(1000, 1000); |
734 gfx::Rect viewport(this->device_viewport_size_); | 746 gfx::Rect viewport(this->device_viewport_size_); |
| 747 bool use_skia_gpu_backend = this->UseSkiaGPUBackend(); |
735 // TODO(enne): the renderer should figure this out on its own. | 748 // TODO(enne): the renderer should figure this out on its own. |
736 bool contents_swizzled = !PlatformColor::SameComponentOrder(GL_RGBA); | 749 bool contents_swizzled = !PlatformColor::SameComponentOrder(GL_RGBA); |
737 | 750 |
738 RenderPass::Id id(1, 1); | 751 RenderPass::Id id(1, 1); |
739 gfx::Transform transform_to_root; | 752 gfx::Transform transform_to_root; |
740 scoped_ptr<RenderPass> pass = | 753 scoped_ptr<RenderPass> pass = |
741 CreateTestRenderPass(id, viewport, transform_to_root); | 754 CreateTestRenderPass(id, viewport, transform_to_root); |
742 | 755 |
743 // One clipped blue quad in the lower right corner. Outside the clip | 756 // One clipped blue quad in the lower right corner. Outside the clip |
744 // is red, which should not appear. | 757 // is red, which should not appear. |
(...skipping 22 matching lines...) Expand all Loading... |
767 scoped_ptr<PictureDrawQuad> blue_quad = PictureDrawQuad::Create(); | 780 scoped_ptr<PictureDrawQuad> blue_quad = PictureDrawQuad::Create(); |
768 | 781 |
769 blue_quad->SetNew(blue_shared_state.get(), | 782 blue_quad->SetNew(blue_shared_state.get(), |
770 viewport, // Intentionally bigger than clip. | 783 viewport, // Intentionally bigger than clip. |
771 gfx::Rect(), | 784 gfx::Rect(), |
772 viewport, | 785 viewport, |
773 viewport.size(), | 786 viewport.size(), |
774 contents_swizzled, | 787 contents_swizzled, |
775 viewport, | 788 viewport, |
776 1.f, | 789 1.f, |
| 790 use_skia_gpu_backend, |
777 blue_pile); | 791 blue_pile); |
778 pass->quad_list.push_back(blue_quad.PassAs<DrawQuad>()); | 792 pass->quad_list.push_back(blue_quad.PassAs<DrawQuad>()); |
779 | 793 |
780 // One viewport-filling green quad. | 794 // One viewport-filling green quad. |
781 scoped_refptr<FakePicturePileImpl> green_pile = | 795 scoped_refptr<FakePicturePileImpl> green_pile = |
782 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); | 796 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); |
783 SkPaint green_paint; | 797 SkPaint green_paint; |
784 green_paint.setColor(SK_ColorGREEN); | 798 green_paint.setColor(SK_ColorGREEN); |
785 green_pile->add_draw_rect_with_paint(viewport, green_paint); | 799 green_pile->add_draw_rect_with_paint(viewport, green_paint); |
786 green_pile->RerecordPile(); | 800 green_pile->RerecordPile(); |
787 | 801 |
788 gfx::Transform green_content_to_target_transform; | 802 gfx::Transform green_content_to_target_transform; |
789 scoped_ptr<SharedQuadState> green_shared_state = | 803 scoped_ptr<SharedQuadState> green_shared_state = |
790 CreateTestSharedQuadState(green_content_to_target_transform, viewport); | 804 CreateTestSharedQuadState(green_content_to_target_transform, viewport); |
791 | 805 |
792 scoped_ptr<PictureDrawQuad> green_quad = PictureDrawQuad::Create(); | 806 scoped_ptr<PictureDrawQuad> green_quad = PictureDrawQuad::Create(); |
793 green_quad->SetNew(green_shared_state.get(), | 807 green_quad->SetNew(green_shared_state.get(), |
794 viewport, | 808 viewport, |
795 gfx::Rect(), | 809 gfx::Rect(), |
796 gfx::RectF(0.f, 0.f, 1.f, 1.f), | 810 gfx::RectF(0.f, 0.f, 1.f, 1.f), |
797 viewport.size(), | 811 viewport.size(), |
798 contents_swizzled, | 812 contents_swizzled, |
799 viewport, | 813 viewport, |
800 1.f, | 814 1.f, |
| 815 use_skia_gpu_backend, |
801 green_pile); | 816 green_pile); |
802 pass->quad_list.push_back(green_quad.PassAs<DrawQuad>()); | 817 pass->quad_list.push_back(green_quad.PassAs<DrawQuad>()); |
803 | 818 |
804 RenderPassList pass_list; | 819 RenderPassList pass_list; |
805 pass_list.push_back(pass.Pass()); | 820 pass_list.push_back(pass.Pass()); |
806 | 821 |
807 EXPECT_TRUE(this->RunPixelTest( | 822 EXPECT_TRUE(this->RunPixelTest( |
808 &pass_list, | 823 &pass_list, |
809 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), | 824 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), |
810 ExactPixelComparator(true))); | 825 ExactPixelComparator(true))); |
811 } | 826 } |
812 | 827 |
813 TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { | 828 TYPED_TEST(RendererPixelTestWithSkiaGPUBackend, |
| 829 PictureDrawQuadNonIdentityScale) { |
814 gfx::Size pile_tile_size(1000, 1000); | 830 gfx::Size pile_tile_size(1000, 1000); |
815 gfx::Rect viewport(this->device_viewport_size_); | 831 gfx::Rect viewport(this->device_viewport_size_); |
| 832 bool use_skia_gpu_backend = this->UseSkiaGPUBackend(); |
816 // TODO(enne): the renderer should figure this out on its own. | 833 // TODO(enne): the renderer should figure this out on its own. |
817 bool contents_swizzled = !PlatformColor::SameComponentOrder(GL_RGBA); | 834 bool contents_swizzled = !PlatformColor::SameComponentOrder(GL_RGBA); |
818 | 835 |
819 RenderPass::Id id(1, 1); | 836 RenderPass::Id id(1, 1); |
820 gfx::Transform transform_to_root; | 837 gfx::Transform transform_to_root; |
821 scoped_ptr<RenderPass> pass = | 838 scoped_ptr<RenderPass> pass = |
822 CreateTestRenderPass(id, viewport, transform_to_root); | 839 CreateTestRenderPass(id, viewport, transform_to_root); |
823 | 840 |
824 // As scaling up the blue checkerboards will cause sampling on the GPU, | 841 // As scaling up the blue checkerboards will cause sampling on the GPU, |
825 // a few extra "cleanup rects" need to be added to clobber the blending | 842 // a few extra "cleanup rects" need to be added to clobber the blending |
(...skipping 18 matching lines...) Expand all Loading... |
844 | 861 |
845 scoped_ptr<PictureDrawQuad> green_quad1 = PictureDrawQuad::Create(); | 862 scoped_ptr<PictureDrawQuad> green_quad1 = PictureDrawQuad::Create(); |
846 green_quad1->SetNew(top_right_green_shared_quad_state.get(), | 863 green_quad1->SetNew(top_right_green_shared_quad_state.get(), |
847 green_rect1, | 864 green_rect1, |
848 gfx::Rect(), | 865 gfx::Rect(), |
849 gfx::RectF(green_rect1.size()), | 866 gfx::RectF(green_rect1.size()), |
850 green_rect1.size(), | 867 green_rect1.size(), |
851 contents_swizzled, | 868 contents_swizzled, |
852 green_rect1, | 869 green_rect1, |
853 1.f, | 870 1.f, |
| 871 use_skia_gpu_backend, |
854 green_pile); | 872 green_pile); |
855 pass->quad_list.push_back(green_quad1.PassAs<DrawQuad>()); | 873 pass->quad_list.push_back(green_quad1.PassAs<DrawQuad>()); |
856 | 874 |
857 scoped_ptr<PictureDrawQuad> green_quad2 = PictureDrawQuad::Create(); | 875 scoped_ptr<PictureDrawQuad> green_quad2 = PictureDrawQuad::Create(); |
858 green_quad2->SetNew(top_right_green_shared_quad_state.get(), | 876 green_quad2->SetNew(top_right_green_shared_quad_state.get(), |
859 green_rect2, | 877 green_rect2, |
860 gfx::Rect(), | 878 gfx::Rect(), |
861 gfx::RectF(green_rect2.size()), | 879 gfx::RectF(green_rect2.size()), |
862 green_rect2.size(), | 880 green_rect2.size(), |
863 contents_swizzled, | 881 contents_swizzled, |
864 green_rect2, | 882 green_rect2, |
865 1.f, | 883 1.f, |
| 884 use_skia_gpu_backend, |
866 green_pile); | 885 green_pile); |
867 pass->quad_list.push_back(green_quad2.PassAs<DrawQuad>()); | 886 pass->quad_list.push_back(green_quad2.PassAs<DrawQuad>()); |
868 | 887 |
869 // Add a green clipped checkerboard in the bottom right to help test | 888 // Add a green clipped checkerboard in the bottom right to help test |
870 // interleaving picture quad content and solid color content. | 889 // interleaving picture quad content and solid color content. |
871 gfx::Rect bottom_right_rect( | 890 gfx::Rect bottom_right_rect( |
872 gfx::Point(viewport.width() / 2, viewport.height() / 2), | 891 gfx::Point(viewport.width() / 2, viewport.height() / 2), |
873 gfx::Size(viewport.width() / 2, viewport.height() / 2)); | 892 gfx::Size(viewport.width() / 2, viewport.height() / 2)); |
874 scoped_ptr<SharedQuadState> bottom_right_green_shared_state = | 893 scoped_ptr<SharedQuadState> bottom_right_green_shared_state = |
875 CreateTestSharedQuadStateClipped( | 894 CreateTestSharedQuadStateClipped( |
(...skipping 16 matching lines...) Expand all Loading... |
892 union_layer_rect.Union(blue_layer_rect2); | 911 union_layer_rect.Union(blue_layer_rect2); |
893 | 912 |
894 // Because scaling up will cause sampling outside the rects, add one extra | 913 // Because scaling up will cause sampling outside the rects, add one extra |
895 // pixel of buffer at the final content scale. | 914 // pixel of buffer at the final content scale. |
896 float inset = -1.f / contents_scale; | 915 float inset = -1.f / contents_scale; |
897 blue_layer_rect1.Inset(inset, inset, inset, inset); | 916 blue_layer_rect1.Inset(inset, inset, inset, inset); |
898 blue_layer_rect2.Inset(inset, inset, inset, inset); | 917 blue_layer_rect2.Inset(inset, inset, inset, inset); |
899 | 918 |
900 scoped_refptr<FakePicturePileImpl> pile = | 919 scoped_refptr<FakePicturePileImpl> pile = |
901 FakePicturePileImpl::CreateFilledPile(pile_tile_size, layer_rect.size()); | 920 FakePicturePileImpl::CreateFilledPile(pile_tile_size, layer_rect.size()); |
902 pile->add_draw_rect_with_paint(layer_rect, red_paint); | 921 |
903 SkPaint transparent_paint; | 922 Region outside(layer_rect); |
904 transparent_paint.setXfermodeMode(SkXfermode::kClear_Mode); | 923 outside.Subtract(gfx::ToEnclosingRect(union_layer_rect)); |
905 pile->add_draw_rect_with_paint(union_layer_rect, transparent_paint); | 924 for (Region::Iterator iter(outside); iter.has_rect(); iter.next()) { |
| 925 pile->add_draw_rect_with_paint(iter.rect(), red_paint); |
| 926 } |
| 927 |
906 SkPaint blue_paint; | 928 SkPaint blue_paint; |
907 blue_paint.setColor(SK_ColorBLUE); | 929 blue_paint.setColor(SK_ColorBLUE); |
908 pile->add_draw_rect_with_paint(blue_layer_rect1, blue_paint); | 930 pile->add_draw_rect_with_paint(blue_layer_rect1, blue_paint); |
909 pile->add_draw_rect_with_paint(blue_layer_rect2, blue_paint); | 931 pile->add_draw_rect_with_paint(blue_layer_rect2, blue_paint); |
910 pile->RerecordPile(); | 932 pile->RerecordPile(); |
911 | 933 |
912 gfx::Rect content_rect( | 934 gfx::Rect content_rect( |
913 gfx::ScaleToEnclosingRect(layer_rect, contents_scale)); | 935 gfx::ScaleToEnclosingRect(layer_rect, contents_scale)); |
914 gfx::Rect content_union_rect( | 936 gfx::Rect content_union_rect( |
915 gfx::ToEnclosingRect(gfx::ScaleRect(union_layer_rect, contents_scale))); | 937 gfx::ToEnclosingRect(gfx::ScaleRect(union_layer_rect, contents_scale))); |
916 | 938 |
917 // At a scale of 4x the rectangles with a width of 2.5 will take up 10 pixels, | 939 // At a scale of 4x the rectangles with a width of 2.5 will take up 10 pixels, |
918 // so scale an additional 10x to make them 100x100. | 940 // so scale an additional 10x to make them 100x100. |
919 gfx::Transform content_to_target_transform; | 941 gfx::Transform content_to_target_transform; |
920 content_to_target_transform.Scale(10.0, 10.0); | 942 content_to_target_transform.Scale(10.0, 10.0); |
921 gfx::Rect quad_content_rect(gfx::Size(20, 20)); | 943 gfx::Rect quad_content_rect(gfx::Size(20, 20)); |
922 scoped_ptr<SharedQuadState> blue_shared_state = | 944 scoped_ptr<SharedQuadState> blue_shared_state = |
923 CreateTestSharedQuadState(content_to_target_transform, quad_content_rect); | 945 CreateTestSharedQuadState(content_to_target_transform, quad_content_rect); |
924 | 946 |
925 scoped_ptr<PictureDrawQuad> blue_quad = PictureDrawQuad::Create(); | 947 scoped_ptr<PictureDrawQuad> blue_quad = PictureDrawQuad::Create(); |
926 blue_quad->SetNew(blue_shared_state.get(), | 948 blue_quad->SetNew(blue_shared_state.get(), |
927 quad_content_rect, | 949 quad_content_rect, |
928 gfx::Rect(), | 950 gfx::Rect(), |
929 quad_content_rect, | 951 quad_content_rect, |
930 content_union_rect.size(), | 952 content_union_rect.size(), |
931 contents_swizzled, | 953 contents_swizzled, |
932 content_union_rect, | 954 content_union_rect, |
933 contents_scale, | 955 contents_scale, |
| 956 use_skia_gpu_backend, |
934 pile); | 957 pile); |
935 pass->quad_list.push_back(blue_quad.PassAs<DrawQuad>()); | 958 pass->quad_list.push_back(blue_quad.PassAs<DrawQuad>()); |
936 | 959 |
937 // Fill left half of viewport with green. | 960 // Fill left half of viewport with green. |
938 gfx::Transform half_green_content_to_target_transform; | 961 gfx::Transform half_green_content_to_target_transform; |
939 gfx::Rect half_green_rect(gfx::Size(viewport.width() / 2, viewport.height())); | 962 gfx::Rect half_green_rect(gfx::Size(viewport.width() / 2, viewport.height())); |
940 scoped_ptr<SharedQuadState> half_green_shared_state = | 963 scoped_ptr<SharedQuadState> half_green_shared_state = |
941 CreateTestSharedQuadState(half_green_content_to_target_transform, | 964 CreateTestSharedQuadState(half_green_content_to_target_transform, |
942 half_green_rect); | 965 half_green_rect); |
943 scoped_ptr<SolidColorDrawQuad> half_color_quad = SolidColorDrawQuad::Create(); | 966 scoped_ptr<SolidColorDrawQuad> half_color_quad = SolidColorDrawQuad::Create(); |
944 half_color_quad->SetNew( | 967 half_color_quad->SetNew( |
945 half_green_shared_state.get(), half_green_rect, SK_ColorGREEN, false); | 968 half_green_shared_state.get(), half_green_rect, SK_ColorGREEN, false); |
946 pass->quad_list.push_back(half_color_quad.PassAs<DrawQuad>()); | 969 pass->quad_list.push_back(half_color_quad.PassAs<DrawQuad>()); |
947 | 970 |
948 RenderPassList pass_list; | 971 RenderPassList pass_list; |
949 pass_list.push_back(pass.Pass()); | 972 pass_list.push_back(pass.Pass()); |
950 | 973 |
951 EXPECT_TRUE(this->RunPixelTest( | 974 EXPECT_TRUE(this->RunPixelTest( |
952 &pass_list, | 975 &pass_list, |
953 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), | 976 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
954 ExactPixelComparator(true))); | 977 ExactPixelComparator(true))); |
955 } | 978 } |
956 #endif // !defined(OS_ANDROID) | 979 #endif // !defined(OS_ANDROID) |
957 | 980 |
958 } // namespace | 981 } // namespace |
959 } // namespace cc | 982 } // namespace cc |
OLD | NEW |