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

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

Issue 951673002: Revert "Pull chromium at 2c3ffb2355a27c32f45e508ef861416b820c823b" (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/output/program_binding.h ('k') | cc/output/shader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 bool premultiplied_alpha, 116 bool premultiplied_alpha,
117 const SharedQuadState* shared_state, 117 const SharedQuadState* shared_state,
118 ResourceProvider* resource_provider, 118 ResourceProvider* resource_provider,
119 RenderPass* render_pass) { 119 RenderPass* render_pass) {
120 SkPMColor pixel_color = premultiplied_alpha ? 120 SkPMColor pixel_color = premultiplied_alpha ?
121 SkPreMultiplyColor(texel_color) : 121 SkPreMultiplyColor(texel_color) :
122 SkPackARGB32NoCheck(SkColorGetA(texel_color), 122 SkPackARGB32NoCheck(SkColorGetA(texel_color),
123 SkColorGetR(texel_color), 123 SkColorGetR(texel_color),
124 SkColorGetG(texel_color), 124 SkColorGetG(texel_color),
125 SkColorGetB(texel_color)); 125 SkColorGetB(texel_color));
126 size_t num_pixels = static_cast<size_t>(rect.width()) * rect.height(); 126 std::vector<uint32_t> pixels(rect.size().GetArea(), pixel_color);
127 std::vector<uint32_t> pixels(num_pixels, pixel_color);
128 127
129 ResourceProvider::ResourceId resource = resource_provider->CreateResource( 128 ResourceProvider::ResourceId resource =
130 rect.size(), GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, 129 resource_provider->CreateResource(rect.size(),
131 RGBA_8888); 130 GL_CLAMP_TO_EDGE,
132 resource_provider->CopyToResource( 131 ResourceProvider::TextureHintImmutable,
133 resource, reinterpret_cast<uint8_t*>(&pixels.front()), rect.size()); 132 RGBA_8888);
133 resource_provider->SetPixels(
134 resource,
135 reinterpret_cast<uint8_t*>(&pixels.front()),
136 rect,
137 rect,
138 gfx::Vector2d());
134 139
135 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 140 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
136 141
137 TextureDrawQuad* quad = 142 TextureDrawQuad* quad =
138 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 143 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
139 quad->SetNew(shared_state, 144 quad->SetNew(shared_state,
140 rect, 145 rect,
141 gfx::Rect(), 146 gfx::Rect(),
142 rect, 147 rect,
143 resource, 148 resource,
144 premultiplied_alpha, 149 premultiplied_alpha,
145 gfx::PointF(0.0f, 0.0f), // uv_top_left 150 gfx::PointF(0.0f, 0.0f), // uv_top_left
146 gfx::PointF(1.0f, 1.0f), // uv_bottom_right 151 gfx::PointF(1.0f, 1.0f), // uv_bottom_right
147 background_color, 152 background_color,
148 vertex_opacity, 153 vertex_opacity,
149 false, // flipped 154 false, // flipped
150 false); // nearest_neighbor 155 false); // nearest_neighbor
151 } 156 }
152 157
153 typedef ::testing::Types<GLRenderer, 158 typedef ::testing::Types<GLRenderer,
154 SoftwareRenderer, 159 SoftwareRenderer,
155 GLRendererWithExpandedViewport, 160 GLRendererWithExpandedViewport,
156 SoftwareRendererWithExpandedViewport> RendererTypes; 161 SoftwareRendererWithExpandedViewport> RendererTypes;
157 TYPED_TEST_CASE(RendererPixelTest, RendererTypes); 162 TYPED_TEST_CASE(RendererPixelTest, RendererTypes);
158 163
159 template <typename RendererType> 164 template <typename RendererType>
160 class SoftwareRendererPixelTest : public RendererPixelTest<RendererType> {};
161
162 typedef ::testing::Types<SoftwareRenderer, SoftwareRendererWithExpandedViewport>
163 SoftwareRendererTypes;
164 TYPED_TEST_CASE(SoftwareRendererPixelTest, SoftwareRendererTypes);
165
166 template <typename RendererType>
167 class FuzzyForSoftwareOnlyPixelComparator : public PixelComparator { 165 class FuzzyForSoftwareOnlyPixelComparator : public PixelComparator {
168 public: 166 public:
169 explicit FuzzyForSoftwareOnlyPixelComparator(bool discard_alpha) 167 explicit FuzzyForSoftwareOnlyPixelComparator(bool discard_alpha)
170 : fuzzy_(discard_alpha), exact_(discard_alpha) {} 168 : fuzzy_(discard_alpha), exact_(discard_alpha) {}
171 169
172 bool Compare(const SkBitmap& actual_bmp, 170 bool Compare(const SkBitmap& actual_bmp,
173 const SkBitmap& expected_bmp) const override; 171 const SkBitmap& expected_bmp) const override;
174 172
175 private: 173 private:
176 FuzzyPixelOffByOneComparator fuzzy_; 174 FuzzyPixelOffByOneComparator fuzzy_;
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 while (!rect.IsEmpty()) { 865 while (!rect.IsEmpty()) {
868 rect.Inset(6, 6, 4, 4); 866 rect.Inset(6, 6, 4, 4);
869 canvas.drawRect( 867 canvas.drawRect(
870 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()), 868 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()),
871 paint); 869 paint);
872 rect.Inset(6, 6, 4, 4); 870 rect.Inset(6, 6, 4, 4);
873 } 871 }
874 872
875 ResourceProvider::ResourceId mask_resource_id = 873 ResourceProvider::ResourceId mask_resource_id =
876 this->resource_provider_->CreateResource( 874 this->resource_provider_->CreateResource(
877 mask_rect.size(), GL_CLAMP_TO_EDGE, 875 mask_rect.size(),
878 ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 876 GL_CLAMP_TO_EDGE,
877 ResourceProvider::TextureHintImmutable,
878 RGBA_8888);
879 { 879 {
880 SkAutoLockPixels lock(bitmap); 880 SkAutoLockPixels lock(bitmap);
881 this->resource_provider_->CopyToResource( 881 this->resource_provider_->SetPixels(
882 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()), 882 mask_resource_id,
883 mask_rect.size()); 883 reinterpret_cast<uint8_t*>(bitmap.getPixels()),
884 mask_rect,
885 mask_rect,
886 gfx::Vector2d());
884 } 887 }
885 888
886 // This RenderPassDrawQuad does not include the full |viewport_rect| which is 889 // This RenderPassDrawQuad does not include the full |viewport_rect| which is
887 // the size of the child render pass. 890 // the size of the child render pass.
888 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100); 891 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100);
889 EXPECT_NE(sub_rect.x(), child_pass->output_rect.x()); 892 EXPECT_NE(sub_rect.x(), child_pass->output_rect.x());
890 EXPECT_NE(sub_rect.y(), child_pass->output_rect.y()); 893 EXPECT_NE(sub_rect.y(), child_pass->output_rect.y());
891 EXPECT_NE(sub_rect.right(), child_pass->output_rect.right()); 894 EXPECT_NE(sub_rect.right(), child_pass->output_rect.right());
892 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); 895 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom());
893 896
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 1372
1370 RenderPassList pass_list; 1373 RenderPassList pass_list;
1371 pass_list.push_back(pass.Pass()); 1374 pass_list.push_back(pass.Pass());
1372 1375
1373 EXPECT_TRUE(this->RunPixelTest( 1376 EXPECT_TRUE(this->RunPixelTest(
1374 &pass_list, 1377 &pass_list,
1375 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")), 1378 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")),
1376 FuzzyPixelOffByOneComparator(true))); 1379 FuzzyPixelOffByOneComparator(true)));
1377 } 1380 }
1378 1381
1379 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) { 1382 TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) {
1380 gfx::Size pile_tile_size(1000, 1000); 1383 gfx::Size pile_tile_size(1000, 1000);
1381 gfx::Rect viewport(this->device_viewport_size_); 1384 gfx::Rect viewport(this->device_viewport_size_);
1382 // TODO(enne): the renderer should figure this out on its own. 1385 // TODO(enne): the renderer should figure this out on its own.
1383 ResourceFormat texture_format = RGBA_8888; 1386 ResourceFormat texture_format = RGBA_8888;
1384 bool nearest_neighbor = false; 1387 bool nearest_neighbor = false;
1385 1388
1386 RenderPassId id(1, 1); 1389 RenderPassId id(1, 1);
1387 gfx::Transform transform_to_root; 1390 gfx::Transform transform_to_root;
1388 scoped_ptr<RenderPass> pass = 1391 scoped_ptr<RenderPass> pass =
1389 CreateTestRenderPass(id, viewport, transform_to_root); 1392 CreateTestRenderPass(id, viewport, transform_to_root);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 RenderPassList pass_list; 1452 RenderPassList pass_list;
1450 pass_list.push_back(pass.Pass()); 1453 pass_list.push_back(pass.Pass());
1451 1454
1452 EXPECT_TRUE(this->RunPixelTest( 1455 EXPECT_TRUE(this->RunPixelTest(
1453 &pass_list, 1456 &pass_list,
1454 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), 1457 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")),
1455 ExactPixelComparator(true))); 1458 ExactPixelComparator(true)));
1456 } 1459 }
1457 1460
1458 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. 1461 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity.
1459 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) { 1462 TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) {
1460 gfx::Size pile_tile_size(1000, 1000); 1463 gfx::Size pile_tile_size(1000, 1000);
1461 gfx::Rect viewport(this->device_viewport_size_); 1464 gfx::Rect viewport(this->device_viewport_size_);
1462 ResourceFormat texture_format = RGBA_8888; 1465 ResourceFormat texture_format = RGBA_8888;
1463 bool nearest_neighbor = false; 1466 bool nearest_neighbor = false;
1464 1467
1465 RenderPassId id(1, 1); 1468 RenderPassId id(1, 1);
1466 gfx::Transform transform_to_root; 1469 gfx::Transform transform_to_root;
1467 scoped_ptr<RenderPass> pass = 1470 scoped_ptr<RenderPass> pass =
1468 CreateTestRenderPass(id, viewport, transform_to_root); 1471 CreateTestRenderPass(id, viewport, transform_to_root);
1469 1472
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1526 return true; 1529 return true;
1527 } 1530 }
1528 1531
1529 template<> 1532 template<>
1530 bool IsSoftwareRenderer<SoftwareRendererWithExpandedViewport>() { 1533 bool IsSoftwareRenderer<SoftwareRendererWithExpandedViewport>() {
1531 return true; 1534 return true;
1532 } 1535 }
1533 1536
1534 // If we disable image filtering, then a 2x2 bitmap should appear as four 1537 // If we disable image filtering, then a 2x2 bitmap should appear as four
1535 // huge sharp squares. 1538 // huge sharp squares.
1536 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadDisableImageFiltering) { 1539 TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) {
1537 // We only care about this in software mode since bilinear filtering is 1540 // We only care about this in software mode since bilinear filtering is
1538 // cheap in hardware. 1541 // cheap in hardware.
1539 if (!IsSoftwareRenderer<TypeParam>()) 1542 if (!IsSoftwareRenderer<TypeParam>())
1540 return; 1543 return;
1541 1544
1542 gfx::Size pile_tile_size(1000, 1000); 1545 gfx::Size pile_tile_size(1000, 1000);
1543 gfx::Rect viewport(this->device_viewport_size_); 1546 gfx::Rect viewport(this->device_viewport_size_);
1544 ResourceFormat texture_format = RGBA_8888; 1547 ResourceFormat texture_format = RGBA_8888;
1545 bool nearest_neighbor = false; 1548 bool nearest_neighbor = false;
1546 1549
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 1586
1584 this->disable_picture_quad_image_filtering_ = true; 1587 this->disable_picture_quad_image_filtering_ = true;
1585 1588
1586 EXPECT_TRUE(this->RunPixelTest( 1589 EXPECT_TRUE(this->RunPixelTest(
1587 &pass_list, 1590 &pass_list,
1588 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), 1591 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
1589 ExactPixelComparator(true))); 1592 ExactPixelComparator(true)));
1590 } 1593 }
1591 1594
1592 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. 1595 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad.
1593 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) { 1596 TYPED_TEST(RendererPixelTest, PictureDrawQuadNearestNeighbor) {
1594 gfx::Size pile_tile_size(1000, 1000); 1597 gfx::Size pile_tile_size(1000, 1000);
1595 gfx::Rect viewport(this->device_viewport_size_); 1598 gfx::Rect viewport(this->device_viewport_size_);
1596 ResourceFormat texture_format = RGBA_8888; 1599 ResourceFormat texture_format = RGBA_8888;
1597 bool nearest_neighbor = true; 1600 bool nearest_neighbor = true;
1598 1601
1599 RenderPassId id(1, 1); 1602 RenderPassId id(1, 1);
1600 gfx::Transform transform_to_root; 1603 gfx::Transform transform_to_root;
1601 scoped_ptr<RenderPass> pass = 1604 scoped_ptr<RenderPass> pass =
1602 CreateTestRenderPass(id, viewport, transform_to_root); 1605 CreateTestRenderPass(id, viewport, transform_to_root);
1603 1606
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 SkCanvas canvas(bitmap); 1655 SkCanvas canvas(bitmap);
1653 canvas.drawPoint(0, 0, SK_ColorGREEN); 1656 canvas.drawPoint(0, 0, SK_ColorGREEN);
1654 canvas.drawPoint(0, 1, SK_ColorBLUE); 1657 canvas.drawPoint(0, 1, SK_ColorBLUE);
1655 canvas.drawPoint(1, 0, SK_ColorBLUE); 1658 canvas.drawPoint(1, 0, SK_ColorBLUE);
1656 canvas.drawPoint(1, 1, SK_ColorGREEN); 1659 canvas.drawPoint(1, 1, SK_ColorGREEN);
1657 } 1660 }
1658 1661
1659 gfx::Size tile_size(2, 2); 1662 gfx::Size tile_size(2, 2);
1660 ResourceProvider::ResourceId resource = 1663 ResourceProvider::ResourceId resource =
1661 this->resource_provider_->CreateResource( 1664 this->resource_provider_->CreateResource(
1662 tile_size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, 1665 tile_size,
1666 GL_CLAMP_TO_EDGE,
1667 ResourceProvider::TextureHintImmutable,
1663 RGBA_8888); 1668 RGBA_8888);
1664 1669
1665 { 1670 {
1666 SkAutoLockPixels lock(bitmap); 1671 SkAutoLockPixels lock(bitmap);
1667 this->resource_provider_->CopyToResource( 1672 this->resource_provider_->SetPixels(
1668 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); 1673 resource,
1674 static_cast<uint8_t*>(bitmap.getPixels()),
1675 gfx::Rect(tile_size),
1676 gfx::Rect(tile_size),
1677 gfx::Vector2d());
1669 } 1678 }
1670 1679
1671 RenderPassId id(1, 1); 1680 RenderPassId id(1, 1);
1672 gfx::Transform transform_to_root; 1681 gfx::Transform transform_to_root;
1673 scoped_ptr<RenderPass> pass = 1682 scoped_ptr<RenderPass> pass =
1674 CreateTestRenderPass(id, viewport, transform_to_root); 1683 CreateTestRenderPass(id, viewport, transform_to_root);
1675 1684
1676 gfx::Transform content_to_target_transform; 1685 gfx::Transform content_to_target_transform;
1677 SharedQuadState* shared_state = CreateTestSharedQuadState( 1686 SharedQuadState* shared_state = CreateTestSharedQuadState(
1678 content_to_target_transform, viewport, pass.get()); 1687 content_to_target_transform, viewport, pass.get());
1679 1688
1680 TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>(); 1689 TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>();
1681 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, 1690 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource,
1682 gfx::Rect(tile_size), tile_size, swizzle_contents, 1691 gfx::Rect(tile_size), tile_size, swizzle_contents,
1683 nearest_neighbor); 1692 nearest_neighbor);
1684 1693
1685 RenderPassList pass_list; 1694 RenderPassList pass_list;
1686 pass_list.push_back(pass.Pass()); 1695 pass_list.push_back(pass.Pass());
1687 1696
1688 EXPECT_TRUE(this->RunPixelTest( 1697 EXPECT_TRUE(this->RunPixelTest(
1689 &pass_list, 1698 &pass_list,
1690 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), 1699 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
1691 ExactPixelComparator(true))); 1700 ExactPixelComparator(true)));
1692 } 1701 }
1693 1702
1694 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) { 1703 TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) {
1695 gfx::Size pile_tile_size(1000, 1000); 1704 gfx::Size pile_tile_size(1000, 1000);
1696 gfx::Rect viewport(this->device_viewport_size_); 1705 gfx::Rect viewport(this->device_viewport_size_);
1697 // TODO(enne): the renderer should figure this out on its own. 1706 // TODO(enne): the renderer should figure this out on its own.
1698 ResourceFormat texture_format = RGBA_8888; 1707 ResourceFormat texture_format = RGBA_8888;
1699 bool nearest_neighbor = false; 1708 bool nearest_neighbor = false;
1700 1709
1701 RenderPassId id(1, 1); 1710 RenderPassId id(1, 1);
1702 gfx::Transform transform_to_root; 1711 gfx::Transform transform_to_root;
1703 scoped_ptr<RenderPass> pass = 1712 scoped_ptr<RenderPass> pass =
1704 CreateTestRenderPass(id, viewport, transform_to_root); 1713 CreateTestRenderPass(id, viewport, transform_to_root);
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1985 this->device_viewport_size_.width() / 2, 1994 this->device_viewport_size_.width() / 2,
1986 this->device_viewport_size_.height() / 2); 1995 this->device_viewport_size_.height() / 2);
1987 EXPECT_TRUE(this->RunPixelTestWithReadbackTargetAndArea( 1996 EXPECT_TRUE(this->RunPixelTestWithReadbackTargetAndArea(
1988 &pass_list, 1997 &pass_list,
1989 pass_list.front(), 1998 pass_list.front(),
1990 base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png")), 1999 base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png")),
1991 ExactPixelComparator(true), 2000 ExactPixelComparator(true),
1992 &capture_rect)); 2001 &capture_rect));
1993 } 2002 }
1994 2003
2004 TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) {
2005 gfx::Size pile_tile_size(1000, 1000);
2006 gfx::Rect viewport(this->device_viewport_size_);
2007 ResourceFormat texture_format = RGBA_4444;
2008 bool nearest_neighbor = false;
2009
2010 RenderPassId id(1, 1);
2011 gfx::Transform transform_to_root;
2012 scoped_ptr<RenderPass> pass =
2013 CreateTestRenderPass(id, viewport, transform_to_root);
2014
2015 // One viewport-filling blue quad
2016 scoped_ptr<FakePicturePile> blue_recording =
2017 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size());
2018 SkPaint blue_paint;
2019 blue_paint.setColor(SK_ColorBLUE);
2020 blue_recording->add_draw_rect_with_paint(viewport, blue_paint);
2021 blue_recording->RerecordPile();
2022 scoped_refptr<FakePicturePileImpl> blue_pile =
2023 FakePicturePileImpl::CreateFromPile(blue_recording.get(), nullptr);
2024
2025 gfx::Transform blue_content_to_target_transform;
2026 SharedQuadState* blue_shared_state = CreateTestSharedQuadState(
2027 blue_content_to_target_transform, viewport, pass.get());
2028
2029 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
2030 blue_quad->SetNew(blue_shared_state, viewport, gfx::Rect(), viewport,
2031 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(),
2032 nearest_neighbor, texture_format, viewport, 1.f,
2033 blue_pile.get());
2034
2035 RenderPassList pass_list;
2036 pass_list.push_back(pass.Pass());
2037
2038 EXPECT_TRUE(this->RunPixelTest(&pass_list,
2039 base::FilePath(FILE_PATH_LITERAL("blue.png")),
2040 ExactPixelComparator(true)));
2041 }
2042
1995 TYPED_TEST(RendererPixelTest, WrapModeRepeat) { 2043 TYPED_TEST(RendererPixelTest, WrapModeRepeat) {
1996 gfx::Rect rect(this->device_viewport_size_); 2044 gfx::Rect rect(this->device_viewport_size_);
1997 2045
1998 RenderPassId id(1, 1); 2046 RenderPassId id(1, 1);
1999 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); 2047 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
2000 2048
2001 SharedQuadState* shared_state = 2049 SharedQuadState* shared_state =
2002 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); 2050 CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
2003 2051
2004 gfx::Size texture_size(4, 4); 2052 gfx::Rect texture_rect(4, 4);
2005 SkPMColor colors[4] = { 2053 SkPMColor colors[4] = {
2006 SkPreMultiplyColor(SkColorSetARGB(255, 0, 255, 0)), 2054 SkPreMultiplyColor(SkColorSetARGB(255, 0, 255, 0)),
2007 SkPreMultiplyColor(SkColorSetARGB(255, 0, 128, 0)), 2055 SkPreMultiplyColor(SkColorSetARGB(255, 0, 128, 0)),
2008 SkPreMultiplyColor(SkColorSetARGB(255, 0, 64, 0)), 2056 SkPreMultiplyColor(SkColorSetARGB(255, 0, 64, 0)),
2009 SkPreMultiplyColor(SkColorSetARGB(255, 0, 0, 0)), 2057 SkPreMultiplyColor(SkColorSetARGB(255, 0, 0, 0)),
2010 }; 2058 };
2011 uint32_t pixels[16] = { 2059 uint32_t pixels[16] = {
2012 colors[0], colors[0], colors[1], colors[1], 2060 colors[0], colors[0], colors[1], colors[1],
2013 colors[0], colors[0], colors[1], colors[1], 2061 colors[0], colors[0], colors[1], colors[1],
2014 colors[2], colors[2], colors[3], colors[3], 2062 colors[2], colors[2], colors[3], colors[3],
2015 colors[2], colors[2], colors[3], colors[3], 2063 colors[2], colors[2], colors[3], colors[3],
2016 }; 2064 };
2017 ResourceProvider::ResourceId resource = 2065 ResourceProvider::ResourceId resource =
2018 this->resource_provider_->CreateResource( 2066 this->resource_provider_->CreateResource(
2019 texture_size, GL_REPEAT, ResourceProvider::TEXTURE_HINT_IMMUTABLE, 2067 texture_rect.size(),
2068 GL_REPEAT,
2069 ResourceProvider::TextureHintImmutable,
2020 RGBA_8888); 2070 RGBA_8888);
2021 this->resource_provider_->CopyToResource( 2071 this->resource_provider_->SetPixels(
2022 resource, reinterpret_cast<uint8_t*>(pixels), texture_size); 2072 resource,
2073 reinterpret_cast<uint8_t*>(pixels),
2074 texture_rect,
2075 texture_rect,
2076 gfx::Vector2d());
2023 2077
2024 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 2078 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
2025 TextureDrawQuad* texture_quad = 2079 TextureDrawQuad* texture_quad =
2026 pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 2080 pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
2027 texture_quad->SetNew( 2081 texture_quad->SetNew(
2028 shared_state, gfx::Rect(this->device_viewport_size_), gfx::Rect(), 2082 shared_state,
2029 gfx::Rect(this->device_viewport_size_), resource, 2083 gfx::Rect(this->device_viewport_size_),
2084 gfx::Rect(),
2085 gfx::Rect(this->device_viewport_size_),
2086 resource,
2030 true, // premultiplied_alpha 2087 true, // premultiplied_alpha
2031 gfx::PointF(0.0f, 0.0f), // uv_top_left 2088 gfx::PointF(0.0f, 0.0f), // uv_top_left
2032 gfx::PointF( // uv_bottom_right 2089 gfx::PointF( // uv_bottom_right
2033 this->device_viewport_size_.width() / texture_size.width(), 2090 this->device_viewport_size_.width() / texture_rect.width(),
2034 this->device_viewport_size_.height() / texture_size.height()), 2091 this->device_viewport_size_.height() / texture_rect.height()),
2035 SK_ColorWHITE, vertex_opacity, 2092 SK_ColorWHITE,
2093 vertex_opacity,
2036 false, // flipped 2094 false, // flipped
2037 false); // nearest_neighbor 2095 false); // nearest_neighbor
2038 2096
2039 RenderPassList pass_list; 2097 RenderPassList pass_list;
2040 pass_list.push_back(pass.Pass()); 2098 pass_list.push_back(pass.Pass());
2041 2099
2042 EXPECT_TRUE(this->RunPixelTest( 2100 EXPECT_TRUE(this->RunPixelTest(
2043 &pass_list, 2101 &pass_list,
2044 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), 2102 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")),
2045 FuzzyPixelOffByOneComparator(true))); 2103 FuzzyPixelOffByOneComparator(true)));
2046 } 2104 }
2047 2105
2048 #endif // !defined(OS_ANDROID) 2106 #endif // !defined(OS_ANDROID)
2049 2107
2050 } // namespace 2108 } // namespace
2051 } // namespace cc 2109 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/program_binding.h ('k') | cc/output/shader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698