| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 } | 173 } |
| 174 | 174 |
| 175 virtual bool CreateHostImpl(const LayerTreeSettings& settings, | 175 virtual bool CreateHostImpl(const LayerTreeSettings& settings, |
| 176 scoped_ptr<OutputSurface> output_surface) { | 176 scoped_ptr<OutputSurface> output_surface) { |
| 177 host_impl_ = LayerTreeHostImpl::Create( | 177 host_impl_ = LayerTreeHostImpl::Create( |
| 178 settings, this, &proxy_, &stats_instrumentation_, | 178 settings, this, &proxy_, &stats_instrumentation_, |
| 179 shared_bitmap_manager_.get(), gpu_memory_buffer_manager_.get(), | 179 shared_bitmap_manager_.get(), gpu_memory_buffer_manager_.get(), |
| 180 task_graph_runner_.get(), 0); | 180 task_graph_runner_.get(), 0); |
| 181 bool init = host_impl_->InitializeRenderer(output_surface.Pass()); | 181 bool init = host_impl_->InitializeRenderer(output_surface.Pass()); |
| 182 host_impl_->SetViewportSize(gfx::Size(10, 10)); | 182 host_impl_->SetViewportSize(gfx::Size(10, 10)); |
| 183 // Set the BeginFrameArgs so that methods which use it are able to. | |
| 184 host_impl_->WillBeginImplFrame( | |
| 185 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | |
| 186 return init; | 183 return init; |
| 187 } | 184 } |
| 188 | 185 |
| 189 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { | 186 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { |
| 190 root->SetPosition(gfx::PointF()); | 187 root->SetPosition(gfx::PointF()); |
| 191 root->SetBounds(gfx::Size(10, 10)); | 188 root->SetBounds(gfx::Size(10, 10)); |
| 192 root->SetContentBounds(gfx::Size(10, 10)); | 189 root->SetContentBounds(gfx::Size(10, 10)); |
| 193 root->SetDrawsContent(true); | 190 root->SetDrawsContent(true); |
| 194 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); | 191 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); |
| 195 root->SetHasRenderSurface(true); | 192 root->SetHasRenderSurface(true); |
| (...skipping 4850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5046 | 5043 |
| 5047 // This test creates its own LayerTreeHostImpl, so | 5044 // This test creates its own LayerTreeHostImpl, so |
| 5048 // that we can force partial swap enabled. | 5045 // that we can force partial swap enabled. |
| 5049 LayerTreeSettings settings; | 5046 LayerTreeSettings settings; |
| 5050 settings.renderer_settings.partial_swap_enabled = true; | 5047 settings.renderer_settings.partial_swap_enabled = true; |
| 5051 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl = | 5048 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl = |
| 5052 LayerTreeHostImpl::Create( | 5049 LayerTreeHostImpl::Create( |
| 5053 settings, this, &proxy_, &stats_instrumentation_, | 5050 settings, this, &proxy_, &stats_instrumentation_, |
| 5054 shared_bitmap_manager_.get(), NULL, task_graph_runner_.get(), 0); | 5051 shared_bitmap_manager_.get(), NULL, task_graph_runner_.get(), 0); |
| 5055 layer_tree_host_impl->InitializeRenderer(output_surface.Pass()); | 5052 layer_tree_host_impl->InitializeRenderer(output_surface.Pass()); |
| 5056 layer_tree_host_impl->WillBeginImplFrame( | |
| 5057 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | |
| 5058 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500)); | 5053 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500)); |
| 5059 | 5054 |
| 5060 scoped_ptr<LayerImpl> root = | 5055 scoped_ptr<LayerImpl> root = |
| 5061 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); | 5056 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); |
| 5062 root->SetHasRenderSurface(true); | 5057 root->SetHasRenderSurface(true); |
| 5063 scoped_ptr<LayerImpl> child = | 5058 scoped_ptr<LayerImpl> child = |
| 5064 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); | 5059 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); |
| 5065 child->SetPosition(gfx::PointF(12.f, 13.f)); | 5060 child->SetPosition(gfx::PointF(12.f, 13.f)); |
| 5066 child->SetBounds(gfx::Size(14, 15)); | 5061 child->SetBounds(gfx::Size(14, 15)); |
| 5067 child->SetContentBounds(gfx::Size(14, 15)); | 5062 child->SetContentBounds(gfx::Size(14, 15)); |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5336 scoped_ptr<OutputSurface> output_surface( | 5331 scoped_ptr<OutputSurface> output_surface( |
| 5337 FakeOutputSurface::Create3d(provider)); | 5332 FakeOutputSurface::Create3d(provider)); |
| 5338 provider->BindToCurrentThread(); | 5333 provider->BindToCurrentThread(); |
| 5339 provider->TestContext3d()->set_have_post_sub_buffer(true); | 5334 provider->TestContext3d()->set_have_post_sub_buffer(true); |
| 5340 | 5335 |
| 5341 LayerTreeSettings settings; | 5336 LayerTreeSettings settings; |
| 5342 settings.renderer_settings.partial_swap_enabled = partial_swap; | 5337 settings.renderer_settings.partial_swap_enabled = partial_swap; |
| 5343 scoped_ptr<LayerTreeHostImpl> my_host_impl = LayerTreeHostImpl::Create( | 5338 scoped_ptr<LayerTreeHostImpl> my_host_impl = LayerTreeHostImpl::Create( |
| 5344 settings, client, proxy, stats_instrumentation, manager, NULL, NULL, 0); | 5339 settings, client, proxy, stats_instrumentation, manager, NULL, NULL, 0); |
| 5345 my_host_impl->InitializeRenderer(output_surface.Pass()); | 5340 my_host_impl->InitializeRenderer(output_surface.Pass()); |
| 5346 my_host_impl->WillBeginImplFrame( | |
| 5347 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | |
| 5348 my_host_impl->SetViewportSize(gfx::Size(100, 100)); | 5341 my_host_impl->SetViewportSize(gfx::Size(100, 100)); |
| 5349 | 5342 |
| 5350 /* | 5343 /* |
| 5351 Layers are created as follows: | 5344 Layers are created as follows: |
| 5352 | 5345 |
| 5353 +--------------------+ | 5346 +--------------------+ |
| 5354 | 1 | | 5347 | 1 | |
| 5355 | +-----------+ | | 5348 | +-----------+ | |
| 5356 | | 2 | | | 5349 | | 2 | | |
| 5357 | | +-------------------+ | 5350 | | +-------------------+ |
| (...skipping 2298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7656 begin_frame_args_ = args; | 7649 begin_frame_args_ = args; |
| 7657 } | 7650 } |
| 7658 | 7651 |
| 7659 const BeginFrameArgs& begin_frame_args() { return begin_frame_args_; } | 7652 const BeginFrameArgs& begin_frame_args() { return begin_frame_args_; } |
| 7660 | 7653 |
| 7661 private: | 7654 private: |
| 7662 BeginFrameArgs begin_frame_args_; | 7655 BeginFrameArgs begin_frame_args_; |
| 7663 }; | 7656 }; |
| 7664 | 7657 |
| 7665 TEST_F(LayerTreeHostImplTest, AddVideoFrameControllerInsideFrame) { | 7658 TEST_F(LayerTreeHostImplTest, AddVideoFrameControllerInsideFrame) { |
| 7666 host_impl_->DidFinishImplFrame(); | |
| 7667 | |
| 7668 BeginFrameArgs begin_frame_args = | 7659 BeginFrameArgs begin_frame_args = |
| 7669 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); | 7660 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); |
| 7670 FakeVideoFrameController controller; | 7661 FakeVideoFrameController controller; |
| 7671 | 7662 |
| 7672 host_impl_->WillBeginImplFrame(begin_frame_args); | 7663 host_impl_->WillBeginImplFrame(begin_frame_args); |
| 7673 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 7664 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 7674 host_impl_->AddVideoFrameController(&controller); | 7665 host_impl_->AddVideoFrameController(&controller); |
| 7675 EXPECT_TRUE(controller.begin_frame_args().IsValid()); | 7666 EXPECT_TRUE(controller.begin_frame_args().IsValid()); |
| 7676 host_impl_->DidFinishImplFrame(); | 7667 host_impl_->DidFinishImplFrame(); |
| 7677 } | 7668 } |
| 7678 | 7669 |
| 7679 TEST_F(LayerTreeHostImplTest, AddVideoFrameControllerOutsideFrame) { | 7670 TEST_F(LayerTreeHostImplTest, AddVideoFrameControllerOutsideFrame) { |
| 7680 host_impl_->DidFinishImplFrame(); | |
| 7681 | |
| 7682 BeginFrameArgs begin_frame_args = | 7671 BeginFrameArgs begin_frame_args = |
| 7683 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); | 7672 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); |
| 7684 FakeVideoFrameController controller; | 7673 FakeVideoFrameController controller; |
| 7685 | 7674 |
| 7686 host_impl_->WillBeginImplFrame(begin_frame_args); | 7675 host_impl_->WillBeginImplFrame(begin_frame_args); |
| 7687 host_impl_->DidFinishImplFrame(); | 7676 host_impl_->DidFinishImplFrame(); |
| 7688 | 7677 |
| 7689 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 7678 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 7690 host_impl_->AddVideoFrameController(&controller); | 7679 host_impl_->AddVideoFrameController(&controller); |
| 7691 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 7680 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 7692 | 7681 |
| 7693 begin_frame_args = CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); | 7682 begin_frame_args = CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); |
| 7694 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 7683 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 7695 host_impl_->WillBeginImplFrame(begin_frame_args); | 7684 host_impl_->WillBeginImplFrame(begin_frame_args); |
| 7696 EXPECT_TRUE(controller.begin_frame_args().IsValid()); | 7685 EXPECT_TRUE(controller.begin_frame_args().IsValid()); |
| 7697 } | 7686 } |
| 7698 | 7687 |
| 7699 } // namespace | 7688 } // namespace |
| 7700 } // namespace cc | 7689 } // namespace cc |
| OLD | NEW |