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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 namespace cc { | 32 namespace cc { |
33 namespace { | 33 namespace { |
34 | 34 |
35 #if !defined(OS_ANDROID) | 35 #if !defined(OS_ANDROID) |
36 std::unique_ptr<RenderPass> CreateTestRootRenderPass(RenderPassId id, | 36 std::unique_ptr<RenderPass> CreateTestRootRenderPass(RenderPassId id, |
37 const gfx::Rect& rect) { | 37 const gfx::Rect& rect) { |
38 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 38 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
39 const gfx::Rect output_rect = rect; | 39 const gfx::Rect output_rect = rect; |
40 const gfx::Rect damage_rect = rect; | 40 const gfx::Rect damage_rect = rect; |
41 const gfx::Transform transform_to_root_target; | 41 const gfx::Transform transform_to_root_target; |
42 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target); | 42 const FilterOperations filters; |
| 43 const FilterOperations background_filters; |
| 44 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target, filters, |
| 45 background_filters); |
43 return pass; | 46 return pass; |
44 } | 47 } |
45 | 48 |
46 std::unique_ptr<RenderPass> CreateTestRenderPass( | 49 std::unique_ptr<RenderPass> CreateTestRenderPass( |
47 RenderPassId id, | 50 RenderPassId id, |
48 const gfx::Rect& rect, | 51 const gfx::Rect& rect, |
49 const gfx::Transform& transform_to_root_target) { | 52 const gfx::Transform& transform_to_root_target, |
| 53 const FilterOperations& filters, |
| 54 const FilterOperations& background_filters) { |
50 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 55 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
51 const gfx::Rect output_rect = rect; | 56 const gfx::Rect output_rect = rect; |
52 const gfx::Rect damage_rect = rect; | 57 const gfx::Rect damage_rect = rect; |
53 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target); | 58 pass->SetNew(id, output_rect, damage_rect, transform_to_root_target, filters, |
| 59 background_filters); |
54 return pass; | 60 return pass; |
55 } | 61 } |
56 | 62 |
57 SharedQuadState* CreateTestSharedQuadState( | 63 SharedQuadState* CreateTestSharedQuadState( |
58 gfx::Transform quad_to_target_transform, | 64 gfx::Transform quad_to_target_transform, |
59 const gfx::Rect& rect, | 65 const gfx::Rect& rect, |
60 RenderPass* render_pass) { | 66 RenderPass* render_pass) { |
61 const gfx::Size layer_bounds = rect.size(); | 67 const gfx::Size layer_bounds = rect.size(); |
62 const gfx::Rect visible_layer_rect = rect; | 68 const gfx::Rect visible_layer_rect = rect; |
63 const gfx::Rect clip_rect = rect; | 69 const gfx::Rect clip_rect = rect; |
(...skipping 26 matching lines...) Expand all Loading... |
90 return shared_state; | 96 return shared_state; |
91 } | 97 } |
92 | 98 |
93 void CreateTestRenderPassDrawQuad(const SharedQuadState* shared_state, | 99 void CreateTestRenderPassDrawQuad(const SharedQuadState* shared_state, |
94 const gfx::Rect& rect, | 100 const gfx::Rect& rect, |
95 RenderPassId pass_id, | 101 RenderPassId pass_id, |
96 RenderPass* render_pass) { | 102 RenderPass* render_pass) { |
97 RenderPassDrawQuad* quad = | 103 RenderPassDrawQuad* quad = |
98 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 104 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
99 quad->SetNew(shared_state, rect, rect, pass_id, | 105 quad->SetNew(shared_state, rect, rect, pass_id, |
100 0, // mask_resource_id | 106 0, // mask_resource_id |
101 gfx::Vector2dF(), // mask_uv_scale | 107 gfx::Vector2dF(), // mask_uv_scale |
102 gfx::Size(), // mask_texture_size | 108 gfx::Size(), // mask_texture_size |
103 FilterOperations(), // foreground filters | 109 gfx::Vector2dF(), // filters scale |
104 gfx::Vector2dF(), // filters scale | 110 gfx::PointF()); // filter origin |
105 gfx::PointF(), // filter origin | |
106 FilterOperations()); // background filters | |
107 } | 111 } |
108 | 112 |
109 void CreateTestTwoColoredTextureDrawQuad(const gfx::Rect& rect, | 113 void CreateTestTwoColoredTextureDrawQuad(const gfx::Rect& rect, |
110 SkColor texel_color, | 114 SkColor texel_color, |
111 SkColor texel_stripe_color, | 115 SkColor texel_stripe_color, |
112 SkColor background_color, | 116 SkColor background_color, |
113 bool premultiplied_alpha, | 117 bool premultiplied_alpha, |
114 const SharedQuadState* shared_state, | 118 const SharedQuadState* shared_state, |
115 ResourceProvider* resource_provider, | 119 ResourceProvider* resource_provider, |
116 RenderPass* render_pass) { | 120 RenderPass* render_pass) { |
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 base::FilePath(FILE_PATH_LITERAL("green.png")), | 697 base::FilePath(FILE_PATH_LITERAL("green.png")), |
694 ExactPixelComparator(true))); | 698 ExactPixelComparator(true))); |
695 } | 699 } |
696 | 700 |
697 TYPED_TEST(RendererPixelTest, SimpleGreenRect_NonRootRenderPass) { | 701 TYPED_TEST(RendererPixelTest, SimpleGreenRect_NonRootRenderPass) { |
698 gfx::Rect rect(this->device_viewport_size_); | 702 gfx::Rect rect(this->device_viewport_size_); |
699 gfx::Rect small_rect(100, 100); | 703 gfx::Rect small_rect(100, 100); |
700 | 704 |
701 RenderPassId child_id(2, 1); | 705 RenderPassId child_id(2, 1); |
702 std::unique_ptr<RenderPass> child_pass = | 706 std::unique_ptr<RenderPass> child_pass = |
703 CreateTestRenderPass(child_id, small_rect, gfx::Transform()); | 707 CreateTestRenderPass(child_id, small_rect, gfx::Transform(), |
| 708 FilterOperations(), FilterOperations()); |
704 | 709 |
705 SharedQuadState* child_shared_state = | 710 SharedQuadState* child_shared_state = |
706 CreateTestSharedQuadState(gfx::Transform(), small_rect, child_pass.get()); | 711 CreateTestSharedQuadState(gfx::Transform(), small_rect, child_pass.get()); |
707 | 712 |
708 SolidColorDrawQuad* color_quad = | 713 SolidColorDrawQuad* color_quad = |
709 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 714 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
710 color_quad->SetNew(child_shared_state, rect, rect, SK_ColorGREEN, false); | 715 color_quad->SetNew(child_shared_state, rect, rect, SK_ColorGREEN, false); |
711 | 716 |
712 RenderPassId root_id(1, 1); | 717 RenderPassId root_id(1, 1); |
713 std::unique_ptr<RenderPass> root_pass = | 718 std::unique_ptr<RenderPass> root_pass = CreateTestRenderPass( |
714 CreateTestRenderPass(root_id, rect, gfx::Transform()); | 719 root_id, rect, gfx::Transform(), FilterOperations(), FilterOperations()); |
715 | 720 |
716 SharedQuadState* root_shared_state = | 721 SharedQuadState* root_shared_state = |
717 CreateTestSharedQuadState(gfx::Transform(), rect, root_pass.get()); | 722 CreateTestSharedQuadState(gfx::Transform(), rect, root_pass.get()); |
718 | 723 |
719 CreateTestRenderPassDrawQuad( | 724 CreateTestRenderPassDrawQuad( |
720 root_shared_state, small_rect, child_id, root_pass.get()); | 725 root_shared_state, small_rect, child_id, root_pass.get()); |
721 | 726 |
722 RenderPass* child_pass_ptr = child_pass.get(); | 727 RenderPass* child_pass_ptr = child_pass.get(); |
723 | 728 |
724 RenderPassList pass_list; | 729 RenderPassList pass_list; |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
992 this->AppendBackgroundAndRunTest( | 997 this->AppendBackgroundAndRunTest( |
993 FuzzyPixelComparator(false, 2.f, 0.f, 256.f, 256, 0.f), | 998 FuzzyPixelComparator(false, 2.f, 0.f, 256.f, 256, 0.f), |
994 FILE_PATH_LITERAL("intersecting_blue_green_squares.png")); | 999 FILE_PATH_LITERAL("intersecting_blue_green_squares.png")); |
995 } | 1000 } |
996 | 1001 |
997 TYPED_TEST(IntersectingQuadPixelTest, RenderPassQuads) { | 1002 TYPED_TEST(IntersectingQuadPixelTest, RenderPassQuads) { |
998 this->SetupQuadStateAndRenderPass(); | 1003 this->SetupQuadStateAndRenderPass(); |
999 RenderPassId child_pass_id1(2, 2); | 1004 RenderPassId child_pass_id1(2, 2); |
1000 RenderPassId child_pass_id2(2, 3); | 1005 RenderPassId child_pass_id2(2, 3); |
1001 std::unique_ptr<RenderPass> child_pass1 = | 1006 std::unique_ptr<RenderPass> child_pass1 = |
1002 CreateTestRenderPass(child_pass_id1, this->quad_rect_, gfx::Transform()); | 1007 CreateTestRenderPass(child_pass_id1, this->quad_rect_, gfx::Transform(), |
| 1008 FilterOperations(), FilterOperations()); |
1003 SharedQuadState* child1_quad_state = CreateTestSharedQuadState( | 1009 SharedQuadState* child1_quad_state = CreateTestSharedQuadState( |
1004 gfx::Transform(), this->quad_rect_, child_pass1.get()); | 1010 gfx::Transform(), this->quad_rect_, child_pass1.get()); |
1005 std::unique_ptr<RenderPass> child_pass2 = | 1011 std::unique_ptr<RenderPass> child_pass2 = |
1006 CreateTestRenderPass(child_pass_id2, this->quad_rect_, gfx::Transform()); | 1012 CreateTestRenderPass(child_pass_id2, this->quad_rect_, gfx::Transform(), |
| 1013 FilterOperations(), FilterOperations()); |
1007 SharedQuadState* child2_quad_state = CreateTestSharedQuadState( | 1014 SharedQuadState* child2_quad_state = CreateTestSharedQuadState( |
1008 gfx::Transform(), this->quad_rect_, child_pass2.get()); | 1015 gfx::Transform(), this->quad_rect_, child_pass2.get()); |
1009 | 1016 |
1010 CreateTestTwoColoredTextureDrawQuad( | 1017 CreateTestTwoColoredTextureDrawQuad( |
1011 this->quad_rect_, GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 0)), | 1018 this->quad_rect_, GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 0)), |
1012 GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 255)), SK_ColorTRANSPARENT, | 1019 GetColor<TypeParam>(SkColorSetARGB(255, 0, 0, 255)), SK_ColorTRANSPARENT, |
1013 true, child1_quad_state, this->resource_provider_.get(), | 1020 true, child1_quad_state, this->resource_provider_.get(), |
1014 child_pass1.get()); | 1021 child_pass1.get()); |
1015 CreateTestTwoColoredTextureDrawQuad( | 1022 CreateTestTwoColoredTextureDrawQuad( |
1016 this->quad_rect_, GetColor<TypeParam>(SkColorSetARGB(255, 0, 255, 0)), | 1023 this->quad_rect_, GetColor<TypeParam>(SkColorSetARGB(255, 0, 255, 0)), |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1473 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) { | 1480 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) { |
1474 gfx::Rect viewport_rect(this->device_viewport_size_); | 1481 gfx::Rect viewport_rect(this->device_viewport_size_); |
1475 | 1482 |
1476 RenderPassId root_pass_id(1, 1); | 1483 RenderPassId root_pass_id(1, 1); |
1477 std::unique_ptr<RenderPass> root_pass = | 1484 std::unique_ptr<RenderPass> root_pass = |
1478 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1485 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1479 | 1486 |
1480 RenderPassId child_pass_id(2, 2); | 1487 RenderPassId child_pass_id(2, 2); |
1481 gfx::Rect pass_rect(this->device_viewport_size_); | 1488 gfx::Rect pass_rect(this->device_viewport_size_); |
1482 gfx::Transform transform_to_root; | 1489 gfx::Transform transform_to_root; |
1483 std::unique_ptr<RenderPass> child_pass = | 1490 SkScalar matrix[20]; |
1484 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 1491 float amount = 0.5f; |
| 1492 matrix[0] = 0.213f + 0.787f * amount; |
| 1493 matrix[1] = 0.715f - 0.715f * amount; |
| 1494 matrix[2] = 1.f - (matrix[0] + matrix[1]); |
| 1495 matrix[3] = matrix[4] = 0; |
| 1496 matrix[5] = 0.213f - 0.213f * amount; |
| 1497 matrix[6] = 0.715f + 0.285f * amount; |
| 1498 matrix[7] = 1.f - (matrix[5] + matrix[6]); |
| 1499 matrix[8] = matrix[9] = 0; |
| 1500 matrix[10] = 0.213f - 0.213f * amount; |
| 1501 matrix[11] = 0.715f - 0.715f * amount; |
| 1502 matrix[12] = 1.f - (matrix[10] + matrix[11]); |
| 1503 matrix[13] = matrix[14] = 0; |
| 1504 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; |
| 1505 matrix[18] = 1; |
| 1506 FilterOperations filters; |
| 1507 filters.Append( |
| 1508 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make( |
| 1509 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr))); |
| 1510 |
| 1511 std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass( |
| 1512 child_pass_id, pass_rect, transform_to_root, filters, FilterOperations()); |
1485 | 1513 |
1486 gfx::Transform quad_to_target_transform; | 1514 gfx::Transform quad_to_target_transform; |
1487 SharedQuadState* shared_state = CreateTestSharedQuadState( | 1515 SharedQuadState* shared_state = CreateTestSharedQuadState( |
1488 quad_to_target_transform, viewport_rect, child_pass.get()); | 1516 quad_to_target_transform, viewport_rect, child_pass.get()); |
1489 shared_state->opacity = 0.5f; | 1517 shared_state->opacity = 0.5f; |
1490 | 1518 |
1491 gfx::Rect blue_rect(0, | 1519 gfx::Rect blue_rect(0, |
1492 0, | 1520 0, |
1493 this->device_viewport_size_.width(), | 1521 this->device_viewport_size_.width(), |
1494 this->device_viewport_size_.height() / 2); | 1522 this->device_viewport_size_.height() / 2); |
(...skipping 12 matching lines...) Expand all Loading... |
1507 quad_to_target_transform, viewport_rect, child_pass.get()); | 1535 quad_to_target_transform, viewport_rect, child_pass.get()); |
1508 | 1536 |
1509 SolidColorDrawQuad* white = | 1537 SolidColorDrawQuad* white = |
1510 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 1538 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
1511 white->SetNew( | 1539 white->SetNew( |
1512 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); | 1540 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); |
1513 | 1541 |
1514 SharedQuadState* pass_shared_state = | 1542 SharedQuadState* pass_shared_state = |
1515 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); | 1543 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); |
1516 | 1544 |
1517 SkScalar matrix[20]; | |
1518 float amount = 0.5f; | |
1519 matrix[0] = 0.213f + 0.787f * amount; | |
1520 matrix[1] = 0.715f - 0.715f * amount; | |
1521 matrix[2] = 1.f - (matrix[0] + matrix[1]); | |
1522 matrix[3] = matrix[4] = 0; | |
1523 matrix[5] = 0.213f - 0.213f * amount; | |
1524 matrix[6] = 0.715f + 0.285f * amount; | |
1525 matrix[7] = 1.f - (matrix[5] + matrix[6]); | |
1526 matrix[8] = matrix[9] = 0; | |
1527 matrix[10] = 0.213f - 0.213f * amount; | |
1528 matrix[11] = 0.715f - 0.715f * amount; | |
1529 matrix[12] = 1.f - (matrix[10] + matrix[11]); | |
1530 matrix[13] = matrix[14] = 0; | |
1531 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; | |
1532 matrix[18] = 1; | |
1533 FilterOperations filters; | |
1534 filters.Append( | |
1535 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make( | |
1536 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr))); | |
1537 | |
1538 RenderPassDrawQuad* render_pass_quad = | 1545 RenderPassDrawQuad* render_pass_quad = |
1539 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 1546 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
1540 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, | 1547 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, |
1541 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), | 1548 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), |
1542 filters, gfx::Vector2dF(), gfx::PointF(), | 1549 gfx::Vector2dF(), gfx::PointF()); |
1543 FilterOperations()); | |
1544 | 1550 |
1545 RenderPassList pass_list; | 1551 RenderPassList pass_list; |
1546 pass_list.push_back(std::move(child_pass)); | 1552 pass_list.push_back(std::move(child_pass)); |
1547 pass_list.push_back(std::move(root_pass)); | 1553 pass_list.push_back(std::move(root_pass)); |
1548 | 1554 |
1549 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl | 1555 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl |
1550 // renderer so use a fuzzy comparator. | 1556 // renderer so use a fuzzy comparator. |
1551 EXPECT_TRUE(this->RunPixelTest( | 1557 EXPECT_TRUE(this->RunPixelTest( |
1552 &pass_list, | 1558 &pass_list, |
1553 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), | 1559 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), |
1554 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); | 1560 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); |
1555 } | 1561 } |
1556 | 1562 |
1557 TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) { | 1563 TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) { |
1558 gfx::Rect viewport_rect(this->device_viewport_size_); | 1564 gfx::Rect viewport_rect(this->device_viewport_size_); |
1559 | 1565 |
1560 RenderPassId root_pass_id(1, 1); | 1566 RenderPassId root_pass_id(1, 1); |
1561 std::unique_ptr<RenderPass> root_pass = | 1567 std::unique_ptr<RenderPass> root_pass = |
1562 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1568 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1563 | 1569 |
1564 RenderPassId child_pass_id(2, 2); | 1570 RenderPassId child_pass_id(2, 2); |
1565 gfx::Rect pass_rect(this->device_viewport_size_); | 1571 gfx::Rect pass_rect(this->device_viewport_size_); |
1566 gfx::Transform transform_to_root; | 1572 gfx::Transform transform_to_root; |
1567 std::unique_ptr<RenderPass> child_pass = | 1573 FilterOperations filters; |
1568 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 1574 filters.Append(FilterOperation::CreateSaturateFilter(0.5f)); |
| 1575 |
| 1576 std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass( |
| 1577 child_pass_id, pass_rect, transform_to_root, filters, FilterOperations()); |
1569 | 1578 |
1570 gfx::Transform quad_to_target_transform; | 1579 gfx::Transform quad_to_target_transform; |
1571 SharedQuadState* shared_state = CreateTestSharedQuadState( | 1580 SharedQuadState* shared_state = CreateTestSharedQuadState( |
1572 quad_to_target_transform, viewport_rect, child_pass.get()); | 1581 quad_to_target_transform, viewport_rect, child_pass.get()); |
1573 shared_state->opacity = 0.5f; | 1582 shared_state->opacity = 0.5f; |
1574 | 1583 |
1575 gfx::Rect blue_rect(0, | 1584 gfx::Rect blue_rect(0, |
1576 0, | 1585 0, |
1577 this->device_viewport_size_.width(), | 1586 this->device_viewport_size_.width(), |
1578 this->device_viewport_size_.height() / 2); | 1587 this->device_viewport_size_.height() / 2); |
(...skipping 12 matching lines...) Expand all Loading... |
1591 quad_to_target_transform, viewport_rect, child_pass.get()); | 1600 quad_to_target_transform, viewport_rect, child_pass.get()); |
1592 | 1601 |
1593 SolidColorDrawQuad* white = | 1602 SolidColorDrawQuad* white = |
1594 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 1603 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
1595 white->SetNew( | 1604 white->SetNew( |
1596 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); | 1605 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); |
1597 | 1606 |
1598 SharedQuadState* pass_shared_state = | 1607 SharedQuadState* pass_shared_state = |
1599 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); | 1608 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); |
1600 | 1609 |
1601 FilterOperations filters; | |
1602 filters.Append(FilterOperation::CreateSaturateFilter(0.5f)); | |
1603 | |
1604 RenderPassDrawQuad* render_pass_quad = | 1610 RenderPassDrawQuad* render_pass_quad = |
1605 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 1611 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
1606 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, | 1612 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, |
1607 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), | 1613 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), |
1608 filters, gfx::Vector2dF(), gfx::PointF(), | 1614 gfx::Vector2dF(), gfx::PointF()); |
1609 FilterOperations()); | |
1610 | 1615 |
1611 RenderPassList pass_list; | 1616 RenderPassList pass_list; |
1612 pass_list.push_back(std::move(child_pass)); | 1617 pass_list.push_back(std::move(child_pass)); |
1613 pass_list.push_back(std::move(root_pass)); | 1618 pass_list.push_back(std::move(root_pass)); |
1614 | 1619 |
1615 // This test blends slightly differently with the software renderer vs. the gl | 1620 // This test blends slightly differently with the software renderer vs. the gl |
1616 // renderer so use a fuzzy comparator. | 1621 // renderer so use a fuzzy comparator. |
1617 EXPECT_TRUE(this->RunPixelTest( | 1622 EXPECT_TRUE(this->RunPixelTest( |
1618 &pass_list, base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), | 1623 &pass_list, base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), |
1619 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); | 1624 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); |
1620 } | 1625 } |
1621 | 1626 |
1622 TYPED_TEST(RendererPixelTest, FastPassFilterChain) { | 1627 TYPED_TEST(RendererPixelTest, FastPassFilterChain) { |
1623 gfx::Rect viewport_rect(this->device_viewport_size_); | 1628 gfx::Rect viewport_rect(this->device_viewport_size_); |
1624 | 1629 |
1625 RenderPassId root_pass_id(1, 1); | 1630 RenderPassId root_pass_id(1, 1); |
1626 std::unique_ptr<RenderPass> root_pass = | 1631 std::unique_ptr<RenderPass> root_pass = |
1627 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1632 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1628 | 1633 |
1629 RenderPassId child_pass_id(2, 2); | 1634 RenderPassId child_pass_id(2, 2); |
1630 gfx::Rect pass_rect(this->device_viewport_size_); | 1635 gfx::Rect pass_rect(this->device_viewport_size_); |
1631 gfx::Transform transform_to_root; | 1636 gfx::Transform transform_to_root; |
1632 std::unique_ptr<RenderPass> child_pass = | 1637 FilterOperations filters; |
1633 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 1638 filters.Append(FilterOperation::CreateGrayscaleFilter(1.f)); |
| 1639 filters.Append(FilterOperation::CreateBrightnessFilter(0.5f)); |
| 1640 |
| 1641 std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass( |
| 1642 child_pass_id, pass_rect, transform_to_root, filters, FilterOperations()); |
1634 | 1643 |
1635 gfx::Transform quad_to_target_transform; | 1644 gfx::Transform quad_to_target_transform; |
1636 SharedQuadState* shared_state = CreateTestSharedQuadState( | 1645 SharedQuadState* shared_state = CreateTestSharedQuadState( |
1637 quad_to_target_transform, viewport_rect, child_pass.get()); | 1646 quad_to_target_transform, viewport_rect, child_pass.get()); |
1638 shared_state->opacity = 0.5f; | 1647 shared_state->opacity = 0.5f; |
1639 | 1648 |
1640 gfx::Rect blue_rect(0, | 1649 gfx::Rect blue_rect(0, |
1641 0, | 1650 0, |
1642 this->device_viewport_size_.width(), | 1651 this->device_viewport_size_.width(), |
1643 this->device_viewport_size_.height() / 2); | 1652 this->device_viewport_size_.height() / 2); |
(...skipping 12 matching lines...) Expand all Loading... |
1656 quad_to_target_transform, viewport_rect, child_pass.get()); | 1665 quad_to_target_transform, viewport_rect, child_pass.get()); |
1657 | 1666 |
1658 SolidColorDrawQuad* white = | 1667 SolidColorDrawQuad* white = |
1659 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 1668 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
1660 white->SetNew( | 1669 white->SetNew( |
1661 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); | 1670 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); |
1662 | 1671 |
1663 SharedQuadState* pass_shared_state = | 1672 SharedQuadState* pass_shared_state = |
1664 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); | 1673 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); |
1665 | 1674 |
1666 FilterOperations filters; | |
1667 filters.Append(FilterOperation::CreateGrayscaleFilter(1.f)); | |
1668 filters.Append(FilterOperation::CreateBrightnessFilter(0.5f)); | |
1669 | |
1670 RenderPassDrawQuad* render_pass_quad = | 1675 RenderPassDrawQuad* render_pass_quad = |
1671 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 1676 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
1672 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, | 1677 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, |
1673 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), | 1678 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), |
1674 filters, gfx::Vector2dF(), gfx::PointF(), | 1679 gfx::Vector2dF(), gfx::PointF()); |
1675 FilterOperations()); | |
1676 | 1680 |
1677 RenderPassList pass_list; | 1681 RenderPassList pass_list; |
1678 pass_list.push_back(std::move(child_pass)); | 1682 pass_list.push_back(std::move(child_pass)); |
1679 pass_list.push_back(std::move(root_pass)); | 1683 pass_list.push_back(std::move(root_pass)); |
1680 | 1684 |
1681 // This test blends slightly differently with the software renderer vs. the gl | 1685 // This test blends slightly differently with the software renderer vs. the gl |
1682 // renderer so use a fuzzy comparator. | 1686 // renderer so use a fuzzy comparator. |
1683 EXPECT_TRUE(this->RunPixelTest( | 1687 EXPECT_TRUE(this->RunPixelTest( |
1684 &pass_list, | 1688 &pass_list, |
1685 base::FilePath(FILE_PATH_LITERAL("blue_yellow_filter_chain.png")), | 1689 base::FilePath(FILE_PATH_LITERAL("blue_yellow_filter_chain.png")), |
1686 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); | 1690 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); |
1687 } | 1691 } |
1688 | 1692 |
1689 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) { | 1693 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) { |
1690 gfx::Rect viewport_rect(this->device_viewport_size_); | 1694 gfx::Rect viewport_rect(this->device_viewport_size_); |
1691 | 1695 |
1692 RenderPassId root_pass_id(1, 1); | 1696 RenderPassId root_pass_id(1, 1); |
1693 std::unique_ptr<RenderPass> root_pass = | 1697 std::unique_ptr<RenderPass> root_pass = |
1694 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1698 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1695 | 1699 |
1696 RenderPassId child_pass_id(2, 2); | 1700 RenderPassId child_pass_id(2, 2); |
1697 gfx::Rect pass_rect(this->device_viewport_size_); | 1701 gfx::Rect pass_rect(this->device_viewport_size_); |
1698 gfx::Transform transform_to_root; | 1702 gfx::Transform transform_to_root; |
1699 std::unique_ptr<RenderPass> child_pass = | 1703 SkScalar matrix[20]; |
1700 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 1704 float amount = 0.5f; |
| 1705 matrix[0] = 0.213f + 0.787f * amount; |
| 1706 matrix[1] = 0.715f - 0.715f * amount; |
| 1707 matrix[2] = 1.f - (matrix[0] + matrix[1]); |
| 1708 matrix[3] = 0; |
| 1709 matrix[4] = 20.f; |
| 1710 matrix[5] = 0.213f - 0.213f * amount; |
| 1711 matrix[6] = 0.715f + 0.285f * amount; |
| 1712 matrix[7] = 1.f - (matrix[5] + matrix[6]); |
| 1713 matrix[8] = 0; |
| 1714 matrix[9] = 200.f; |
| 1715 matrix[10] = 0.213f - 0.213f * amount; |
| 1716 matrix[11] = 0.715f - 0.715f * amount; |
| 1717 matrix[12] = 1.f - (matrix[10] + matrix[11]); |
| 1718 matrix[13] = 0; |
| 1719 matrix[14] = 1.5f; |
| 1720 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; |
| 1721 matrix[18] = 1; |
| 1722 FilterOperations filters; |
| 1723 filters.Append( |
| 1724 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make( |
| 1725 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr))); |
| 1726 |
| 1727 std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass( |
| 1728 child_pass_id, pass_rect, transform_to_root, filters, FilterOperations()); |
1701 | 1729 |
1702 gfx::Transform quad_to_target_transform; | 1730 gfx::Transform quad_to_target_transform; |
1703 SharedQuadState* shared_state = CreateTestSharedQuadState( | 1731 SharedQuadState* shared_state = CreateTestSharedQuadState( |
1704 quad_to_target_transform, viewport_rect, child_pass.get()); | 1732 quad_to_target_transform, viewport_rect, child_pass.get()); |
1705 shared_state->opacity = 0.5f; | 1733 shared_state->opacity = 0.5f; |
1706 | 1734 |
1707 gfx::Rect blue_rect(0, | 1735 gfx::Rect blue_rect(0, |
1708 0, | 1736 0, |
1709 this->device_viewport_size_.width(), | 1737 this->device_viewport_size_.width(), |
1710 this->device_viewport_size_.height() / 2); | 1738 this->device_viewport_size_.height() / 2); |
(...skipping 12 matching lines...) Expand all Loading... |
1723 quad_to_target_transform, viewport_rect, child_pass.get()); | 1751 quad_to_target_transform, viewport_rect, child_pass.get()); |
1724 | 1752 |
1725 SolidColorDrawQuad* white = | 1753 SolidColorDrawQuad* white = |
1726 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 1754 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
1727 white->SetNew( | 1755 white->SetNew( |
1728 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); | 1756 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); |
1729 | 1757 |
1730 SharedQuadState* pass_shared_state = | 1758 SharedQuadState* pass_shared_state = |
1731 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); | 1759 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); |
1732 | 1760 |
1733 SkScalar matrix[20]; | |
1734 float amount = 0.5f; | |
1735 matrix[0] = 0.213f + 0.787f * amount; | |
1736 matrix[1] = 0.715f - 0.715f * amount; | |
1737 matrix[2] = 1.f - (matrix[0] + matrix[1]); | |
1738 matrix[3] = 0; | |
1739 matrix[4] = 20.f; | |
1740 matrix[5] = 0.213f - 0.213f * amount; | |
1741 matrix[6] = 0.715f + 0.285f * amount; | |
1742 matrix[7] = 1.f - (matrix[5] + matrix[6]); | |
1743 matrix[8] = 0; | |
1744 matrix[9] = 200.f; | |
1745 matrix[10] = 0.213f - 0.213f * amount; | |
1746 matrix[11] = 0.715f - 0.715f * amount; | |
1747 matrix[12] = 1.f - (matrix[10] + matrix[11]); | |
1748 matrix[13] = 0; | |
1749 matrix[14] = 1.5f; | |
1750 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; | |
1751 matrix[18] = 1; | |
1752 FilterOperations filters; | |
1753 filters.Append( | |
1754 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make( | |
1755 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr))); | |
1756 | |
1757 RenderPassDrawQuad* render_pass_quad = | 1761 RenderPassDrawQuad* render_pass_quad = |
1758 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 1762 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
1759 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, | 1763 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, |
1760 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), | 1764 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), |
1761 filters, gfx::Vector2dF(), gfx::PointF(), | 1765 gfx::Vector2dF(), gfx::PointF()); |
1762 FilterOperations()); | |
1763 | 1766 |
1764 RenderPassList pass_list; | 1767 RenderPassList pass_list; |
1765 | 1768 |
1766 pass_list.push_back(std::move(child_pass)); | 1769 pass_list.push_back(std::move(child_pass)); |
1767 pass_list.push_back(std::move(root_pass)); | 1770 pass_list.push_back(std::move(root_pass)); |
1768 | 1771 |
1769 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl | 1772 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl |
1770 // renderer so use a fuzzy comparator. | 1773 // renderer so use a fuzzy comparator. |
1771 EXPECT_TRUE(this->RunPixelTest( | 1774 EXPECT_TRUE(this->RunPixelTest( |
1772 &pass_list, | 1775 &pass_list, |
1773 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha_translate.png")), | 1776 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha_translate.png")), |
1774 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); | 1777 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); |
1775 } | 1778 } |
1776 | 1779 |
1777 TYPED_TEST(RendererPixelTest, EnlargedRenderPassTexture) { | 1780 TYPED_TEST(RendererPixelTest, EnlargedRenderPassTexture) { |
1778 gfx::Rect viewport_rect(this->device_viewport_size_); | 1781 gfx::Rect viewport_rect(this->device_viewport_size_); |
1779 | 1782 |
1780 RenderPassId root_pass_id(1, 1); | 1783 RenderPassId root_pass_id(1, 1); |
1781 std::unique_ptr<RenderPass> root_pass = | 1784 std::unique_ptr<RenderPass> root_pass = |
1782 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1785 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1783 | 1786 |
1784 RenderPassId child_pass_id(2, 2); | 1787 RenderPassId child_pass_id(2, 2); |
1785 gfx::Rect pass_rect(this->device_viewport_size_); | 1788 gfx::Rect pass_rect(this->device_viewport_size_); |
1786 gfx::Transform transform_to_root; | 1789 gfx::Transform transform_to_root; |
1787 std::unique_ptr<RenderPass> child_pass = | 1790 std::unique_ptr<RenderPass> child_pass = |
1788 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 1791 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root, |
| 1792 FilterOperations(), FilterOperations()); |
1789 | 1793 |
1790 gfx::Transform quad_to_target_transform; | 1794 gfx::Transform quad_to_target_transform; |
1791 SharedQuadState* shared_state = CreateTestSharedQuadState( | 1795 SharedQuadState* shared_state = CreateTestSharedQuadState( |
1792 quad_to_target_transform, viewport_rect, child_pass.get()); | 1796 quad_to_target_transform, viewport_rect, child_pass.get()); |
1793 | 1797 |
1794 gfx::Rect blue_rect(0, | 1798 gfx::Rect blue_rect(0, |
1795 0, | 1799 0, |
1796 this->device_viewport_size_.width(), | 1800 this->device_viewport_size_.width(), |
1797 this->device_viewport_size_.height() / 2); | 1801 this->device_viewport_size_.height() / 2); |
1798 SolidColorDrawQuad* blue = | 1802 SolidColorDrawQuad* blue = |
(...skipping 28 matching lines...) Expand all Loading... |
1827 gfx::Rect viewport_rect(this->device_viewport_size_); | 1831 gfx::Rect viewport_rect(this->device_viewport_size_); |
1828 | 1832 |
1829 RenderPassId root_pass_id(1, 1); | 1833 RenderPassId root_pass_id(1, 1); |
1830 std::unique_ptr<RenderPass> root_pass = | 1834 std::unique_ptr<RenderPass> root_pass = |
1831 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1835 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1832 | 1836 |
1833 RenderPassId child_pass_id(2, 2); | 1837 RenderPassId child_pass_id(2, 2); |
1834 gfx::Rect pass_rect(this->device_viewport_size_); | 1838 gfx::Rect pass_rect(this->device_viewport_size_); |
1835 gfx::Transform transform_to_root; | 1839 gfx::Transform transform_to_root; |
1836 std::unique_ptr<RenderPass> child_pass = | 1840 std::unique_ptr<RenderPass> child_pass = |
1837 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 1841 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root, |
| 1842 FilterOperations(), FilterOperations()); |
1838 | 1843 |
1839 gfx::Transform quad_to_target_transform; | 1844 gfx::Transform quad_to_target_transform; |
1840 SharedQuadState* shared_state = CreateTestSharedQuadState( | 1845 SharedQuadState* shared_state = CreateTestSharedQuadState( |
1841 quad_to_target_transform, viewport_rect, child_pass.get()); | 1846 quad_to_target_transform, viewport_rect, child_pass.get()); |
1842 | 1847 |
1843 gfx::Rect blue_rect(0, | 1848 gfx::Rect blue_rect(0, |
1844 0, | 1849 0, |
1845 this->device_viewport_size_.width(), | 1850 this->device_viewport_size_.width(), |
1846 this->device_viewport_size_.height() / 2); | 1851 this->device_viewport_size_.height() / 2); |
1847 SolidColorDrawQuad* blue = | 1852 SolidColorDrawQuad* blue = |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1892 | 1897 |
1893 RenderPassId root_pass_id(1, 1); | 1898 RenderPassId root_pass_id(1, 1); |
1894 std::unique_ptr<RenderPass> root_pass = | 1899 std::unique_ptr<RenderPass> root_pass = |
1895 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1900 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1896 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( | 1901 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( |
1897 gfx::Transform(), viewport_rect, root_pass.get()); | 1902 gfx::Transform(), viewport_rect, root_pass.get()); |
1898 | 1903 |
1899 RenderPassId child_pass_id(2, 2); | 1904 RenderPassId child_pass_id(2, 2); |
1900 gfx::Transform transform_to_root; | 1905 gfx::Transform transform_to_root; |
1901 std::unique_ptr<RenderPass> child_pass = | 1906 std::unique_ptr<RenderPass> child_pass = |
1902 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); | 1907 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root, |
| 1908 FilterOperations(), FilterOperations()); |
1903 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState( | 1909 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState( |
1904 gfx::Transform(), viewport_rect, child_pass.get()); | 1910 gfx::Transform(), viewport_rect, child_pass.get()); |
1905 | 1911 |
1906 // The child render pass is just a green box. | 1912 // The child render pass is just a green box. |
1907 static const SkColor kCSSGreen = 0xff008000; | 1913 static const SkColor kCSSGreen = 0xff008000; |
1908 SolidColorDrawQuad* green = | 1914 SolidColorDrawQuad* green = |
1909 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 1915 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
1910 green->SetNew( | 1916 green->SetNew( |
1911 child_pass_shared_state, viewport_rect, viewport_rect, kCSSGreen, false); | 1917 child_pass_shared_state, viewport_rect, viewport_rect, kCSSGreen, false); |
1912 | 1918 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1949 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); | 1955 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); |
1950 | 1956 |
1951 // Set up a mask on the RenderPassDrawQuad. | 1957 // Set up a mask on the RenderPassDrawQuad. |
1952 RenderPassDrawQuad* mask_quad = | 1958 RenderPassDrawQuad* mask_quad = |
1953 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 1959 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
1954 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id, | 1960 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id, |
1955 mask_resource_id, | 1961 mask_resource_id, |
1956 gfx::Vector2dF(2.f / mask_rect.width(), | 1962 gfx::Vector2dF(2.f / mask_rect.width(), |
1957 2.f / mask_rect.height()), // mask_uv_scale | 1963 2.f / mask_rect.height()), // mask_uv_scale |
1958 gfx::Size(mask_rect.size()), // mask_texture_size | 1964 gfx::Size(mask_rect.size()), // mask_texture_size |
1959 FilterOperations(), // foreground filters | |
1960 gfx::Vector2dF(), // filters scale | 1965 gfx::Vector2dF(), // filters scale |
1961 gfx::PointF(), // filter origin | 1966 gfx::PointF()); // filter origin |
1962 FilterOperations()); // background filters | |
1963 | 1967 |
1964 // White background behind the masked render pass. | 1968 // White background behind the masked render pass. |
1965 SolidColorDrawQuad* white = | 1969 SolidColorDrawQuad* white = |
1966 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 1970 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
1967 white->SetNew(root_pass_shared_state, | 1971 white->SetNew(root_pass_shared_state, |
1968 viewport_rect, | 1972 viewport_rect, |
1969 viewport_rect, | 1973 viewport_rect, |
1970 SK_ColorWHITE, | 1974 SK_ColorWHITE, |
1971 false); | 1975 false); |
1972 | 1976 |
(...skipping 14 matching lines...) Expand all Loading... |
1987 | 1991 |
1988 RenderPassId root_pass_id(1, 1); | 1992 RenderPassId root_pass_id(1, 1); |
1989 std::unique_ptr<RenderPass> root_pass = | 1993 std::unique_ptr<RenderPass> root_pass = |
1990 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 1994 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
1991 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( | 1995 SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( |
1992 gfx::Transform(), viewport_rect, root_pass.get()); | 1996 gfx::Transform(), viewport_rect, root_pass.get()); |
1993 | 1997 |
1994 RenderPassId child_pass_id(2, 2); | 1998 RenderPassId child_pass_id(2, 2); |
1995 gfx::Transform transform_to_root; | 1999 gfx::Transform transform_to_root; |
1996 std::unique_ptr<RenderPass> child_pass = | 2000 std::unique_ptr<RenderPass> child_pass = |
1997 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); | 2001 CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root, |
| 2002 FilterOperations(), FilterOperations()); |
1998 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState( | 2003 SharedQuadState* child_pass_shared_state = CreateTestSharedQuadState( |
1999 gfx::Transform(), viewport_rect, child_pass.get()); | 2004 gfx::Transform(), viewport_rect, child_pass.get()); |
2000 | 2005 |
2001 // The child render pass is just a green box. | 2006 // The child render pass is just a green box. |
2002 static const SkColor kCSSGreen = 0xff008000; | 2007 static const SkColor kCSSGreen = 0xff008000; |
2003 SolidColorDrawQuad* green = | 2008 SolidColorDrawQuad* green = |
2004 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 2009 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
2005 green->SetNew(child_pass_shared_state, viewport_rect, viewport_rect, | 2010 green->SetNew(child_pass_shared_state, viewport_rect, viewport_rect, |
2006 kCSSGreen, false); | 2011 kCSSGreen, false); |
2007 | 2012 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2044 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); | 2049 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); |
2045 | 2050 |
2046 // Set up a mask on the RenderPassDrawQuad. | 2051 // Set up a mask on the RenderPassDrawQuad. |
2047 RenderPassDrawQuad* mask_quad = | 2052 RenderPassDrawQuad* mask_quad = |
2048 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 2053 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
2049 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id, | 2054 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id, |
2050 mask_resource_id, | 2055 mask_resource_id, |
2051 gfx::Vector2dF(2.f / mask_rect.width(), | 2056 gfx::Vector2dF(2.f / mask_rect.width(), |
2052 2.f / mask_rect.height()), // mask_uv_scale | 2057 2.f / mask_rect.height()), // mask_uv_scale |
2053 gfx::Size(mask_rect.size()), // mask_texture_size | 2058 gfx::Size(mask_rect.size()), // mask_texture_size |
2054 FilterOperations(), // foreground filters | |
2055 gfx::Vector2dF(), // filters scale | 2059 gfx::Vector2dF(), // filters scale |
2056 gfx::PointF(), // filter origin | 2060 gfx::PointF()); // filter origin |
2057 FilterOperations()); // background filters | |
2058 | 2061 |
2059 // White background behind the masked render pass. | 2062 // White background behind the masked render pass. |
2060 SolidColorDrawQuad* white = | 2063 SolidColorDrawQuad* white = |
2061 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 2064 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
2062 white->SetNew(root_pass_shared_state, viewport_rect, viewport_rect, | 2065 white->SetNew(root_pass_shared_state, viewport_rect, viewport_rect, |
2063 SK_ColorWHITE, false); | 2066 SK_ColorWHITE, false); |
2064 | 2067 |
2065 RenderPassList pass_list; | 2068 RenderPassList pass_list; |
2066 pass_list.push_back(std::move(child_pass)); | 2069 pass_list.push_back(std::move(child_pass)); |
2067 pass_list.push_back(std::move(root_pass)); | 2070 pass_list.push_back(std::move(root_pass)); |
(...skipping 13 matching lines...) Expand all Loading... |
2081 RenderPassId root_id(1, 1); | 2084 RenderPassId root_id(1, 1); |
2082 std::unique_ptr<RenderPass> root_pass = | 2085 std::unique_ptr<RenderPass> root_pass = |
2083 CreateTestRootRenderPass(root_id, device_viewport_rect); | 2086 CreateTestRootRenderPass(root_id, device_viewport_rect); |
2084 root_pass->has_transparent_background = false; | 2087 root_pass->has_transparent_background = false; |
2085 | 2088 |
2086 gfx::Transform identity_quad_to_target_transform; | 2089 gfx::Transform identity_quad_to_target_transform; |
2087 | 2090 |
2088 RenderPassId filter_pass_id(2, 1); | 2091 RenderPassId filter_pass_id(2, 1); |
2089 gfx::Transform transform_to_root; | 2092 gfx::Transform transform_to_root; |
2090 std::unique_ptr<RenderPass> filter_pass = CreateTestRenderPass( | 2093 std::unique_ptr<RenderPass> filter_pass = CreateTestRenderPass( |
2091 filter_pass_id, filter_pass_layer_rect_, transform_to_root); | 2094 filter_pass_id, filter_pass_layer_rect_, transform_to_root, |
| 2095 FilterOperations(), this->background_filters_); |
2092 | 2096 |
2093 // A non-visible quad in the filtering render pass. | 2097 // A non-visible quad in the filtering render pass. |
2094 { | 2098 { |
2095 SharedQuadState* shared_state = | 2099 SharedQuadState* shared_state = |
2096 CreateTestSharedQuadState(identity_quad_to_target_transform, | 2100 CreateTestSharedQuadState(identity_quad_to_target_transform, |
2097 filter_pass_layer_rect_, filter_pass.get()); | 2101 filter_pass_layer_rect_, filter_pass.get()); |
2098 SolidColorDrawQuad* color_quad = | 2102 SolidColorDrawQuad* color_quad = |
2099 filter_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 2103 filter_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
2100 color_quad->SetNew(shared_state, filter_pass_layer_rect_, | 2104 color_quad->SetNew(shared_state, filter_pass_layer_rect_, |
2101 filter_pass_layer_rect_, SK_ColorTRANSPARENT, false); | 2105 filter_pass_layer_rect_, SK_ColorTRANSPARENT, false); |
2102 } | 2106 } |
2103 | 2107 |
2104 { | 2108 { |
2105 SharedQuadState* shared_state = | 2109 SharedQuadState* shared_state = |
2106 CreateTestSharedQuadState(filter_pass_to_target_transform_, | 2110 CreateTestSharedQuadState(filter_pass_to_target_transform_, |
2107 filter_pass_layer_rect_, filter_pass.get()); | 2111 filter_pass_layer_rect_, filter_pass.get()); |
2108 RenderPassDrawQuad* filter_pass_quad = | 2112 RenderPassDrawQuad* filter_pass_quad = |
2109 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 2113 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
2110 filter_pass_quad->SetNew(shared_state, filter_pass_layer_rect_, | 2114 filter_pass_quad->SetNew(shared_state, filter_pass_layer_rect_, |
2111 filter_pass_layer_rect_, filter_pass_id, | 2115 filter_pass_layer_rect_, filter_pass_id, |
2112 0, // mask_resource_id | 2116 0, // mask_resource_id |
2113 gfx::Vector2dF(), // mask_uv_scale | 2117 gfx::Vector2dF(), // mask_uv_scale |
2114 gfx::Size(), // mask_texture_size | 2118 gfx::Size(), // mask_texture_size |
2115 FilterOperations(), // filters | |
2116 gfx::Vector2dF(1.0f, 1.0f), // filters_scale | 2119 gfx::Vector2dF(1.0f, 1.0f), // filters_scale |
2117 gfx::PointF(), // filters_origin | 2120 gfx::PointF()); // filters_origin |
2118 this->background_filters_); | |
2119 } | 2121 } |
2120 | 2122 |
2121 const int kColumnWidth = device_viewport_rect.width() / 3; | 2123 const int kColumnWidth = device_viewport_rect.width() / 3; |
2122 | 2124 |
2123 gfx::Rect left_rect = gfx::Rect(0, 0, kColumnWidth, 20); | 2125 gfx::Rect left_rect = gfx::Rect(0, 0, kColumnWidth, 20); |
2124 for (int i = 0; left_rect.y() < device_viewport_rect.height(); ++i) { | 2126 for (int i = 0; left_rect.y() < device_viewport_rect.height(); ++i) { |
2125 SharedQuadState* shared_state = CreateTestSharedQuadState( | 2127 SharedQuadState* shared_state = CreateTestSharedQuadState( |
2126 identity_quad_to_target_transform, left_rect, root_pass.get()); | 2128 identity_quad_to_target_transform, left_rect, root_pass.get()); |
2127 SolidColorDrawQuad* color_quad = | 2129 SolidColorDrawQuad* color_quad = |
2128 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 2130 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2287 | 2289 |
2288 RenderPassId root_pass_id(1, 1); | 2290 RenderPassId root_pass_id(1, 1); |
2289 std::unique_ptr<RenderPass> root_pass = | 2291 std::unique_ptr<RenderPass> root_pass = |
2290 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 2292 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
2291 root_pass->has_transparent_background = false; | 2293 root_pass->has_transparent_background = false; |
2292 | 2294 |
2293 RenderPassId child_pass_id(2, 2); | 2295 RenderPassId child_pass_id(2, 2); |
2294 gfx::Rect pass_rect(this->device_viewport_size_); | 2296 gfx::Rect pass_rect(this->device_viewport_size_); |
2295 gfx::Transform transform_to_root; | 2297 gfx::Transform transform_to_root; |
2296 std::unique_ptr<RenderPass> child_pass = | 2298 std::unique_ptr<RenderPass> child_pass = |
2297 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 2299 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root, |
| 2300 FilterOperations(), FilterOperations()); |
2298 | 2301 |
2299 gfx::Transform quad_to_target_transform; | 2302 gfx::Transform quad_to_target_transform; |
2300 SharedQuadState* shared_state = CreateTestSharedQuadState( | 2303 SharedQuadState* shared_state = CreateTestSharedQuadState( |
2301 quad_to_target_transform, viewport_rect, child_pass.get()); | 2304 quad_to_target_transform, viewport_rect, child_pass.get()); |
2302 | 2305 |
2303 gfx::Rect blue_rect(0, | 2306 gfx::Rect blue_rect(0, |
2304 0, | 2307 0, |
2305 this->device_viewport_size_.width(), | 2308 this->device_viewport_size_.width(), |
2306 this->device_viewport_size_.height()); | 2309 this->device_viewport_size_.height()); |
2307 SolidColorDrawQuad* blue = | 2310 SolidColorDrawQuad* blue = |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2363 FuzzyPixelOffByOneComparator(true))); | 2366 FuzzyPixelOffByOneComparator(true))); |
2364 } | 2367 } |
2365 | 2368 |
2366 // This test tests that anti-aliasing works for axis aligned quads. | 2369 // This test tests that anti-aliasing works for axis aligned quads. |
2367 // Anti-aliasing is only supported in the gl renderer. | 2370 // Anti-aliasing is only supported in the gl renderer. |
2368 TEST_F(GLRendererPixelTest, AxisAligned) { | 2371 TEST_F(GLRendererPixelTest, AxisAligned) { |
2369 gfx::Rect rect(this->device_viewport_size_); | 2372 gfx::Rect rect(this->device_viewport_size_); |
2370 | 2373 |
2371 RenderPassId id(1, 1); | 2374 RenderPassId id(1, 1); |
2372 gfx::Transform transform_to_root; | 2375 gfx::Transform transform_to_root; |
2373 std::unique_ptr<RenderPass> pass = | 2376 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2374 CreateTestRenderPass(id, rect, transform_to_root); | 2377 id, rect, transform_to_root, FilterOperations(), FilterOperations()); |
2375 | 2378 |
2376 gfx::Transform red_quad_to_target_transform; | 2379 gfx::Transform red_quad_to_target_transform; |
2377 red_quad_to_target_transform.Translate(50, 50); | 2380 red_quad_to_target_transform.Translate(50, 50); |
2378 red_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f), | 2381 red_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f), |
2379 0.5f + 1.0f / (rect.height() * 2.0f)); | 2382 0.5f + 1.0f / (rect.height() * 2.0f)); |
2380 SharedQuadState* red_shared_state = | 2383 SharedQuadState* red_shared_state = |
2381 CreateTestSharedQuadState(red_quad_to_target_transform, rect, pass.get()); | 2384 CreateTestSharedQuadState(red_quad_to_target_transform, rect, pass.get()); |
2382 | 2385 |
2383 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 2386 SolidColorDrawQuad* red = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
2384 red->SetNew(red_shared_state, rect, rect, SK_ColorRED, false); | 2387 red->SetNew(red_shared_state, rect, rect, SK_ColorRED, false); |
(...skipping 25 matching lines...) Expand all Loading... |
2410 ExactPixelComparator(true))); | 2413 ExactPixelComparator(true))); |
2411 } | 2414 } |
2412 | 2415 |
2413 // This test tests that forcing anti-aliasing off works as expected. | 2416 // This test tests that forcing anti-aliasing off works as expected. |
2414 // Anti-aliasing is only supported in the gl renderer. | 2417 // Anti-aliasing is only supported in the gl renderer. |
2415 TEST_F(GLRendererPixelTest, ForceAntiAliasingOff) { | 2418 TEST_F(GLRendererPixelTest, ForceAntiAliasingOff) { |
2416 gfx::Rect rect(this->device_viewport_size_); | 2419 gfx::Rect rect(this->device_viewport_size_); |
2417 | 2420 |
2418 RenderPassId id(1, 1); | 2421 RenderPassId id(1, 1); |
2419 gfx::Transform transform_to_root; | 2422 gfx::Transform transform_to_root; |
2420 std::unique_ptr<RenderPass> pass = | 2423 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2421 CreateTestRenderPass(id, rect, transform_to_root); | 2424 id, rect, transform_to_root, FilterOperations(), FilterOperations()); |
2422 | 2425 |
2423 gfx::Transform hole_quad_to_target_transform; | 2426 gfx::Transform hole_quad_to_target_transform; |
2424 hole_quad_to_target_transform.Translate(50, 50); | 2427 hole_quad_to_target_transform.Translate(50, 50); |
2425 hole_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f), | 2428 hole_quad_to_target_transform.Scale(0.5f + 1.0f / (rect.width() * 2.0f), |
2426 0.5f + 1.0f / (rect.height() * 2.0f)); | 2429 0.5f + 1.0f / (rect.height() * 2.0f)); |
2427 SharedQuadState* hole_shared_state = CreateTestSharedQuadState( | 2430 SharedQuadState* hole_shared_state = CreateTestSharedQuadState( |
2428 hole_quad_to_target_transform, rect, pass.get()); | 2431 hole_quad_to_target_transform, rect, pass.get()); |
2429 | 2432 |
2430 SolidColorDrawQuad* hole = | 2433 SolidColorDrawQuad* hole = |
2431 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 2434 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2488 } | 2491 } |
2489 | 2492 |
2490 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) { | 2493 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) { |
2491 gfx::Rect viewport(this->device_viewport_size_); | 2494 gfx::Rect viewport(this->device_viewport_size_); |
2492 // TODO(enne): the renderer should figure this out on its own. | 2495 // TODO(enne): the renderer should figure this out on its own. |
2493 ResourceFormat texture_format = RGBA_8888; | 2496 ResourceFormat texture_format = RGBA_8888; |
2494 bool nearest_neighbor = false; | 2497 bool nearest_neighbor = false; |
2495 | 2498 |
2496 RenderPassId id(1, 1); | 2499 RenderPassId id(1, 1); |
2497 gfx::Transform transform_to_root; | 2500 gfx::Transform transform_to_root; |
2498 std::unique_ptr<RenderPass> pass = | 2501 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2499 CreateTestRenderPass(id, viewport, transform_to_root); | 2502 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2500 | 2503 |
2501 // One clipped blue quad in the lower right corner. Outside the clip | 2504 // One clipped blue quad in the lower right corner. Outside the clip |
2502 // is red, which should not appear. | 2505 // is red, which should not appear. |
2503 gfx::Rect blue_rect(gfx::Size(100, 100)); | 2506 gfx::Rect blue_rect(gfx::Size(100, 100)); |
2504 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50)); | 2507 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50)); |
2505 | 2508 |
2506 std::unique_ptr<FakeRecordingSource> blue_recording = | 2509 std::unique_ptr<FakeRecordingSource> blue_recording = |
2507 FakeRecordingSource::CreateFilledRecordingSource(blue_rect.size()); | 2510 FakeRecordingSource::CreateFilledRecordingSource(blue_rect.size()); |
2508 SkPaint red_paint; | 2511 SkPaint red_paint; |
2509 red_paint.setColor(SK_ColorRED); | 2512 red_paint.setColor(SK_ColorRED); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2564 } | 2567 } |
2565 | 2568 |
2566 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. | 2569 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. |
2567 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) { | 2570 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) { |
2568 gfx::Rect viewport(this->device_viewport_size_); | 2571 gfx::Rect viewport(this->device_viewport_size_); |
2569 ResourceFormat texture_format = RGBA_8888; | 2572 ResourceFormat texture_format = RGBA_8888; |
2570 bool nearest_neighbor = false; | 2573 bool nearest_neighbor = false; |
2571 | 2574 |
2572 RenderPassId id(1, 1); | 2575 RenderPassId id(1, 1); |
2573 gfx::Transform transform_to_root; | 2576 gfx::Transform transform_to_root; |
2574 std::unique_ptr<RenderPass> pass = | 2577 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2575 CreateTestRenderPass(id, viewport, transform_to_root); | 2578 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2576 | 2579 |
2577 // One viewport-filling 0.5-opacity green quad. | 2580 // One viewport-filling 0.5-opacity green quad. |
2578 std::unique_ptr<FakeRecordingSource> green_recording = | 2581 std::unique_ptr<FakeRecordingSource> green_recording = |
2579 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); | 2582 FakeRecordingSource::CreateFilledRecordingSource(viewport.size()); |
2580 SkPaint green_paint; | 2583 SkPaint green_paint; |
2581 green_paint.setColor(SK_ColorGREEN); | 2584 green_paint.setColor(SK_ColorGREEN); |
2582 green_recording->add_draw_rect_with_paint(viewport, green_paint); | 2585 green_recording->add_draw_rect_with_paint(viewport, green_paint); |
2583 green_recording->Rerecord(); | 2586 green_recording->Rerecord(); |
2584 scoped_refptr<FakeRasterSource> green_raster_source = | 2587 scoped_refptr<FakeRasterSource> green_raster_source = |
2585 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false); | 2588 FakeRasterSource::CreateFromRecordingSource(green_recording.get(), false); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2646 // cheap in hardware. | 2649 // cheap in hardware. |
2647 if (!IsSoftwareRenderer<TypeParam>()) | 2650 if (!IsSoftwareRenderer<TypeParam>()) |
2648 return; | 2651 return; |
2649 | 2652 |
2650 gfx::Rect viewport(this->device_viewport_size_); | 2653 gfx::Rect viewport(this->device_viewport_size_); |
2651 ResourceFormat texture_format = RGBA_8888; | 2654 ResourceFormat texture_format = RGBA_8888; |
2652 bool nearest_neighbor = false; | 2655 bool nearest_neighbor = false; |
2653 | 2656 |
2654 RenderPassId id(1, 1); | 2657 RenderPassId id(1, 1); |
2655 gfx::Transform transform_to_root; | 2658 gfx::Transform transform_to_root; |
2656 std::unique_ptr<RenderPass> pass = | 2659 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2657 CreateTestRenderPass(id, viewport, transform_to_root); | 2660 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2658 | 2661 |
2659 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2); | 2662 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2); |
2660 ASSERT_NE(surface, nullptr); | 2663 ASSERT_NE(surface, nullptr); |
2661 SkCanvas* canvas = surface->getCanvas(); | 2664 SkCanvas* canvas = surface->getCanvas(); |
2662 canvas->drawPoint(0, 0, SK_ColorGREEN); | 2665 canvas->drawPoint(0, 0, SK_ColorGREEN); |
2663 canvas->drawPoint(0, 1, SK_ColorBLUE); | 2666 canvas->drawPoint(0, 1, SK_ColorBLUE); |
2664 canvas->drawPoint(1, 0, SK_ColorBLUE); | 2667 canvas->drawPoint(1, 0, SK_ColorBLUE); |
2665 canvas->drawPoint(1, 1, SK_ColorGREEN); | 2668 canvas->drawPoint(1, 1, SK_ColorGREEN); |
2666 | 2669 |
2667 std::unique_ptr<FakeRecordingSource> recording = | 2670 std::unique_ptr<FakeRecordingSource> recording = |
(...skipping 27 matching lines...) Expand all Loading... |
2695 } | 2698 } |
2696 | 2699 |
2697 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. | 2700 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. |
2698 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) { | 2701 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) { |
2699 gfx::Rect viewport(this->device_viewport_size_); | 2702 gfx::Rect viewport(this->device_viewport_size_); |
2700 ResourceFormat texture_format = RGBA_8888; | 2703 ResourceFormat texture_format = RGBA_8888; |
2701 bool nearest_neighbor = true; | 2704 bool nearest_neighbor = true; |
2702 | 2705 |
2703 RenderPassId id(1, 1); | 2706 RenderPassId id(1, 1); |
2704 gfx::Transform transform_to_root; | 2707 gfx::Transform transform_to_root; |
2705 std::unique_ptr<RenderPass> pass = | 2708 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2706 CreateTestRenderPass(id, viewport, transform_to_root); | 2709 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2707 | 2710 |
2708 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2); | 2711 sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(2, 2); |
2709 ASSERT_NE(surface, nullptr); | 2712 ASSERT_NE(surface, nullptr); |
2710 SkCanvas* canvas = surface->getCanvas(); | 2713 SkCanvas* canvas = surface->getCanvas(); |
2711 canvas->drawPoint(0, 0, SK_ColorGREEN); | 2714 canvas->drawPoint(0, 0, SK_ColorGREEN); |
2712 canvas->drawPoint(0, 1, SK_ColorBLUE); | 2715 canvas->drawPoint(0, 1, SK_ColorBLUE); |
2713 canvas->drawPoint(1, 0, SK_ColorBLUE); | 2716 canvas->drawPoint(1, 0, SK_ColorBLUE); |
2714 canvas->drawPoint(1, 1, SK_ColorGREEN); | 2717 canvas->drawPoint(1, 1, SK_ColorGREEN); |
2715 | 2718 |
2716 std::unique_ptr<FakeRecordingSource> recording = | 2719 std::unique_ptr<FakeRecordingSource> recording = |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2764 gfx::ColorSpace()); | 2767 gfx::ColorSpace()); |
2765 | 2768 |
2766 { | 2769 { |
2767 SkAutoLockPixels lock(bitmap); | 2770 SkAutoLockPixels lock(bitmap); |
2768 this->resource_provider_->CopyToResource( | 2771 this->resource_provider_->CopyToResource( |
2769 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); | 2772 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); |
2770 } | 2773 } |
2771 | 2774 |
2772 RenderPassId id(1, 1); | 2775 RenderPassId id(1, 1); |
2773 gfx::Transform transform_to_root; | 2776 gfx::Transform transform_to_root; |
2774 std::unique_ptr<RenderPass> pass = | 2777 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2775 CreateTestRenderPass(id, viewport, transform_to_root); | 2778 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2776 | 2779 |
2777 gfx::Transform quad_to_target_transform; | 2780 gfx::Transform quad_to_target_transform; |
2778 SharedQuadState* shared_state = | 2781 SharedQuadState* shared_state = |
2779 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); | 2782 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); |
2780 | 2783 |
2781 TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>(); | 2784 TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>(); |
2782 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, | 2785 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, |
2783 gfx::RectF(gfx::Rect(tile_size)), tile_size, swizzle_contents, | 2786 gfx::RectF(gfx::Rect(tile_size)), tile_size, swizzle_contents, |
2784 nearest_neighbor); | 2787 nearest_neighbor); |
2785 | 2788 |
(...skipping 29 matching lines...) Expand all Loading... |
2815 gfx::ColorSpace()); | 2818 gfx::ColorSpace()); |
2816 | 2819 |
2817 { | 2820 { |
2818 SkAutoLockPixels lock(bitmap); | 2821 SkAutoLockPixels lock(bitmap); |
2819 this->resource_provider_->CopyToResource( | 2822 this->resource_provider_->CopyToResource( |
2820 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); | 2823 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); |
2821 } | 2824 } |
2822 | 2825 |
2823 RenderPassId id(1, 1); | 2826 RenderPassId id(1, 1); |
2824 gfx::Transform transform_to_root; | 2827 gfx::Transform transform_to_root; |
2825 std::unique_ptr<RenderPass> pass = | 2828 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2826 CreateTestRenderPass(id, viewport, transform_to_root); | 2829 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2827 | 2830 |
2828 gfx::Transform quad_to_target_transform; | 2831 gfx::Transform quad_to_target_transform; |
2829 SharedQuadState* shared_state = | 2832 SharedQuadState* shared_state = |
2830 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); | 2833 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); |
2831 | 2834 |
2832 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; | 2835 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; |
2833 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 2836 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
2834 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false, | 2837 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false, |
2835 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK, | 2838 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK, |
2836 vertex_opacity, false, nearest_neighbor, false); | 2839 vertex_opacity, false, nearest_neighbor, false); |
(...skipping 30 matching lines...) Expand all Loading... |
2867 gfx::ColorSpace()); | 2870 gfx::ColorSpace()); |
2868 | 2871 |
2869 { | 2872 { |
2870 SkAutoLockPixels lock(bitmap); | 2873 SkAutoLockPixels lock(bitmap); |
2871 this->resource_provider_->CopyToResource( | 2874 this->resource_provider_->CopyToResource( |
2872 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); | 2875 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); |
2873 } | 2876 } |
2874 | 2877 |
2875 RenderPassId id(1, 1); | 2878 RenderPassId id(1, 1); |
2876 gfx::Transform transform_to_root; | 2879 gfx::Transform transform_to_root; |
2877 std::unique_ptr<RenderPass> pass = | 2880 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2878 CreateTestRenderPass(id, viewport, transform_to_root); | 2881 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2879 | 2882 |
2880 gfx::Transform quad_to_target_transform; | 2883 gfx::Transform quad_to_target_transform; |
2881 SharedQuadState* shared_state = | 2884 SharedQuadState* shared_state = |
2882 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); | 2885 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); |
2883 | 2886 |
2884 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; | 2887 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; |
2885 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 2888 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
2886 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false, | 2889 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, false, |
2887 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK, | 2890 gfx::PointF(0, 0), gfx::PointF(1, 1), SK_ColorBLACK, |
2888 vertex_opacity, false, nearest_neighbor, false); | 2891 vertex_opacity, false, nearest_neighbor, false); |
(...skipping 10 matching lines...) Expand all Loading... |
2899 } | 2902 } |
2900 | 2903 |
2901 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) { | 2904 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) { |
2902 gfx::Rect viewport(this->device_viewport_size_); | 2905 gfx::Rect viewport(this->device_viewport_size_); |
2903 // TODO(enne): the renderer should figure this out on its own. | 2906 // TODO(enne): the renderer should figure this out on its own. |
2904 ResourceFormat texture_format = RGBA_8888; | 2907 ResourceFormat texture_format = RGBA_8888; |
2905 bool nearest_neighbor = false; | 2908 bool nearest_neighbor = false; |
2906 | 2909 |
2907 RenderPassId id(1, 1); | 2910 RenderPassId id(1, 1); |
2908 gfx::Transform transform_to_root; | 2911 gfx::Transform transform_to_root; |
2909 std::unique_ptr<RenderPass> pass = | 2912 std::unique_ptr<RenderPass> pass = CreateTestRenderPass( |
2910 CreateTestRenderPass(id, viewport, transform_to_root); | 2913 id, viewport, transform_to_root, FilterOperations(), FilterOperations()); |
2911 | 2914 |
2912 // As scaling up the blue checkerboards will cause sampling on the GPU, | 2915 // As scaling up the blue checkerboards will cause sampling on the GPU, |
2913 // a few extra "cleanup rects" need to be added to clobber the blending | 2916 // a few extra "cleanup rects" need to be added to clobber the blending |
2914 // to make the output image more clean. This will also test subrects | 2917 // to make the output image more clean. This will also test subrects |
2915 // of the layer. | 2918 // of the layer. |
2916 gfx::Transform green_quad_to_target_transform; | 2919 gfx::Transform green_quad_to_target_transform; |
2917 gfx::Rect green_rect1(gfx::Point(80, 0), gfx::Size(20, 100)); | 2920 gfx::Rect green_rect1(gfx::Point(80, 0), gfx::Size(20, 100)); |
2918 gfx::Rect green_rect2(gfx::Point(0, 80), gfx::Size(100, 20)); | 2921 gfx::Rect green_rect2(gfx::Point(0, 80), gfx::Size(100, 20)); |
2919 | 2922 |
2920 std::unique_ptr<FakeRecordingSource> green_recording = | 2923 std::unique_ptr<FakeRecordingSource> green_recording = |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3048 gfx::Rect viewport_rect(this->device_viewport_size_); | 3051 gfx::Rect viewport_rect(this->device_viewport_size_); |
3049 | 3052 |
3050 RenderPassId root_pass_id(1, 1); | 3053 RenderPassId root_pass_id(1, 1); |
3051 std::unique_ptr<RenderPass> root_pass = | 3054 std::unique_ptr<RenderPass> root_pass = |
3052 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 3055 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
3053 | 3056 |
3054 RenderPassId child_pass_id(2, 2); | 3057 RenderPassId child_pass_id(2, 2); |
3055 gfx::Rect pass_rect(this->device_viewport_size_); | 3058 gfx::Rect pass_rect(this->device_viewport_size_); |
3056 gfx::Transform transform_to_root; | 3059 gfx::Transform transform_to_root; |
3057 std::unique_ptr<RenderPass> child_pass = | 3060 std::unique_ptr<RenderPass> child_pass = |
3058 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 3061 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root, |
| 3062 FilterOperations(), FilterOperations()); |
3059 | 3063 |
3060 gfx::Transform quad_to_target_transform; | 3064 gfx::Transform quad_to_target_transform; |
3061 SharedQuadState* shared_state = CreateTestSharedQuadState( | 3065 SharedQuadState* shared_state = CreateTestSharedQuadState( |
3062 quad_to_target_transform, viewport_rect, child_pass.get()); | 3066 quad_to_target_transform, viewport_rect, child_pass.get()); |
3063 | 3067 |
3064 gfx::Rect blue_rect(0, | 3068 gfx::Rect blue_rect(0, |
3065 0, | 3069 0, |
3066 this->device_viewport_size_.width(), | 3070 this->device_viewport_size_.width(), |
3067 this->device_viewport_size_.height() / 2); | 3071 this->device_viewport_size_.height() / 2); |
3068 SolidColorDrawQuad* blue = | 3072 SolidColorDrawQuad* blue = |
(...skipping 27 matching lines...) Expand all Loading... |
3096 gfx::Rect viewport_rect(this->device_viewport_size_); | 3100 gfx::Rect viewport_rect(this->device_viewport_size_); |
3097 | 3101 |
3098 RenderPassId root_pass_id(1, 1); | 3102 RenderPassId root_pass_id(1, 1); |
3099 std::unique_ptr<RenderPass> root_pass = | 3103 std::unique_ptr<RenderPass> root_pass = |
3100 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 3104 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
3101 | 3105 |
3102 RenderPassId child_pass_id(2, 2); | 3106 RenderPassId child_pass_id(2, 2); |
3103 gfx::Rect pass_rect(this->device_viewport_size_); | 3107 gfx::Rect pass_rect(this->device_viewport_size_); |
3104 gfx::Transform transform_to_root; | 3108 gfx::Transform transform_to_root; |
3105 std::unique_ptr<RenderPass> child_pass = | 3109 std::unique_ptr<RenderPass> child_pass = |
3106 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 3110 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root, |
| 3111 FilterOperations(), FilterOperations()); |
3107 | 3112 |
3108 gfx::Transform quad_to_target_transform; | 3113 gfx::Transform quad_to_target_transform; |
3109 SharedQuadState* shared_state = CreateTestSharedQuadState( | 3114 SharedQuadState* shared_state = CreateTestSharedQuadState( |
3110 quad_to_target_transform, viewport_rect, child_pass.get()); | 3115 quad_to_target_transform, viewport_rect, child_pass.get()); |
3111 | 3116 |
3112 gfx::Rect blue_rect(0, | 3117 gfx::Rect blue_rect(0, |
3113 0, | 3118 0, |
3114 this->device_viewport_size_.width(), | 3119 this->device_viewport_size_.width(), |
3115 this->device_viewport_size_.height() / 2); | 3120 this->device_viewport_size_.height() / 2); |
3116 SolidColorDrawQuad* blue = | 3121 SolidColorDrawQuad* blue = |
(...skipping 27 matching lines...) Expand all Loading... |
3144 gfx::Rect viewport_rect(this->device_viewport_size_); | 3149 gfx::Rect viewport_rect(this->device_viewport_size_); |
3145 | 3150 |
3146 RenderPassId root_pass_id(1, 1); | 3151 RenderPassId root_pass_id(1, 1); |
3147 std::unique_ptr<RenderPass> root_pass = | 3152 std::unique_ptr<RenderPass> root_pass = |
3148 CreateTestRootRenderPass(root_pass_id, viewport_rect); | 3153 CreateTestRootRenderPass(root_pass_id, viewport_rect); |
3149 | 3154 |
3150 RenderPassId child_pass_id(2, 2); | 3155 RenderPassId child_pass_id(2, 2); |
3151 gfx::Rect pass_rect(this->device_viewport_size_); | 3156 gfx::Rect pass_rect(this->device_viewport_size_); |
3152 gfx::Transform transform_to_root; | 3157 gfx::Transform transform_to_root; |
3153 std::unique_ptr<RenderPass> child_pass = | 3158 std::unique_ptr<RenderPass> child_pass = |
3154 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); | 3159 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root, |
| 3160 FilterOperations(), FilterOperations()); |
3155 | 3161 |
3156 gfx::Transform quad_to_target_transform; | 3162 gfx::Transform quad_to_target_transform; |
3157 SharedQuadState* shared_state = CreateTestSharedQuadState( | 3163 SharedQuadState* shared_state = CreateTestSharedQuadState( |
3158 quad_to_target_transform, viewport_rect, child_pass.get()); | 3164 quad_to_target_transform, viewport_rect, child_pass.get()); |
3159 | 3165 |
3160 // Draw a green quad full-size with a blue quad in the lower-right corner. | 3166 // Draw a green quad full-size with a blue quad in the lower-right corner. |
3161 gfx::Rect blue_rect(this->device_viewport_size_.width() * 3 / 4, | 3167 gfx::Rect blue_rect(this->device_viewport_size_.width() * 3 / 4, |
3162 this->device_viewport_size_.height() * 3 / 4, | 3168 this->device_viewport_size_.height() * 3 / 4, |
3163 this->device_viewport_size_.width() * 3 / 4, | 3169 this->device_viewport_size_.width() * 3 / 4, |
3164 this->device_viewport_size_.height() * 3 / 4); | 3170 this->device_viewport_size_.height() * 3 / 4); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3272 | 3278 |
3273 EXPECT_TRUE(this->RunPixelTest( | 3279 EXPECT_TRUE(this->RunPixelTest( |
3274 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")), | 3280 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")), |
3275 FuzzyPixelOffByOneComparator(true))); | 3281 FuzzyPixelOffByOneComparator(true))); |
3276 } | 3282 } |
3277 | 3283 |
3278 #endif // !defined(OS_ANDROID) | 3284 #endif // !defined(OS_ANDROID) |
3279 | 3285 |
3280 } // namespace | 3286 } // namespace |
3281 } // namespace cc | 3287 } // namespace cc |
OLD | NEW |