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 <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/hash_tables.h" | 11 #include "base/hash_tables.h" |
12 #include "cc/base/math_util.h" | 12 #include "cc/base/math_util.h" |
13 #include "cc/input/top_controls_manager.h" | 13 #include "cc/input/top_controls_manager.h" |
14 #include "cc/layers/delegated_renderer_layer_impl.h" | 14 #include "cc/layers/delegated_renderer_layer_impl.h" |
15 #include "cc/layers/heads_up_display_layer_impl.h" | 15 #include "cc/layers/heads_up_display_layer_impl.h" |
16 #include "cc/layers/io_surface_layer_impl.h" | 16 #include "cc/layers/io_surface_layer_impl.h" |
17 #include "cc/layers/layer_impl.h" | 17 #include "cc/layers/layer_impl.h" |
18 #include "cc/layers/quad_sink.h" | 18 #include "cc/layers/quad_sink.h" |
19 #include "cc/layers/render_surface_impl.h" | 19 #include "cc/layers/render_surface_impl.h" |
20 #include "cc/layers/scrollbar_geometry_fixed_thumb.h" | 20 #include "cc/layers/scrollbar_geometry_fixed_thumb.h" |
21 #include "cc/layers/scrollbar_layer_impl.h" | 21 #include "cc/layers/scrollbar_layer_impl.h" |
22 #include "cc/layers/solid_color_layer_impl.h" | 22 #include "cc/layers/solid_color_layer_impl.h" |
23 #include "cc/layers/texture_layer_impl.h" | 23 #include "cc/layers/texture_layer_impl.h" |
24 #include "cc/layers/tiled_layer_impl.h" | 24 #include "cc/layers/tiled_layer_impl.h" |
25 #include "cc/layers/video_layer_impl.h" | 25 #include "cc/layers/video_layer_impl.h" |
| 26 #include "cc/output/compositor_frame_ack.h" |
26 #include "cc/output/compositor_frame_metadata.h" | 27 #include "cc/output/compositor_frame_metadata.h" |
27 #include "cc/output/gl_renderer.h" | 28 #include "cc/output/gl_renderer.h" |
28 #include "cc/quads/render_pass_draw_quad.h" | 29 #include "cc/quads/render_pass_draw_quad.h" |
29 #include "cc/quads/solid_color_draw_quad.h" | 30 #include "cc/quads/solid_color_draw_quad.h" |
30 #include "cc/quads/texture_draw_quad.h" | 31 #include "cc/quads/texture_draw_quad.h" |
31 #include "cc/quads/tile_draw_quad.h" | 32 #include "cc/quads/tile_draw_quad.h" |
32 #include "cc/resources/layer_tiling_data.h" | 33 #include "cc/resources/layer_tiling_data.h" |
33 #include "cc/test/animation_test_common.h" | 34 #include "cc/test/animation_test_common.h" |
34 #include "cc/test/fake_output_surface.h" | 35 #include "cc/test/fake_output_surface.h" |
35 #include "cc/test/fake_proxy.h" | 36 #include "cc/test/fake_proxy.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 always_main_thread_blocked_(&proxy_), | 68 always_main_thread_blocked_(&proxy_), |
68 on_can_draw_state_changed_called_(false), | 69 on_can_draw_state_changed_called_(false), |
69 has_pending_tree_(false), | 70 has_pending_tree_(false), |
70 did_request_commit_(false), | 71 did_request_commit_(false), |
71 did_request_redraw_(false), | 72 did_request_redraw_(false), |
72 did_upload_visible_tile_(false), | 73 did_upload_visible_tile_(false), |
73 reduce_memory_result_(true) { | 74 reduce_memory_result_(true) { |
74 media::InitializeMediaLibraryForTesting(); | 75 media::InitializeMediaLibraryForTesting(); |
75 } | 76 } |
76 | 77 |
| 78 virtual void OverrideSettings(LayerTreeSettings* settings) {} |
| 79 |
77 virtual void SetUp() OVERRIDE { | 80 virtual void SetUp() OVERRIDE { |
78 LayerTreeSettings settings; | 81 LayerTreeSettings settings; |
79 settings.minimum_occlusion_tracking_size = gfx::Size(); | 82 settings.minimum_occlusion_tracking_size = gfx::Size(); |
| 83 OverrideSettings(&settings); |
80 | 84 |
81 host_impl_ = LayerTreeHostImpl::Create(settings, | 85 host_impl_ = LayerTreeHostImpl::Create(settings, |
82 this, | 86 this, |
83 &proxy_, | 87 &proxy_, |
84 &stats_instrumentation_); | 88 &stats_instrumentation_); |
85 host_impl_->InitializeRenderer(CreateOutputSurface()); | 89 host_impl_->InitializeRenderer(CreateOutputSurface()); |
86 host_impl_->SetViewportSize(gfx::Size(10, 10)); | 90 host_impl_->SetViewportSize(gfx::Size(10, 10)); |
87 } | 91 } |
88 | 92 |
89 virtual void TearDown() OVERRIDE {} | 93 virtual void TearDown() OVERRIDE {} |
(...skipping 4192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4282 return textures_.count(id); | 4286 return textures_.count(id); |
4283 } | 4287 } |
4284 | 4288 |
4285 // RendererClient implementation. | 4289 // RendererClient implementation. |
4286 virtual gfx::Size DeviceViewportSize() const OVERRIDE { | 4290 virtual gfx::Size DeviceViewportSize() const OVERRIDE { |
4287 return viewport_size_; | 4291 return viewport_size_; |
4288 } | 4292 } |
4289 virtual const LayerTreeSettings& Settings() const OVERRIDE { | 4293 virtual const LayerTreeSettings& Settings() const OVERRIDE { |
4290 return settings_; | 4294 return settings_; |
4291 } | 4295 } |
4292 virtual void DidLoseOutputSurface() OVERRIDE {} | |
4293 virtual void OnSwapBuffersComplete() OVERRIDE {} | |
4294 virtual void SetFullRootLayerDamage() OVERRIDE {} | 4296 virtual void SetFullRootLayerDamage() OVERRIDE {} |
4295 virtual void SetManagedMemoryPolicy(const ManagedMemoryPolicy& policy) | 4297 virtual void SetManagedMemoryPolicy(const ManagedMemoryPolicy& policy) |
4296 OVERRIDE {} | 4298 OVERRIDE {} |
4297 virtual void EnforceManagedMemoryPolicy(const ManagedMemoryPolicy& policy) | 4299 virtual void EnforceManagedMemoryPolicy(const ManagedMemoryPolicy& policy) |
4298 OVERRIDE {} | 4300 OVERRIDE {} |
4299 virtual bool HasImplThread() const OVERRIDE { return false; } | 4301 virtual bool HasImplThread() const OVERRIDE { return false; } |
4300 virtual bool ShouldClearRootRenderPass() const OVERRIDE { return true; } | 4302 virtual bool ShouldClearRootRenderPass() const OVERRIDE { return true; } |
4301 virtual CompositorFrameMetadata MakeCompositorFrameMetadata() const | 4303 virtual CompositorFrameMetadata MakeCompositorFrameMetadata() const |
4302 OVERRIDE { return CompositorFrameMetadata(); } | 4304 OVERRIDE { return CompositorFrameMetadata(); } |
4303 virtual bool AllowPartialSwap() const OVERRIDE { | 4305 virtual bool AllowPartialSwap() const OVERRIDE { |
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5040 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5042 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5041 render_pass_quad->rect.ToString()); | 5043 render_pass_quad->rect.ToString()); |
5042 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5044 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5043 render_pass_quad->mask_uv_rect.ToString()); | 5045 render_pass_quad->mask_uv_rect.ToString()); |
5044 | 5046 |
5045 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 5047 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
5046 host_impl_->DidDrawAllLayers(frame); | 5048 host_impl_->DidDrawAllLayers(frame); |
5047 } | 5049 } |
5048 } | 5050 } |
5049 | 5051 |
| 5052 class CompositorFrameMetadataTest : public LayerTreeHostImplTest { |
| 5053 public: |
| 5054 CompositorFrameMetadataTest() |
| 5055 : swap_buffers_complete_(0) {} |
| 5056 |
| 5057 virtual void OverrideSettings(LayerTreeSettings* settings) OVERRIDE { |
| 5058 settings->compositor_frame_message = true; |
| 5059 } |
| 5060 virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE { |
| 5061 swap_buffers_complete_++; |
| 5062 } |
| 5063 |
| 5064 int swap_buffers_complete_; |
| 5065 }; |
| 5066 |
| 5067 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { |
| 5068 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
| 5069 { |
| 5070 LayerTreeHostImpl::FrameData frame; |
| 5071 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 5072 host_impl_->DrawLayers(&frame, base::TimeTicks()); |
| 5073 host_impl_->DidDrawAllLayers(frame); |
| 5074 } |
| 5075 CompositorFrameAck ack; |
| 5076 host_impl_->OnSendFrameToParentCompositorAck(ack); |
| 5077 EXPECT_EQ(swap_buffers_complete_, 1); |
| 5078 } |
| 5079 |
5050 } // namespace | 5080 } // namespace |
5051 } // namespace cc | 5081 } // namespace cc |
OLD | NEW |