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