| OLD | NEW |
| 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 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "base/test/scoped_feature_list.h" |
| 11 #include "cc/base/filter_operation.h" | 12 #include "cc/base/filter_operation.h" |
| 12 #include "cc/base/region.h" | 13 #include "cc/base/region.h" |
| 13 #include "cc/output/ca_layer_overlay.h" | 14 #include "cc/output/ca_layer_overlay.h" |
| 14 #include "cc/output/gl_renderer.h" | 15 #include "cc/output/gl_renderer.h" |
| 15 #include "cc/output/output_surface.h" | 16 #include "cc/output/output_surface.h" |
| 16 #include "cc/output/output_surface_client.h" | 17 #include "cc/output/output_surface_client.h" |
| 17 #include "cc/output/output_surface_frame.h" | 18 #include "cc/output/output_surface_frame.h" |
| 18 #include "cc/output/overlay_candidate_validator.h" | 19 #include "cc/output/overlay_candidate_validator.h" |
| 19 #include "cc/output/overlay_processor.h" | 20 #include "cc/output/overlay_processor.h" |
| 20 #include "cc/output/overlay_strategy_fullscreen.h" | 21 #include "cc/output/overlay_strategy_fullscreen.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 31 #include "cc/test/fake_output_surface_client.h" | 32 #include "cc/test/fake_output_surface_client.h" |
| 32 #include "cc/test/fake_resource_provider.h" | 33 #include "cc/test/fake_resource_provider.h" |
| 33 #include "cc/test/geometry_test_utils.h" | 34 #include "cc/test/geometry_test_utils.h" |
| 34 #include "cc/test/test_context_provider.h" | 35 #include "cc/test/test_context_provider.h" |
| 35 #include "cc/test/test_shared_bitmap_manager.h" | 36 #include "cc/test/test_shared_bitmap_manager.h" |
| 36 #include "cc/test/test_web_graphics_context_3d.h" | 37 #include "cc/test/test_web_graphics_context_3d.h" |
| 37 #include "testing/gmock/include/gmock/gmock.h" | 38 #include "testing/gmock/include/gmock/gmock.h" |
| 38 #include "testing/gtest/include/gtest/gtest.h" | 39 #include "testing/gtest/include/gtest/gtest.h" |
| 39 #include "ui/events/latency_info.h" | 40 #include "ui/events/latency_info.h" |
| 40 #include "ui/gfx/geometry/rect_conversions.h" | 41 #include "ui/gfx/geometry/rect_conversions.h" |
| 42 #include "ui/gl/gl_switches.h" |
| 41 | 43 |
| 42 using testing::_; | 44 using testing::_; |
| 43 using testing::Mock; | 45 using testing::Mock; |
| 44 | 46 |
| 45 namespace cc { | 47 namespace cc { |
| 46 namespace { | 48 namespace { |
| 47 | 49 |
| 48 const gfx::Size kDisplaySize(256, 256); | 50 const gfx::Size kDisplaySize(256, 256); |
| 49 const gfx::Rect kOverlayRect(0, 0, 256, 256); | 51 const gfx::Rect kOverlayRect(0, 0, 256, 256); |
| 50 const gfx::Rect kOverlayTopLeftRect(0, 0, 128, 128); | 52 const gfx::Rect kOverlayTopLeftRect(0, 0, 128, 128); |
| (...skipping 1693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1744 resource_provider_.get(), pass.get(), render_pass_filters, | 1746 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1745 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, | 1747 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, |
| 1746 &damage_rect_, &content_bounds_); | 1748 &damage_rect_, &content_bounds_); |
| 1747 EXPECT_EQ(gfx::Rect(), damage_rect); | 1749 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1748 EXPECT_EQ(0U, overlay_list.size()); | 1750 EXPECT_EQ(0U, overlay_list.size()); |
| 1749 EXPECT_EQ(0U, ca_layer_list.size()); | 1751 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1750 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1752 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1751 } | 1753 } |
| 1752 | 1754 |
| 1753 TEST_F(DCLayerOverlayTest, AllowNonAxisAlignedTransform) { | 1755 TEST_F(DCLayerOverlayTest, AllowNonAxisAlignedTransform) { |
| 1756 base::test::ScopedFeatureList feature_list; |
| 1757 feature_list.InitAndEnableFeature( |
| 1758 features::kDirectCompositionComplexOverlays); |
| 1754 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1759 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1755 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), | 1760 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), |
| 1756 pass->shared_quad_state_list.back(), | 1761 pass->shared_quad_state_list.back(), |
| 1757 pass.get()); | 1762 pass.get()); |
| 1758 pass->shared_quad_state_list.back() | 1763 pass->shared_quad_state_list.back() |
| 1759 ->quad_to_target_transform.RotateAboutZAxis(45.f); | 1764 ->quad_to_target_transform.RotateAboutZAxis(45.f); |
| 1760 | 1765 |
| 1761 gfx::Rect damage_rect; | 1766 gfx::Rect damage_rect; |
| 1762 DCLayerOverlayList dc_layer_list; | 1767 DCLayerOverlayList dc_layer_list; |
| 1763 OverlayCandidateList overlay_list; | 1768 OverlayCandidateList overlay_list; |
| 1764 RenderPassFilterList render_pass_filters; | 1769 RenderPassFilterList render_pass_filters; |
| 1765 RenderPassFilterList render_pass_background_filters; | 1770 RenderPassFilterList render_pass_background_filters; |
| 1766 damage_rect_ = gfx::Rect(1, 1, 10, 10); | 1771 damage_rect_ = gfx::Rect(1, 1, 10, 10); |
| 1767 overlay_processor_->ProcessForOverlays( | 1772 overlay_processor_->ProcessForOverlays( |
| 1768 resource_provider_.get(), pass.get(), render_pass_filters, | 1773 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1769 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, | 1774 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, |
| 1770 &damage_rect_, &content_bounds_); | 1775 &damage_rect_, &content_bounds_); |
| 1771 EXPECT_EQ(gfx::Rect(), damage_rect); | 1776 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1772 EXPECT_EQ(0U, overlay_list.size()); | 1777 EXPECT_EQ(0U, overlay_list.size()); |
| 1773 EXPECT_EQ(1U, dc_layer_list.size()); | 1778 EXPECT_EQ(1U, dc_layer_list.size()); |
| 1774 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); | 1779 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); |
| 1775 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1780 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1776 EXPECT_EQ(gfx::Rect(1, 1, 10, 10), damage_rect_); | 1781 EXPECT_EQ(gfx::Rect(1, 1, 10, 10), damage_rect_); |
| 1777 } | 1782 } |
| 1778 | 1783 |
| 1779 TEST_F(DCLayerOverlayTest, Occluded) { | 1784 TEST_F(DCLayerOverlayTest, Occluded) { |
| 1785 base::test::ScopedFeatureList feature_list; |
| 1786 feature_list.InitAndEnableFeature(features::kDirectCompositionUnderlays); |
| 1780 { | 1787 { |
| 1781 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1788 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1782 CreateOpaqueQuadAt(resource_provider_.get(), | 1789 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1783 pass->shared_quad_state_list.back(), pass.get(), | 1790 pass->shared_quad_state_list.back(), pass.get(), |
| 1784 gfx::Rect(0, 2, 100, 100), SK_ColorWHITE); | 1791 gfx::Rect(0, 2, 100, 100), SK_ColorWHITE); |
| 1785 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), | 1792 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), |
| 1786 pass->shared_quad_state_list.back(), | 1793 pass->shared_quad_state_list.back(), |
| 1787 pass.get()); | 1794 pass.get()); |
| 1788 | 1795 |
| 1789 gfx::Rect damage_rect; | 1796 gfx::Rect damage_rect; |
| (...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2518 kOverlayRect, render_pass_id_, 2, gfx::RectF(), gfx::Size(), | 2525 kOverlayRect, render_pass_id_, 2, gfx::RectF(), gfx::Size(), |
| 2519 gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF()); | 2526 gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF()); |
| 2520 } | 2527 } |
| 2521 | 2528 |
| 2522 ProcessForOverlays(); | 2529 ProcessForOverlays(); |
| 2523 EXPECT_EQ(0U, ca_layer_list_.size()); | 2530 EXPECT_EQ(0U, ca_layer_list_.size()); |
| 2524 } | 2531 } |
| 2525 | 2532 |
| 2526 } // namespace | 2533 } // namespace |
| 2527 } // namespace cc | 2534 } // namespace cc |
| OLD | NEW |