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

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

Issue 2164613003: Add logic to convert from RenderPassDrawQuads to CALayerOverlays. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@temp41_rpdq_converter
Patch Set: Compile errors. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/output/ca_layer_overlay.cc ('k') | tools/metrics/histograms/histograms.xml » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "cc/base/region.h" 10 #include "cc/base/region.h"
11 #include "cc/output/ca_layer_overlay.h"
11 #include "cc/output/compositor_frame.h" 12 #include "cc/output/compositor_frame.h"
12 #include "cc/output/compositor_frame_metadata.h" 13 #include "cc/output/compositor_frame_metadata.h"
14 #include "cc/output/filter_operation.h"
13 #include "cc/output/gl_renderer.h" 15 #include "cc/output/gl_renderer.h"
14 #include "cc/output/output_surface.h" 16 #include "cc/output/output_surface.h"
15 #include "cc/output/output_surface_client.h" 17 #include "cc/output/output_surface_client.h"
16 #include "cc/output/overlay_candidate_validator.h" 18 #include "cc/output/overlay_candidate_validator.h"
17 #include "cc/output/overlay_processor.h" 19 #include "cc/output/overlay_processor.h"
18 #include "cc/output/overlay_strategy_fullscreen.h" 20 #include "cc/output/overlay_strategy_fullscreen.h"
19 #include "cc/output/overlay_strategy_single_on_top.h" 21 #include "cc/output/overlay_strategy_single_on_top.h"
20 #include "cc/output/overlay_strategy_underlay.h" 22 #include "cc/output/overlay_strategy_underlay.h"
21 #include "cc/quads/render_pass.h" 23 #include "cc/quads/render_pass.h"
24 #include "cc/quads/render_pass_draw_quad.h"
22 #include "cc/quads/solid_color_draw_quad.h" 25 #include "cc/quads/solid_color_draw_quad.h"
23 #include "cc/quads/stream_video_draw_quad.h" 26 #include "cc/quads/stream_video_draw_quad.h"
24 #include "cc/quads/texture_draw_quad.h" 27 #include "cc/quads/texture_draw_quad.h"
25 #include "cc/resources/resource_provider.h" 28 #include "cc/resources/resource_provider.h"
26 #include "cc/resources/texture_mailbox.h" 29 #include "cc/resources/texture_mailbox.h"
27 #include "cc/test/fake_output_surface_client.h" 30 #include "cc/test/fake_output_surface_client.h"
28 #include "cc/test/fake_resource_provider.h" 31 #include "cc/test/fake_resource_provider.h"
29 #include "cc/test/geometry_test_utils.h" 32 #include "cc/test/geometry_test_utils.h"
30 #include "cc/test/test_context_provider.h" 33 #include "cc/test/test_context_provider.h"
31 #include "cc/test/test_shared_bitmap_manager.h" 34 #include "cc/test/test_shared_bitmap_manager.h"
(...skipping 1703 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1738 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1736 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1739 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1737 1740
1738 ReturnResourceInUseQuery(resource2); 1741 ReturnResourceInUseQuery(resource2);
1739 ReturnResourceInUseQuery(resource3); 1742 ReturnResourceInUseQuery(resource3);
1740 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1743 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1741 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1744 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1742 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); 1745 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3));
1743 } 1746 }
1744 1747
1748 class CALayerOverlayRPDQTest : public CALayerOverlayTest {
1749 protected:
1750 void SetUp() override {
1751 CALayerOverlayTest::SetUp();
1752 EnableRenderPassDrawQuadForTesting();
1753 pass_ = CreateRenderPass();
1754 quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1755 render_pass_id_.layer_id = 3;
1756 render_pass_id_.index = 17;
1757 }
1758
1759 void ProcessForOverlays() {
1760 gfx::Rect damage_rect;
1761 overlay_list_ = BackbufferOverlayList(pass_.get());
1762 overlay_processor_->ProcessForOverlays(resource_provider_.get(),
1763 pass_.get(), &overlay_list_,
1764 &ca_layer_list_, &damage_rect);
1765 }
1766 std::unique_ptr<RenderPass> pass_;
1767 RenderPassDrawQuad* quad_;
1768 RenderPassId render_pass_id_;
1769 FilterOperations filters_;
1770 FilterOperations background_filters_;
1771 CALayerOverlayList ca_layer_list_;
1772 OverlayCandidateList overlay_list_;
1773 };
1774
1775 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadNoFilters) {
1776 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1777 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1778 filters_, gfx::Vector2dF(1, 1), background_filters_);
1779 ProcessForOverlays();
1780
1781 EXPECT_EQ(1U, ca_layer_list_.size());
1782 CALayerOverlay overlay = ca_layer_list_[0];
1783 EXPECT_EQ(render_pass_id_, overlay.render_pass_id);
1784 }
1785
1786 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadAllValidFilters) {
1787 filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f));
1788 filters_.Append(FilterOperation::CreateSepiaFilter(0.2f));
1789 filters_.Append(FilterOperation::CreateSaturateFilter(0.3f));
1790 filters_.Append(FilterOperation::CreateHueRotateFilter(0.4f));
1791 filters_.Append(FilterOperation::CreateInvertFilter(0.5f));
1792 filters_.Append(FilterOperation::CreateBrightnessFilter(0.6f));
1793 filters_.Append(FilterOperation::CreateContrastFilter(0.7f));
1794 filters_.Append(FilterOperation::CreateOpacityFilter(0.8f));
1795 filters_.Append(FilterOperation::CreateBlurFilter(0.9f));
1796 filters_.Append(FilterOperation::CreateDropShadowFilter(gfx::Point(10, 20),
1797 1.0f, SK_ColorGREEN));
1798 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1799 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1800 filters_, gfx::Vector2dF(1, 1), background_filters_);
1801 ProcessForOverlays();
1802
1803 EXPECT_EQ(1U, ca_layer_list_.size());
1804
1805 CALayerOverlay overlay = ca_layer_list_[0];
1806 EXPECT_EQ(10u, overlay.filter_effects.size());
1807 for (size_t i = 0; i < 10; ++i) {
1808 ui::CARendererLayerParams::FilterEffect effect = overlay.filter_effects[i];
1809 EXPECT_FLOAT_EQ((i + 1) / 10.0f, effect.amount);
1810
1811 if (effect.type ==
1812 ui::CARendererLayerParams::FilterEffectType::DROP_SHADOW) {
1813 EXPECT_EQ(10, effect.drop_shadow_offset.x());
1814 EXPECT_EQ(20, effect.drop_shadow_offset.y());
1815 EXPECT_EQ(SK_ColorGREEN, effect.drop_shadow_color);
1816 }
1817 }
1818 }
1819
1820 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadFilterScale) {
1821 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1822 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1823 filters_, gfx::Vector2dF(1, 2), background_filters_);
1824 ProcessForOverlays();
1825 EXPECT_EQ(0U, ca_layer_list_.size());
1826 }
1827
1828 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadBackgroundFilter) {
1829 background_filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f));
1830 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1831 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1832 filters_, gfx::Vector2dF(1, 1), background_filters_);
1833 ProcessForOverlays();
1834 EXPECT_EQ(0U, ca_layer_list_.size());
1835 }
1836
1837 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadMask) {
1838 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1839 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(), gfx::Size(),
1840 filters_, gfx::Vector2dF(1, 1), background_filters_);
1841 ProcessForOverlays();
1842 EXPECT_EQ(0U, ca_layer_list_.size());
1843 }
1844
1845 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadUnsupportedFilter) {
1846 filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1));
1847 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1848 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1849 filters_, gfx::Vector2dF(1, 1), background_filters_);
1850 ProcessForOverlays();
1851 EXPECT_EQ(0U, ca_layer_list_.size());
1852 }
1853
1745 } // namespace 1854 } // namespace
1746 } // namespace cc 1855 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/ca_layer_overlay.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698