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/message_loop.h" | 5 #include "base/message_loop/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/quads/texture_draw_quad.h" | 10 #include "cc/quads/texture_draw_quad.h" |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 false); // nearest_neighbor | 156 false); // nearest_neighbor |
157 } | 157 } |
158 | 158 |
159 typedef ::testing::Types<GLRenderer, | 159 typedef ::testing::Types<GLRenderer, |
160 SoftwareRenderer, | 160 SoftwareRenderer, |
161 GLRendererWithExpandedViewport, | 161 GLRendererWithExpandedViewport, |
162 SoftwareRendererWithExpandedViewport> RendererTypes; | 162 SoftwareRendererWithExpandedViewport> RendererTypes; |
163 TYPED_TEST_CASE(RendererPixelTest, RendererTypes); | 163 TYPED_TEST_CASE(RendererPixelTest, RendererTypes); |
164 | 164 |
165 template <typename RendererType> | 165 template <typename RendererType> |
| 166 class SoftwareRendererPixelTest : public RendererPixelTest<RendererType> {}; |
| 167 |
| 168 typedef ::testing::Types<SoftwareRenderer, SoftwareRendererWithExpandedViewport> |
| 169 SoftwareRendererTypes; |
| 170 TYPED_TEST_CASE(SoftwareRendererPixelTest, SoftwareRendererTypes); |
| 171 |
| 172 template <typename RendererType> |
166 class FuzzyForSoftwareOnlyPixelComparator : public PixelComparator { | 173 class FuzzyForSoftwareOnlyPixelComparator : public PixelComparator { |
167 public: | 174 public: |
168 explicit FuzzyForSoftwareOnlyPixelComparator(bool discard_alpha) | 175 explicit FuzzyForSoftwareOnlyPixelComparator(bool discard_alpha) |
169 : fuzzy_(discard_alpha), exact_(discard_alpha) {} | 176 : fuzzy_(discard_alpha), exact_(discard_alpha) {} |
170 | 177 |
171 bool Compare(const SkBitmap& actual_bmp, | 178 bool Compare(const SkBitmap& actual_bmp, |
172 const SkBitmap& expected_bmp) const override; | 179 const SkBitmap& expected_bmp) const override; |
173 | 180 |
174 private: | 181 private: |
175 FuzzyPixelOffByOneComparator fuzzy_; | 182 FuzzyPixelOffByOneComparator fuzzy_; |
(...skipping 1644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1820 | 1827 |
1821 RenderPassList pass_list; | 1828 RenderPassList pass_list; |
1822 pass_list.push_back(pass.Pass()); | 1829 pass_list.push_back(pass.Pass()); |
1823 | 1830 |
1824 EXPECT_TRUE(this->RunPixelTest( | 1831 EXPECT_TRUE(this->RunPixelTest( |
1825 &pass_list, | 1832 &pass_list, |
1826 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")), | 1833 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")), |
1827 FuzzyPixelOffByOneComparator(true))); | 1834 FuzzyPixelOffByOneComparator(true))); |
1828 } | 1835 } |
1829 | 1836 |
1830 TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) { | 1837 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) { |
1831 gfx::Size pile_tile_size(1000, 1000); | 1838 gfx::Size pile_tile_size(1000, 1000); |
1832 gfx::Rect viewport(this->device_viewport_size_); | 1839 gfx::Rect viewport(this->device_viewport_size_); |
1833 // TODO(enne): the renderer should figure this out on its own. | 1840 // TODO(enne): the renderer should figure this out on its own. |
1834 ResourceFormat texture_format = RGBA_8888; | 1841 ResourceFormat texture_format = RGBA_8888; |
1835 bool nearest_neighbor = false; | 1842 bool nearest_neighbor = false; |
1836 | 1843 |
1837 RenderPassId id(1, 1); | 1844 RenderPassId id(1, 1); |
1838 gfx::Transform transform_to_root; | 1845 gfx::Transform transform_to_root; |
1839 scoped_ptr<RenderPass> pass = | 1846 scoped_ptr<RenderPass> pass = |
1840 CreateTestRenderPass(id, viewport, transform_to_root); | 1847 CreateTestRenderPass(id, viewport, transform_to_root); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1900 RenderPassList pass_list; | 1907 RenderPassList pass_list; |
1901 pass_list.push_back(pass.Pass()); | 1908 pass_list.push_back(pass.Pass()); |
1902 | 1909 |
1903 EXPECT_TRUE(this->RunPixelTest( | 1910 EXPECT_TRUE(this->RunPixelTest( |
1904 &pass_list, | 1911 &pass_list, |
1905 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), | 1912 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), |
1906 ExactPixelComparator(true))); | 1913 ExactPixelComparator(true))); |
1907 } | 1914 } |
1908 | 1915 |
1909 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. | 1916 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. |
1910 TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) { | 1917 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) { |
1911 gfx::Size pile_tile_size(1000, 1000); | 1918 gfx::Size pile_tile_size(1000, 1000); |
1912 gfx::Rect viewport(this->device_viewport_size_); | 1919 gfx::Rect viewport(this->device_viewport_size_); |
1913 ResourceFormat texture_format = RGBA_8888; | 1920 ResourceFormat texture_format = RGBA_8888; |
1914 bool nearest_neighbor = false; | 1921 bool nearest_neighbor = false; |
1915 | 1922 |
1916 RenderPassId id(1, 1); | 1923 RenderPassId id(1, 1); |
1917 gfx::Transform transform_to_root; | 1924 gfx::Transform transform_to_root; |
1918 scoped_ptr<RenderPass> pass = | 1925 scoped_ptr<RenderPass> pass = |
1919 CreateTestRenderPass(id, viewport, transform_to_root); | 1926 CreateTestRenderPass(id, viewport, transform_to_root); |
1920 | 1927 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1977 return true; | 1984 return true; |
1978 } | 1985 } |
1979 | 1986 |
1980 template<> | 1987 template<> |
1981 bool IsSoftwareRenderer<SoftwareRendererWithExpandedViewport>() { | 1988 bool IsSoftwareRenderer<SoftwareRendererWithExpandedViewport>() { |
1982 return true; | 1989 return true; |
1983 } | 1990 } |
1984 | 1991 |
1985 // If we disable image filtering, then a 2x2 bitmap should appear as four | 1992 // If we disable image filtering, then a 2x2 bitmap should appear as four |
1986 // huge sharp squares. | 1993 // huge sharp squares. |
1987 TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) { | 1994 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadDisableImageFiltering) { |
1988 // We only care about this in software mode since bilinear filtering is | 1995 // We only care about this in software mode since bilinear filtering is |
1989 // cheap in hardware. | 1996 // cheap in hardware. |
1990 if (!IsSoftwareRenderer<TypeParam>()) | 1997 if (!IsSoftwareRenderer<TypeParam>()) |
1991 return; | 1998 return; |
1992 | 1999 |
1993 gfx::Size pile_tile_size(1000, 1000); | 2000 gfx::Size pile_tile_size(1000, 1000); |
1994 gfx::Rect viewport(this->device_viewport_size_); | 2001 gfx::Rect viewport(this->device_viewport_size_); |
1995 ResourceFormat texture_format = RGBA_8888; | 2002 ResourceFormat texture_format = RGBA_8888; |
1996 bool nearest_neighbor = false; | 2003 bool nearest_neighbor = false; |
1997 | 2004 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2034 | 2041 |
2035 this->disable_picture_quad_image_filtering_ = true; | 2042 this->disable_picture_quad_image_filtering_ = true; |
2036 | 2043 |
2037 EXPECT_TRUE(this->RunPixelTest( | 2044 EXPECT_TRUE(this->RunPixelTest( |
2038 &pass_list, | 2045 &pass_list, |
2039 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), | 2046 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
2040 ExactPixelComparator(true))); | 2047 ExactPixelComparator(true))); |
2041 } | 2048 } |
2042 | 2049 |
2043 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. | 2050 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. |
2044 TYPED_TEST(RendererPixelTest, PictureDrawQuadNearestNeighbor) { | 2051 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) { |
2045 gfx::Size pile_tile_size(1000, 1000); | 2052 gfx::Size pile_tile_size(1000, 1000); |
2046 gfx::Rect viewport(this->device_viewport_size_); | 2053 gfx::Rect viewport(this->device_viewport_size_); |
2047 ResourceFormat texture_format = RGBA_8888; | 2054 ResourceFormat texture_format = RGBA_8888; |
2048 bool nearest_neighbor = true; | 2055 bool nearest_neighbor = true; |
2049 | 2056 |
2050 RenderPassId id(1, 1); | 2057 RenderPassId id(1, 1); |
2051 gfx::Transform transform_to_root; | 2058 gfx::Transform transform_to_root; |
2052 scoped_ptr<RenderPass> pass = | 2059 scoped_ptr<RenderPass> pass = |
2053 CreateTestRenderPass(id, viewport, transform_to_root); | 2060 CreateTestRenderPass(id, viewport, transform_to_root); |
2054 | 2061 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2141 | 2148 |
2142 RenderPassList pass_list; | 2149 RenderPassList pass_list; |
2143 pass_list.push_back(pass.Pass()); | 2150 pass_list.push_back(pass.Pass()); |
2144 | 2151 |
2145 EXPECT_TRUE(this->RunPixelTest( | 2152 EXPECT_TRUE(this->RunPixelTest( |
2146 &pass_list, | 2153 &pass_list, |
2147 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), | 2154 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
2148 ExactPixelComparator(true))); | 2155 ExactPixelComparator(true))); |
2149 } | 2156 } |
2150 | 2157 |
2151 TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { | 2158 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) { |
2152 gfx::Size pile_tile_size(1000, 1000); | 2159 gfx::Size pile_tile_size(1000, 1000); |
2153 gfx::Rect viewport(this->device_viewport_size_); | 2160 gfx::Rect viewport(this->device_viewport_size_); |
2154 // TODO(enne): the renderer should figure this out on its own. | 2161 // TODO(enne): the renderer should figure this out on its own. |
2155 ResourceFormat texture_format = RGBA_8888; | 2162 ResourceFormat texture_format = RGBA_8888; |
2156 bool nearest_neighbor = false; | 2163 bool nearest_neighbor = false; |
2157 | 2164 |
2158 RenderPassId id(1, 1); | 2165 RenderPassId id(1, 1); |
2159 gfx::Transform transform_to_root; | 2166 gfx::Transform transform_to_root; |
2160 scoped_ptr<RenderPass> pass = | 2167 scoped_ptr<RenderPass> pass = |
2161 CreateTestRenderPass(id, viewport, transform_to_root); | 2168 CreateTestRenderPass(id, viewport, transform_to_root); |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2442 this->device_viewport_size_.width() / 2, | 2449 this->device_viewport_size_.width() / 2, |
2443 this->device_viewport_size_.height() / 2); | 2450 this->device_viewport_size_.height() / 2); |
2444 EXPECT_TRUE(this->RunPixelTestWithReadbackTargetAndArea( | 2451 EXPECT_TRUE(this->RunPixelTestWithReadbackTargetAndArea( |
2445 &pass_list, | 2452 &pass_list, |
2446 pass_list.front(), | 2453 pass_list.front(), |
2447 base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png")), | 2454 base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png")), |
2448 ExactPixelComparator(true), | 2455 ExactPixelComparator(true), |
2449 &capture_rect)); | 2456 &capture_rect)); |
2450 } | 2457 } |
2451 | 2458 |
2452 TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) { | |
2453 gfx::Size pile_tile_size(1000, 1000); | |
2454 gfx::Rect viewport(this->device_viewport_size_); | |
2455 ResourceFormat texture_format = RGBA_4444; | |
2456 bool nearest_neighbor = false; | |
2457 | |
2458 RenderPassId id(1, 1); | |
2459 gfx::Transform transform_to_root; | |
2460 scoped_ptr<RenderPass> pass = | |
2461 CreateTestRenderPass(id, viewport, transform_to_root); | |
2462 | |
2463 // One viewport-filling blue quad | |
2464 scoped_ptr<FakePicturePile> blue_recording = | |
2465 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size()); | |
2466 SkPaint blue_paint; | |
2467 blue_paint.setColor(SK_ColorBLUE); | |
2468 blue_recording->add_draw_rect_with_paint(viewport, blue_paint); | |
2469 blue_recording->RerecordPile(); | |
2470 scoped_refptr<FakePicturePileImpl> blue_pile = | |
2471 FakePicturePileImpl::CreateFromPile(blue_recording.get(), nullptr); | |
2472 | |
2473 gfx::Transform blue_content_to_target_transform; | |
2474 SharedQuadState* blue_shared_state = CreateTestSharedQuadState( | |
2475 blue_content_to_target_transform, viewport, pass.get()); | |
2476 | |
2477 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | |
2478 blue_quad->SetNew(blue_shared_state, viewport, gfx::Rect(), viewport, | |
2479 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(), | |
2480 nearest_neighbor, texture_format, viewport, 1.f, | |
2481 blue_pile.get()); | |
2482 | |
2483 RenderPassList pass_list; | |
2484 pass_list.push_back(pass.Pass()); | |
2485 | |
2486 EXPECT_TRUE(this->RunPixelTest(&pass_list, | |
2487 base::FilePath(FILE_PATH_LITERAL("blue.png")), | |
2488 ExactPixelComparator(true))); | |
2489 } | |
2490 | |
2491 TYPED_TEST(RendererPixelTest, WrapModeRepeat) { | 2459 TYPED_TEST(RendererPixelTest, WrapModeRepeat) { |
2492 gfx::Rect rect(this->device_viewport_size_); | 2460 gfx::Rect rect(this->device_viewport_size_); |
2493 | 2461 |
2494 RenderPassId id(1, 1); | 2462 RenderPassId id(1, 1); |
2495 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); | 2463 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
2496 | 2464 |
2497 SharedQuadState* shared_state = | 2465 SharedQuadState* shared_state = |
2498 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); | 2466 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); |
2499 | 2467 |
2500 gfx::Rect texture_rect(4, 4); | 2468 gfx::Rect texture_rect(4, 4); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2548 EXPECT_TRUE(this->RunPixelTest( | 2516 EXPECT_TRUE(this->RunPixelTest( |
2549 &pass_list, | 2517 &pass_list, |
2550 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), | 2518 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), |
2551 FuzzyPixelOffByOneComparator(true))); | 2519 FuzzyPixelOffByOneComparator(true))); |
2552 } | 2520 } |
2553 | 2521 |
2554 #endif // !defined(OS_ANDROID) | 2522 #endif // !defined(OS_ANDROID) |
2555 | 2523 |
2556 } // namespace | 2524 } // namespace |
2557 } // namespace cc | 2525 } // namespace cc |
OLD | NEW |