| 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/layers/tiled_layer.h" | 5 #include "cc/layers/tiled_layer.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 | 38 |
| 39 void SetRenderTarget(Layer* render_target) { | 39 void SetRenderTarget(Layer* render_target) { |
| 40 stack_.back().target = render_target; | 40 stack_.back().target = render_target; |
| 41 } | 41 } |
| 42 | 42 |
| 43 void SetOcclusion(const SimpleEnclosedRegion& occlusion) { | 43 void SetOcclusion(const SimpleEnclosedRegion& occlusion) { |
| 44 stack_.back().occlusion_from_inside_target = occlusion; | 44 stack_.back().occlusion_from_inside_target = occlusion; |
| 45 } | 45 } |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 class SynchronousOutputSurfaceLayerTreeHost : public LayerTreeHost { | 48 class SynchronousOutputSurfaceClient : public FakeLayerTreeHostClient { |
| 49 public: | 49 public: |
| 50 static scoped_ptr<SynchronousOutputSurfaceLayerTreeHost> Create( | 50 SynchronousOutputSurfaceClient() |
| 51 LayerTreeHostClient* client, | 51 : FakeLayerTreeHostClient(FakeLayerTreeHostClient::DIRECT_3D) {} |
| 52 SharedBitmapManager* manager, | |
| 53 const LayerTreeSettings& settings, | |
| 54 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { | |
| 55 return make_scoped_ptr(new SynchronousOutputSurfaceLayerTreeHost( | |
| 56 client, manager, settings, impl_task_runner)); | |
| 57 } | |
| 58 | |
| 59 ~SynchronousOutputSurfaceLayerTreeHost() override {} | |
| 60 | 52 |
| 61 bool EnsureOutputSurfaceCreated() { | 53 bool EnsureOutputSurfaceCreated() { |
| 62 base::MessageLoop::current()->PostDelayedTask( | 54 base::MessageLoop::current()->PostDelayedTask( |
| 63 FROM_HERE, | 55 FROM_HERE, |
| 64 run_loop_.QuitClosure(), | 56 run_loop_.QuitClosure(), |
| 65 base::TimeDelta::FromSeconds(5)); | 57 base::TimeDelta::FromSeconds(5)); |
| 66 run_loop_.Run(); | 58 run_loop_.Run(); |
| 67 return output_surface_created_; | 59 return output_surface_created_; |
| 68 } | 60 } |
| 69 | 61 |
| 70 void OnCreateAndInitializeOutputSurfaceAttempted(bool success) override { | 62 void DidInitializeOutputSurface() override { |
| 71 LayerTreeHost::OnCreateAndInitializeOutputSurfaceAttempted(success); | 63 FakeLayerTreeHostClient::DidInitializeOutputSurface(); |
| 72 output_surface_created_ = success; | 64 output_surface_created_ = true; |
| 65 run_loop_.Quit(); |
| 66 } |
| 67 |
| 68 void DidFailToInitializeOutputSurface() override { |
| 69 FakeLayerTreeHostClient::DidFailToInitializeOutputSurface(); |
| 70 output_surface_created_ = false; |
| 73 run_loop_.Quit(); | 71 run_loop_.Quit(); |
| 74 } | 72 } |
| 75 | 73 |
| 76 private: | 74 private: |
| 77 SynchronousOutputSurfaceLayerTreeHost( | |
| 78 LayerTreeHostClient* client, | |
| 79 SharedBitmapManager* manager, | |
| 80 const LayerTreeSettings& settings, | |
| 81 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) | |
| 82 : LayerTreeHost(client, manager, NULL, settings), | |
| 83 output_surface_created_(false) { | |
| 84 LayerTreeHost::InitializeThreaded(base::MessageLoopProxy::current(), | |
| 85 impl_task_runner, | |
| 86 nullptr); | |
| 87 } | |
| 88 | |
| 89 bool output_surface_created_; | 75 bool output_surface_created_; |
| 90 base::RunLoop run_loop_; | 76 base::RunLoop run_loop_; |
| 91 }; | 77 }; |
| 92 | 78 |
| 93 class TiledLayerTest : public testing::Test { | 79 class TiledLayerTest : public testing::Test { |
| 94 public: | 80 public: |
| 95 TiledLayerTest() | 81 TiledLayerTest() |
| 96 : proxy_(nullptr), | 82 : proxy_(nullptr), |
| 97 output_surface_(FakeOutputSurface::Create3d()), | 83 output_surface_(FakeOutputSurface::Create3d()), |
| 98 queue_(make_scoped_ptr(new ResourceUpdateQueue)), | 84 queue_(make_scoped_ptr(new ResourceUpdateQueue)), |
| 99 impl_thread_("ImplThread"), | 85 impl_thread_("ImplThread"), |
| 100 fake_layer_tree_host_client_(FakeLayerTreeHostClient::DIRECT_3D), | |
| 101 occlusion_(nullptr) { | 86 occlusion_(nullptr) { |
| 102 settings_.max_partial_texture_updates = std::numeric_limits<size_t>::max(); | 87 settings_.max_partial_texture_updates = std::numeric_limits<size_t>::max(); |
| 103 settings_.layer_transforms_should_scale_layer_contents = true; | 88 settings_.layer_transforms_should_scale_layer_contents = true; |
| 104 } | 89 } |
| 105 | 90 |
| 106 void SetUp() override { | 91 void SetUp() override { |
| 107 impl_thread_.Start(); | 92 impl_thread_.Start(); |
| 108 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 93 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
| 109 layer_tree_host_ = SynchronousOutputSurfaceLayerTreeHost::Create( | 94 layer_tree_host_ = LayerTreeHost::CreateThreaded( |
| 110 &fake_layer_tree_host_client_, | 95 &synchonous_output_surface_client_, shared_bitmap_manager_.get(), |
| 111 shared_bitmap_manager_.get(), | 96 nullptr, settings_, base::MessageLoopProxy::current(), |
| 112 settings_, | 97 impl_thread_.message_loop_proxy(), nullptr); |
| 113 impl_thread_.message_loop_proxy()); | 98 synchonous_output_surface_client_.SetLayerTreeHost(layer_tree_host_.get()); |
| 114 fake_layer_tree_host_client_.SetLayerTreeHost(layer_tree_host_.get()); | |
| 115 proxy_ = layer_tree_host_->proxy(); | 99 proxy_ = layer_tree_host_->proxy(); |
| 116 resource_manager_ = PrioritizedResourceManager::Create(proxy_); | 100 resource_manager_ = PrioritizedResourceManager::Create(proxy_); |
| 117 layer_tree_host_->SetLayerTreeHostClientReady(); | 101 layer_tree_host_->SetLayerTreeHostClientReady(); |
| 118 CHECK(layer_tree_host_->EnsureOutputSurfaceCreated()); | 102 CHECK(synchonous_output_surface_client_.EnsureOutputSurfaceCreated()); |
| 103 |
| 119 layer_tree_host_->SetRootLayer(Layer::Create()); | 104 layer_tree_host_->SetRootLayer(Layer::Create()); |
| 120 | 105 |
| 121 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 106 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 122 | 107 |
| 123 DebugScopedSetImplThreadAndMainThreadBlocked | 108 DebugScopedSetImplThreadAndMainThreadBlocked |
| 124 impl_thread_and_main_thread_blocked(proxy_); | 109 impl_thread_and_main_thread_blocked(proxy_); |
| 125 resource_provider_ = ResourceProvider::Create(output_surface_.get(), | 110 resource_provider_ = ResourceProvider::Create(output_surface_.get(), |
| 126 shared_bitmap_manager_.get(), | 111 shared_bitmap_manager_.get(), |
| 127 nullptr, | 112 nullptr, |
| 128 nullptr, | 113 nullptr, |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 public: | 231 public: |
| 247 Proxy* proxy_; | 232 Proxy* proxy_; |
| 248 LayerTreeSettings settings_; | 233 LayerTreeSettings settings_; |
| 249 FakeOutputSurfaceClient output_surface_client_; | 234 FakeOutputSurfaceClient output_surface_client_; |
| 250 scoped_ptr<OutputSurface> output_surface_; | 235 scoped_ptr<OutputSurface> output_surface_; |
| 251 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 236 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| 252 scoped_ptr<ResourceProvider> resource_provider_; | 237 scoped_ptr<ResourceProvider> resource_provider_; |
| 253 scoped_ptr<ResourceUpdateQueue> queue_; | 238 scoped_ptr<ResourceUpdateQueue> queue_; |
| 254 PriorityCalculator priority_calculator_; | 239 PriorityCalculator priority_calculator_; |
| 255 base::Thread impl_thread_; | 240 base::Thread impl_thread_; |
| 256 FakeLayerTreeHostClient fake_layer_tree_host_client_; | 241 SynchronousOutputSurfaceClient synchonous_output_surface_client_; |
| 257 scoped_ptr<SynchronousOutputSurfaceLayerTreeHost> layer_tree_host_; | 242 scoped_ptr<LayerTreeHost> layer_tree_host_; |
| 258 scoped_ptr<FakeLayerTreeHostImpl> host_impl_; | 243 scoped_ptr<FakeLayerTreeHostImpl> host_impl_; |
| 259 scoped_ptr<PrioritizedResourceManager> resource_manager_; | 244 scoped_ptr<PrioritizedResourceManager> resource_manager_; |
| 260 TestOcclusionTracker* occlusion_; | 245 TestOcclusionTracker* occlusion_; |
| 261 }; | 246 }; |
| 262 | 247 |
| 263 TEST_F(TiledLayerTest, PushDirtyTiles) { | 248 TEST_F(TiledLayerTest, PushDirtyTiles) { |
| 264 layer_tree_host_->SetViewportSize(gfx::Size(1000, 1000)); | 249 layer_tree_host_->SetViewportSize(gfx::Size(1000, 1000)); |
| 265 | 250 |
| 266 scoped_refptr<FakeTiledLayer> layer = | 251 scoped_refptr<FakeTiledLayer> layer = |
| 267 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); | 252 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); |
| (...skipping 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1760 | 1745 |
| 1761 // Rounding leads to an extra pixel. | 1746 // Rounding leads to an extra pixel. |
| 1762 gfx::Rect expanded_layer_rect(layer_rect); | 1747 gfx::Rect expanded_layer_rect(layer_rect); |
| 1763 expanded_layer_rect.set_height(32); | 1748 expanded_layer_rect.set_height(32); |
| 1764 EXPECT_EQ(expanded_layer_rect, | 1749 EXPECT_EQ(expanded_layer_rect, |
| 1765 layer->tracking_layer_painter()->PaintedRect()); | 1750 layer->tracking_layer_painter()->PaintedRect()); |
| 1766 } | 1751 } |
| 1767 | 1752 |
| 1768 } // namespace | 1753 } // namespace |
| 1769 } // namespace cc | 1754 } // namespace cc |
| OLD | NEW |