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

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

Issue 2543473004: cc: Move filters from RenderPassDrawQuad to RenderPass (Closed)
Patch Set: Rebase again Created 4 years 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/overlay_unittest.cc ('k') | cc/output/software_renderer.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 <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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 return shared_state; 90 return shared_state;
91 } 91 }
92 92
93 void CreateTestRenderPassDrawQuad(const SharedQuadState* shared_state, 93 void CreateTestRenderPassDrawQuad(const SharedQuadState* shared_state,
94 const gfx::Rect& rect, 94 const gfx::Rect& rect,
95 int pass_id, 95 int pass_id,
96 RenderPass* render_pass) { 96 RenderPass* render_pass) {
97 RenderPassDrawQuad* quad = 97 RenderPassDrawQuad* quad =
98 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 98 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
99 quad->SetNew(shared_state, rect, rect, pass_id, 99 quad->SetNew(shared_state, rect, rect, pass_id,
100 0, // mask_resource_id 100 0, // mask_resource_id
101 gfx::Vector2dF(), // mask_uv_scale 101 gfx::Vector2dF(), // mask_uv_scale
102 gfx::Size(), // mask_texture_size 102 gfx::Size(), // mask_texture_size
103 FilterOperations(), // foreground filters 103 gfx::Vector2dF(), // filters scale
104 gfx::Vector2dF(), // filters scale 104 gfx::PointF()); // filter origin
105 gfx::PointF(), // filter origin
106 FilterOperations()); // background filters
107 } 105 }
108 106
109 void CreateTestTwoColoredTextureDrawQuad(const gfx::Rect& rect, 107 void CreateTestTwoColoredTextureDrawQuad(const gfx::Rect& rect,
110 SkColor texel_color, 108 SkColor texel_color,
111 SkColor texel_stripe_color, 109 SkColor texel_stripe_color,
112 SkColor background_color, 110 SkColor background_color,
113 bool premultiplied_alpha, 111 bool premultiplied_alpha,
114 const SharedQuadState* shared_state, 112 const SharedQuadState* shared_state,
115 ResourceProvider* resource_provider, 113 ResourceProvider* resource_provider,
116 RenderPass* render_pass) { 114 RenderPass* render_pass) {
(...skipping 1356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) { 1471 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) {
1474 gfx::Rect viewport_rect(this->device_viewport_size_); 1472 gfx::Rect viewport_rect(this->device_viewport_size_);
1475 1473
1476 int root_pass_id = 1; 1474 int root_pass_id = 1;
1477 std::unique_ptr<RenderPass> root_pass = 1475 std::unique_ptr<RenderPass> root_pass =
1478 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1476 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1479 1477
1480 int child_pass_id = 2; 1478 int child_pass_id = 2;
1481 gfx::Rect pass_rect(this->device_viewport_size_); 1479 gfx::Rect pass_rect(this->device_viewport_size_);
1482 gfx::Transform transform_to_root; 1480 gfx::Transform transform_to_root;
1481 SkScalar matrix[20];
1482 float amount = 0.5f;
1483 matrix[0] = 0.213f + 0.787f * amount;
1484 matrix[1] = 0.715f - 0.715f * amount;
1485 matrix[2] = 1.f - (matrix[0] + matrix[1]);
1486 matrix[3] = matrix[4] = 0;
1487 matrix[5] = 0.213f - 0.213f * amount;
1488 matrix[6] = 0.715f + 0.285f * amount;
1489 matrix[7] = 1.f - (matrix[5] + matrix[6]);
1490 matrix[8] = matrix[9] = 0;
1491 matrix[10] = 0.213f - 0.213f * amount;
1492 matrix[11] = 0.715f - 0.715f * amount;
1493 matrix[12] = 1.f - (matrix[10] + matrix[11]);
1494 matrix[13] = matrix[14] = 0;
1495 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
1496 matrix[18] = 1;
1497 FilterOperations filters;
1498 filters.Append(
1499 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make(
1500 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr)));
1501
1483 std::unique_ptr<RenderPass> child_pass = 1502 std::unique_ptr<RenderPass> child_pass =
1484 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1503 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1504 child_pass->filters = filters;
1485 1505
1486 gfx::Transform quad_to_target_transform; 1506 gfx::Transform quad_to_target_transform;
1487 SharedQuadState* shared_state = CreateTestSharedQuadState( 1507 SharedQuadState* shared_state = CreateTestSharedQuadState(
1488 quad_to_target_transform, viewport_rect, child_pass.get()); 1508 quad_to_target_transform, viewport_rect, child_pass.get());
1489 shared_state->opacity = 0.5f; 1509 shared_state->opacity = 0.5f;
1490 1510
1491 gfx::Rect blue_rect(0, 1511 gfx::Rect blue_rect(0,
1492 0, 1512 0,
1493 this->device_viewport_size_.width(), 1513 this->device_viewport_size_.width(),
1494 this->device_viewport_size_.height() / 2); 1514 this->device_viewport_size_.height() / 2);
(...skipping 12 matching lines...) Expand all
1507 quad_to_target_transform, viewport_rect, child_pass.get()); 1527 quad_to_target_transform, viewport_rect, child_pass.get());
1508 1528
1509 SolidColorDrawQuad* white = 1529 SolidColorDrawQuad* white =
1510 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1530 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1511 white->SetNew( 1531 white->SetNew(
1512 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); 1532 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false);
1513 1533
1514 SharedQuadState* pass_shared_state = 1534 SharedQuadState* pass_shared_state =
1515 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); 1535 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get());
1516 1536
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 = 1537 RenderPassDrawQuad* render_pass_quad =
1539 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 1538 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1540 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, 1539 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect,
1541 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), 1540 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(),
1542 filters, gfx::Vector2dF(), gfx::PointF(), 1541 gfx::Vector2dF(), gfx::PointF());
1543 FilterOperations());
1544 1542
1545 RenderPassList pass_list; 1543 RenderPassList pass_list;
1546 pass_list.push_back(std::move(child_pass)); 1544 pass_list.push_back(std::move(child_pass));
1547 pass_list.push_back(std::move(root_pass)); 1545 pass_list.push_back(std::move(root_pass));
1548 1546
1549 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl 1547 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl
1550 // renderer so use a fuzzy comparator. 1548 // renderer so use a fuzzy comparator.
1551 EXPECT_TRUE(this->RunPixelTest( 1549 EXPECT_TRUE(this->RunPixelTest(
1552 &pass_list, 1550 &pass_list,
1553 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), 1551 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")),
1554 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); 1552 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
1555 } 1553 }
1556 1554
1557 TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) { 1555 TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) {
1558 gfx::Rect viewport_rect(this->device_viewport_size_); 1556 gfx::Rect viewport_rect(this->device_viewport_size_);
1559 1557
1560 int root_pass_id = 1; 1558 int root_pass_id = 1;
1561 std::unique_ptr<RenderPass> root_pass = 1559 std::unique_ptr<RenderPass> root_pass =
1562 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1560 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1563 1561
1564 int child_pass_id = 2; 1562 int child_pass_id = 2;
1565 gfx::Rect pass_rect(this->device_viewport_size_); 1563 gfx::Rect pass_rect(this->device_viewport_size_);
1566 gfx::Transform transform_to_root; 1564 gfx::Transform transform_to_root;
1565 FilterOperations filters;
1566 filters.Append(FilterOperation::CreateSaturateFilter(0.5f));
1567
1567 std::unique_ptr<RenderPass> child_pass = 1568 std::unique_ptr<RenderPass> child_pass =
1568 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1569 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1570 child_pass->filters = filters;
1569 1571
1570 gfx::Transform quad_to_target_transform; 1572 gfx::Transform quad_to_target_transform;
1571 SharedQuadState* shared_state = CreateTestSharedQuadState( 1573 SharedQuadState* shared_state = CreateTestSharedQuadState(
1572 quad_to_target_transform, viewport_rect, child_pass.get()); 1574 quad_to_target_transform, viewport_rect, child_pass.get());
1573 shared_state->opacity = 0.5f; 1575 shared_state->opacity = 0.5f;
1574 1576
1575 gfx::Rect blue_rect(0, 1577 gfx::Rect blue_rect(0,
1576 0, 1578 0,
1577 this->device_viewport_size_.width(), 1579 this->device_viewport_size_.width(),
1578 this->device_viewport_size_.height() / 2); 1580 this->device_viewport_size_.height() / 2);
(...skipping 12 matching lines...) Expand all
1591 quad_to_target_transform, viewport_rect, child_pass.get()); 1593 quad_to_target_transform, viewport_rect, child_pass.get());
1592 1594
1593 SolidColorDrawQuad* white = 1595 SolidColorDrawQuad* white =
1594 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1596 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1595 white->SetNew( 1597 white->SetNew(
1596 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); 1598 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false);
1597 1599
1598 SharedQuadState* pass_shared_state = 1600 SharedQuadState* pass_shared_state =
1599 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); 1601 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get());
1600 1602
1601 FilterOperations filters;
1602 filters.Append(FilterOperation::CreateSaturateFilter(0.5f));
1603
1604 RenderPassDrawQuad* render_pass_quad = 1603 RenderPassDrawQuad* render_pass_quad =
1605 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 1604 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1606 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, 1605 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect,
1607 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), 1606 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(),
1608 filters, gfx::Vector2dF(), gfx::PointF(), 1607 gfx::Vector2dF(), gfx::PointF());
1609 FilterOperations());
1610 1608
1611 RenderPassList pass_list; 1609 RenderPassList pass_list;
1612 pass_list.push_back(std::move(child_pass)); 1610 pass_list.push_back(std::move(child_pass));
1613 pass_list.push_back(std::move(root_pass)); 1611 pass_list.push_back(std::move(root_pass));
1614 1612
1615 // This test blends slightly differently with the software renderer vs. the gl 1613 // This test blends slightly differently with the software renderer vs. the gl
1616 // renderer so use a fuzzy comparator. 1614 // renderer so use a fuzzy comparator.
1617 EXPECT_TRUE(this->RunPixelTest( 1615 EXPECT_TRUE(this->RunPixelTest(
1618 &pass_list, base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), 1616 &pass_list, base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")),
1619 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); 1617 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
1620 } 1618 }
1621 1619
1622 TYPED_TEST(RendererPixelTest, FastPassFilterChain) { 1620 TYPED_TEST(RendererPixelTest, FastPassFilterChain) {
1623 gfx::Rect viewport_rect(this->device_viewport_size_); 1621 gfx::Rect viewport_rect(this->device_viewport_size_);
1624 1622
1625 int root_pass_id = 1; 1623 int root_pass_id = 1;
1626 std::unique_ptr<RenderPass> root_pass = 1624 std::unique_ptr<RenderPass> root_pass =
1627 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1625 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1628 1626
1629 int child_pass_id = 2; 1627 int child_pass_id = 2;
1630 gfx::Rect pass_rect(this->device_viewport_size_); 1628 gfx::Rect pass_rect(this->device_viewport_size_);
1631 gfx::Transform transform_to_root; 1629 gfx::Transform transform_to_root;
1630 FilterOperations filters;
1631 filters.Append(FilterOperation::CreateGrayscaleFilter(1.f));
1632 filters.Append(FilterOperation::CreateBrightnessFilter(0.5f));
1633
1632 std::unique_ptr<RenderPass> child_pass = 1634 std::unique_ptr<RenderPass> child_pass =
1633 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1635 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1636 child_pass->filters = filters;
1634 1637
1635 gfx::Transform quad_to_target_transform; 1638 gfx::Transform quad_to_target_transform;
1636 SharedQuadState* shared_state = CreateTestSharedQuadState( 1639 SharedQuadState* shared_state = CreateTestSharedQuadState(
1637 quad_to_target_transform, viewport_rect, child_pass.get()); 1640 quad_to_target_transform, viewport_rect, child_pass.get());
1638 shared_state->opacity = 0.5f; 1641 shared_state->opacity = 0.5f;
1639 1642
1640 gfx::Rect blue_rect(0, 1643 gfx::Rect blue_rect(0,
1641 0, 1644 0,
1642 this->device_viewport_size_.width(), 1645 this->device_viewport_size_.width(),
1643 this->device_viewport_size_.height() / 2); 1646 this->device_viewport_size_.height() / 2);
(...skipping 12 matching lines...) Expand all
1656 quad_to_target_transform, viewport_rect, child_pass.get()); 1659 quad_to_target_transform, viewport_rect, child_pass.get());
1657 1660
1658 SolidColorDrawQuad* white = 1661 SolidColorDrawQuad* white =
1659 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1662 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1660 white->SetNew( 1663 white->SetNew(
1661 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); 1664 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false);
1662 1665
1663 SharedQuadState* pass_shared_state = 1666 SharedQuadState* pass_shared_state =
1664 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); 1667 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get());
1665 1668
1666 FilterOperations filters;
1667 filters.Append(FilterOperation::CreateGrayscaleFilter(1.f));
1668 filters.Append(FilterOperation::CreateBrightnessFilter(0.5f));
1669
1670 RenderPassDrawQuad* render_pass_quad = 1669 RenderPassDrawQuad* render_pass_quad =
1671 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 1670 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1672 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, 1671 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect,
1673 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), 1672 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(),
1674 filters, gfx::Vector2dF(), gfx::PointF(), 1673 gfx::Vector2dF(), gfx::PointF());
1675 FilterOperations());
1676 1674
1677 RenderPassList pass_list; 1675 RenderPassList pass_list;
1678 pass_list.push_back(std::move(child_pass)); 1676 pass_list.push_back(std::move(child_pass));
1679 pass_list.push_back(std::move(root_pass)); 1677 pass_list.push_back(std::move(root_pass));
1680 1678
1681 // This test blends slightly differently with the software renderer vs. the gl 1679 // This test blends slightly differently with the software renderer vs. the gl
1682 // renderer so use a fuzzy comparator. 1680 // renderer so use a fuzzy comparator.
1683 EXPECT_TRUE(this->RunPixelTest( 1681 EXPECT_TRUE(this->RunPixelTest(
1684 &pass_list, 1682 &pass_list,
1685 base::FilePath(FILE_PATH_LITERAL("blue_yellow_filter_chain.png")), 1683 base::FilePath(FILE_PATH_LITERAL("blue_yellow_filter_chain.png")),
1686 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false))); 1684 FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
1687 } 1685 }
1688 1686
1689 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) { 1687 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) {
1690 gfx::Rect viewport_rect(this->device_viewport_size_); 1688 gfx::Rect viewport_rect(this->device_viewport_size_);
1691 1689
1692 int root_pass_id = 1; 1690 int root_pass_id = 1;
1693 std::unique_ptr<RenderPass> root_pass = 1691 std::unique_ptr<RenderPass> root_pass =
1694 CreateTestRootRenderPass(root_pass_id, viewport_rect); 1692 CreateTestRootRenderPass(root_pass_id, viewport_rect);
1695 1693
1696 int child_pass_id = 2; 1694 int child_pass_id = 2;
1697 gfx::Rect pass_rect(this->device_viewport_size_); 1695 gfx::Rect pass_rect(this->device_viewport_size_);
1698 gfx::Transform transform_to_root; 1696 gfx::Transform transform_to_root;
1697 SkScalar matrix[20];
1698 float amount = 0.5f;
1699 matrix[0] = 0.213f + 0.787f * amount;
1700 matrix[1] = 0.715f - 0.715f * amount;
1701 matrix[2] = 1.f - (matrix[0] + matrix[1]);
1702 matrix[3] = 0;
1703 matrix[4] = 20.f;
1704 matrix[5] = 0.213f - 0.213f * amount;
1705 matrix[6] = 0.715f + 0.285f * amount;
1706 matrix[7] = 1.f - (matrix[5] + matrix[6]);
1707 matrix[8] = 0;
1708 matrix[9] = 200.f;
1709 matrix[10] = 0.213f - 0.213f * amount;
1710 matrix[11] = 0.715f - 0.715f * amount;
1711 matrix[12] = 1.f - (matrix[10] + matrix[11]);
1712 matrix[13] = 0;
1713 matrix[14] = 1.5f;
1714 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
1715 matrix[18] = 1;
1716 FilterOperations filters;
1717 filters.Append(
1718 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make(
1719 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr)));
1720
1699 std::unique_ptr<RenderPass> child_pass = 1721 std::unique_ptr<RenderPass> child_pass =
1700 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root); 1722 CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
1723 child_pass->filters = filters;
1701 1724
1702 gfx::Transform quad_to_target_transform; 1725 gfx::Transform quad_to_target_transform;
1703 SharedQuadState* shared_state = CreateTestSharedQuadState( 1726 SharedQuadState* shared_state = CreateTestSharedQuadState(
1704 quad_to_target_transform, viewport_rect, child_pass.get()); 1727 quad_to_target_transform, viewport_rect, child_pass.get());
1705 shared_state->opacity = 0.5f; 1728 shared_state->opacity = 0.5f;
1706 1729
1707 gfx::Rect blue_rect(0, 1730 gfx::Rect blue_rect(0,
1708 0, 1731 0,
1709 this->device_viewport_size_.width(), 1732 this->device_viewport_size_.width(),
1710 this->device_viewport_size_.height() / 2); 1733 this->device_viewport_size_.height() / 2);
(...skipping 12 matching lines...) Expand all
1723 quad_to_target_transform, viewport_rect, child_pass.get()); 1746 quad_to_target_transform, viewport_rect, child_pass.get());
1724 1747
1725 SolidColorDrawQuad* white = 1748 SolidColorDrawQuad* white =
1726 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1749 child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1727 white->SetNew( 1750 white->SetNew(
1728 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false); 1751 blank_state, viewport_rect, viewport_rect, SK_ColorWHITE, false);
1729 1752
1730 SharedQuadState* pass_shared_state = 1753 SharedQuadState* pass_shared_state =
1731 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get()); 1754 CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get());
1732 1755
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 = 1756 RenderPassDrawQuad* render_pass_quad =
1758 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 1757 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1759 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect, 1758 render_pass_quad->SetNew(pass_shared_state, pass_rect, pass_rect,
1760 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(), 1759 child_pass_id, 0, gfx::Vector2dF(), gfx::Size(),
1761 filters, gfx::Vector2dF(), gfx::PointF(), 1760 gfx::Vector2dF(), gfx::PointF());
1762 FilterOperations());
1763 1761
1764 RenderPassList pass_list; 1762 RenderPassList pass_list;
1765 1763
1766 pass_list.push_back(std::move(child_pass)); 1764 pass_list.push_back(std::move(child_pass));
1767 pass_list.push_back(std::move(root_pass)); 1765 pass_list.push_back(std::move(root_pass));
1768 1766
1769 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl 1767 // This test has alpha=254 for the software renderer vs. alpha=255 for the gl
1770 // renderer so use a fuzzy comparator. 1768 // renderer so use a fuzzy comparator.
1771 EXPECT_TRUE(this->RunPixelTest( 1769 EXPECT_TRUE(this->RunPixelTest(
1772 &pass_list, 1770 &pass_list,
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1949 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); 1947 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom());
1950 1948
1951 // Set up a mask on the RenderPassDrawQuad. 1949 // Set up a mask on the RenderPassDrawQuad.
1952 RenderPassDrawQuad* mask_quad = 1950 RenderPassDrawQuad* mask_quad =
1953 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 1951 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1954 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id, 1952 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id,
1955 mask_resource_id, 1953 mask_resource_id,
1956 gfx::Vector2dF(2.f / mask_rect.width(), 1954 gfx::Vector2dF(2.f / mask_rect.width(),
1957 2.f / mask_rect.height()), // mask_uv_scale 1955 2.f / mask_rect.height()), // mask_uv_scale
1958 gfx::Size(mask_rect.size()), // mask_texture_size 1956 gfx::Size(mask_rect.size()), // mask_texture_size
1959 FilterOperations(), // foreground filters
1960 gfx::Vector2dF(), // filters scale 1957 gfx::Vector2dF(), // filters scale
1961 gfx::PointF(), // filter origin 1958 gfx::PointF()); // filter origin
1962 FilterOperations()); // background filters
1963 1959
1964 // White background behind the masked render pass. 1960 // White background behind the masked render pass.
1965 SolidColorDrawQuad* white = 1961 SolidColorDrawQuad* white =
1966 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 1962 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
1967 white->SetNew(root_pass_shared_state, 1963 white->SetNew(root_pass_shared_state,
1968 viewport_rect, 1964 viewport_rect,
1969 viewport_rect, 1965 viewport_rect,
1970 SK_ColorWHITE, 1966 SK_ColorWHITE,
1971 false); 1967 false);
1972 1968
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2044 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); 2040 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom());
2045 2041
2046 // Set up a mask on the RenderPassDrawQuad. 2042 // Set up a mask on the RenderPassDrawQuad.
2047 RenderPassDrawQuad* mask_quad = 2043 RenderPassDrawQuad* mask_quad =
2048 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 2044 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
2049 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id, 2045 mask_quad->SetNew(root_pass_shared_state, sub_rect, sub_rect, child_pass_id,
2050 mask_resource_id, 2046 mask_resource_id,
2051 gfx::Vector2dF(2.f / mask_rect.width(), 2047 gfx::Vector2dF(2.f / mask_rect.width(),
2052 2.f / mask_rect.height()), // mask_uv_scale 2048 2.f / mask_rect.height()), // mask_uv_scale
2053 gfx::Size(mask_rect.size()), // mask_texture_size 2049 gfx::Size(mask_rect.size()), // mask_texture_size
2054 FilterOperations(), // foreground filters
2055 gfx::Vector2dF(), // filters scale 2050 gfx::Vector2dF(), // filters scale
2056 gfx::PointF(), // filter origin 2051 gfx::PointF()); // filter origin
2057 FilterOperations()); // background filters
2058 2052
2059 // White background behind the masked render pass. 2053 // White background behind the masked render pass.
2060 SolidColorDrawQuad* white = 2054 SolidColorDrawQuad* white =
2061 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2055 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
2062 white->SetNew(root_pass_shared_state, viewport_rect, viewport_rect, 2056 white->SetNew(root_pass_shared_state, viewport_rect, viewport_rect,
2063 SK_ColorWHITE, false); 2057 SK_ColorWHITE, false);
2064 2058
2065 RenderPassList pass_list; 2059 RenderPassList pass_list;
2066 pass_list.push_back(std::move(child_pass)); 2060 pass_list.push_back(std::move(child_pass));
2067 pass_list.push_back(std::move(root_pass)); 2061 pass_list.push_back(std::move(root_pass));
(...skipping 14 matching lines...) Expand all
2082 std::unique_ptr<RenderPass> root_pass = 2076 std::unique_ptr<RenderPass> root_pass =
2083 CreateTestRootRenderPass(root_id, device_viewport_rect); 2077 CreateTestRootRenderPass(root_id, device_viewport_rect);
2084 root_pass->has_transparent_background = false; 2078 root_pass->has_transparent_background = false;
2085 2079
2086 gfx::Transform identity_quad_to_target_transform; 2080 gfx::Transform identity_quad_to_target_transform;
2087 2081
2088 int filter_pass_id = 2; 2082 int filter_pass_id = 2;
2089 gfx::Transform transform_to_root; 2083 gfx::Transform transform_to_root;
2090 std::unique_ptr<RenderPass> filter_pass = CreateTestRenderPass( 2084 std::unique_ptr<RenderPass> filter_pass = CreateTestRenderPass(
2091 filter_pass_id, filter_pass_layer_rect_, transform_to_root); 2085 filter_pass_id, filter_pass_layer_rect_, transform_to_root);
2086 filter_pass->background_filters = this->background_filters_;
2092 2087
2093 // A non-visible quad in the filtering render pass. 2088 // A non-visible quad in the filtering render pass.
2094 { 2089 {
2095 SharedQuadState* shared_state = 2090 SharedQuadState* shared_state =
2096 CreateTestSharedQuadState(identity_quad_to_target_transform, 2091 CreateTestSharedQuadState(identity_quad_to_target_transform,
2097 filter_pass_layer_rect_, filter_pass.get()); 2092 filter_pass_layer_rect_, filter_pass.get());
2098 SolidColorDrawQuad* color_quad = 2093 SolidColorDrawQuad* color_quad =
2099 filter_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2094 filter_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
2100 color_quad->SetNew(shared_state, filter_pass_layer_rect_, 2095 color_quad->SetNew(shared_state, filter_pass_layer_rect_,
2101 filter_pass_layer_rect_, SK_ColorTRANSPARENT, false); 2096 filter_pass_layer_rect_, SK_ColorTRANSPARENT, false);
2102 } 2097 }
2103 2098
2104 { 2099 {
2105 SharedQuadState* shared_state = 2100 SharedQuadState* shared_state =
2106 CreateTestSharedQuadState(filter_pass_to_target_transform_, 2101 CreateTestSharedQuadState(filter_pass_to_target_transform_,
2107 filter_pass_layer_rect_, filter_pass.get()); 2102 filter_pass_layer_rect_, filter_pass.get());
2108 RenderPassDrawQuad* filter_pass_quad = 2103 RenderPassDrawQuad* filter_pass_quad =
2109 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 2104 root_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
2110 filter_pass_quad->SetNew(shared_state, filter_pass_layer_rect_, 2105 filter_pass_quad->SetNew(shared_state, filter_pass_layer_rect_,
2111 filter_pass_layer_rect_, filter_pass_id, 2106 filter_pass_layer_rect_, filter_pass_id,
2112 0, // mask_resource_id 2107 0, // mask_resource_id
2113 gfx::Vector2dF(), // mask_uv_scale 2108 gfx::Vector2dF(), // mask_uv_scale
2114 gfx::Size(), // mask_texture_size 2109 gfx::Size(), // mask_texture_size
2115 FilterOperations(), // filters
2116 gfx::Vector2dF(1.0f, 1.0f), // filters_scale 2110 gfx::Vector2dF(1.0f, 1.0f), // filters_scale
2117 gfx::PointF(), // filters_origin 2111 gfx::PointF()); // filters_origin
2118 this->background_filters_);
2119 } 2112 }
2120 2113
2121 const int kColumnWidth = device_viewport_rect.width() / 3; 2114 const int kColumnWidth = device_viewport_rect.width() / 3;
2122 2115
2123 gfx::Rect left_rect = gfx::Rect(0, 0, kColumnWidth, 20); 2116 gfx::Rect left_rect = gfx::Rect(0, 0, kColumnWidth, 20);
2124 for (int i = 0; left_rect.y() < device_viewport_rect.height(); ++i) { 2117 for (int i = 0; left_rect.y() < device_viewport_rect.height(); ++i) {
2125 SharedQuadState* shared_state = CreateTestSharedQuadState( 2118 SharedQuadState* shared_state = CreateTestSharedQuadState(
2126 identity_quad_to_target_transform, left_rect, root_pass.get()); 2119 identity_quad_to_target_transform, left_rect, root_pass.get());
2127 SolidColorDrawQuad* color_quad = 2120 SolidColorDrawQuad* color_quad =
2128 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 2121 root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
(...skipping 1142 matching lines...) Expand 10 before | Expand all | Expand 10 after
3271 3264
3272 EXPECT_TRUE(this->RunPixelTest( 3265 EXPECT_TRUE(this->RunPixelTest(
3273 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")), 3266 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")),
3274 FuzzyPixelOffByOneComparator(true))); 3267 FuzzyPixelOffByOneComparator(true)));
3275 } 3268 }
3276 3269
3277 #endif // !defined(OS_ANDROID) 3270 #endif // !defined(OS_ANDROID)
3278 3271
3279 } // namespace 3272 } // namespace
3280 } // namespace cc 3273 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_unittest.cc ('k') | cc/output/software_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698