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

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

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