| 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 "cc/base/scoped_ptr_vector.h" | 5 #include "cc/base/scoped_ptr_vector.h" |
| 6 #include "cc/output/gl_renderer.h" | 6 #include "cc/output/gl_renderer.h" |
| 7 #include "cc/output/output_surface.h" | 7 #include "cc/output/output_surface.h" |
| 8 #include "cc/output/output_surface_client.h" | 8 #include "cc/output/output_surface_client.h" |
| 9 #include "cc/output/overlay_candidate_validator.h" | 9 #include "cc/output/overlay_candidate_validator.h" |
| 10 #include "cc/output/overlay_processor.h" | 10 #include "cc/output/overlay_processor.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 const gfx::PointF kUVTopLeft(0.1f, 0.2f); | 33 const gfx::PointF kUVTopLeft(0.1f, 0.2f); |
| 34 const gfx::PointF kUVBottomRight(1.0f, 1.0f); | 34 const gfx::PointF kUVBottomRight(1.0f, 1.0f); |
| 35 | 35 |
| 36 void MailboxReleased(unsigned sync_point, | 36 void MailboxReleased(unsigned sync_point, |
| 37 bool lost_resource, | 37 bool lost_resource, |
| 38 BlockingTaskRunner* main_thread_task_runner) { | 38 BlockingTaskRunner* main_thread_task_runner) { |
| 39 } | 39 } |
| 40 | 40 |
| 41 class SingleOverlayValidator : public OverlayCandidateValidator { | 41 class SingleOverlayValidator : public OverlayCandidateValidator { |
| 42 public: | 42 public: |
| 43 virtual void CheckOverlaySupport(OverlayCandidateList* surfaces) override; | 43 void CheckOverlaySupport(OverlayCandidateList* surfaces) override; |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 void SingleOverlayValidator::CheckOverlaySupport( | 46 void SingleOverlayValidator::CheckOverlaySupport( |
| 47 OverlayCandidateList* surfaces) { | 47 OverlayCandidateList* surfaces) { |
| 48 ASSERT_EQ(2U, surfaces->size()); | 48 ASSERT_EQ(2U, surfaces->size()); |
| 49 | 49 |
| 50 OverlayCandidate& candidate = surfaces->back(); | 50 OverlayCandidate& candidate = surfaces->back(); |
| 51 if (candidate.display_rect.width() == 64) | 51 if (candidate.display_rect.width() == 64) |
| 52 EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect); | 52 EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect); |
| 53 else | 53 else |
| 54 EXPECT_EQ(kOverlayRect, candidate.display_rect); | 54 EXPECT_EQ(kOverlayRect, candidate.display_rect); |
| 55 EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(), | 55 EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(), |
| 56 candidate.uv_rect.ToString()); | 56 candidate.uv_rect.ToString()); |
| 57 candidate.overlay_handled = true; | 57 candidate.overlay_handled = true; |
| 58 } | 58 } |
| 59 | 59 |
| 60 class SingleOverlayProcessor : public OverlayProcessor { | 60 class SingleOverlayProcessor : public OverlayProcessor { |
| 61 public: | 61 public: |
| 62 SingleOverlayProcessor(OutputSurface* surface, | 62 SingleOverlayProcessor(OutputSurface* surface, |
| 63 ResourceProvider* resource_provider); | 63 ResourceProvider* resource_provider); |
| 64 // Virtual to allow testing different strategies. | 64 // Virtual to allow testing different strategies. |
| 65 virtual void Initialize() override; | 65 void Initialize() override; |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 SingleOverlayProcessor::SingleOverlayProcessor( | 68 SingleOverlayProcessor::SingleOverlayProcessor( |
| 69 OutputSurface* surface, | 69 OutputSurface* surface, |
| 70 ResourceProvider* resource_provider) | 70 ResourceProvider* resource_provider) |
| 71 : OverlayProcessor(surface, resource_provider) { | 71 : OverlayProcessor(surface, resource_provider) { |
| 72 EXPECT_EQ(surface, surface_); | 72 EXPECT_EQ(surface, surface_); |
| 73 EXPECT_EQ(resource_provider, resource_provider_); | 73 EXPECT_EQ(resource_provider, resource_provider_); |
| 74 } | 74 } |
| 75 | 75 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 96 size_t DefaultOverlayProcessor::GetStrategyCount() { | 96 size_t DefaultOverlayProcessor::GetStrategyCount() { |
| 97 return strategies_.size(); | 97 return strategies_.size(); |
| 98 } | 98 } |
| 99 | 99 |
| 100 class OverlayOutputSurface : public OutputSurface { | 100 class OverlayOutputSurface : public OutputSurface { |
| 101 public: | 101 public: |
| 102 explicit OverlayOutputSurface(scoped_refptr<ContextProvider> context_provider) | 102 explicit OverlayOutputSurface(scoped_refptr<ContextProvider> context_provider) |
| 103 : OutputSurface(context_provider) {} | 103 : OutputSurface(context_provider) {} |
| 104 | 104 |
| 105 // OutputSurface implementation | 105 // OutputSurface implementation |
| 106 virtual void SwapBuffers(CompositorFrame* frame) override; | 106 void SwapBuffers(CompositorFrame* frame) override; |
| 107 | 107 |
| 108 void InitWithSingleOverlayValidator() { | 108 void InitWithSingleOverlayValidator() { |
| 109 overlay_candidate_validator_.reset(new SingleOverlayValidator); | 109 overlay_candidate_validator_.reset(new SingleOverlayValidator); |
| 110 } | 110 } |
| 111 }; | 111 }; |
| 112 | 112 |
| 113 void OverlayOutputSurface::SwapBuffers(CompositorFrame* frame) { | 113 void OverlayOutputSurface::SwapBuffers(CompositorFrame* frame) { |
| 114 client_->DidSwapBuffers(); | 114 client_->DidSwapBuffers(); |
| 115 client_->DidSwapBuffersComplete(); | 115 client_->DidSwapBuffersComplete(); |
| 116 } | 116 } |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 expect_overlays_ = expect_overlays; | 561 expect_overlays_ = expect_overlays; |
| 562 } | 562 } |
| 563 | 563 |
| 564 private: | 564 private: |
| 565 bool expect_overlays_; | 565 bool expect_overlays_; |
| 566 }; | 566 }; |
| 567 | 567 |
| 568 class FakeRendererClient : public RendererClient { | 568 class FakeRendererClient : public RendererClient { |
| 569 public: | 569 public: |
| 570 // RendererClient methods. | 570 // RendererClient methods. |
| 571 virtual void SetFullRootLayerDamage() override {} | 571 void SetFullRootLayerDamage() override {} |
| 572 }; | 572 }; |
| 573 | 573 |
| 574 class MockOverlayScheduler { | 574 class MockOverlayScheduler { |
| 575 public: | 575 public: |
| 576 MOCK_METHOD5(Schedule, | 576 MOCK_METHOD5(Schedule, |
| 577 void(int plane_z_order, | 577 void(int plane_z_order, |
| 578 gfx::OverlayTransform plane_transform, | 578 gfx::OverlayTransform plane_transform, |
| 579 unsigned overlay_texture_id, | 579 unsigned overlay_texture_id, |
| 580 const gfx::Rect& display_bounds, | 580 const gfx::Rect& display_bounds, |
| 581 const gfx::RectF& uv_rect)); | 581 const gfx::RectF& uv_rect)); |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 797 renderer_->set_expect_overlays(false); | 797 renderer_->set_expect_overlays(false); |
| 798 renderer_->FinishDrawingFrame(&frame3); | 798 renderer_->FinishDrawingFrame(&frame3); |
| 799 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 799 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 800 SwapBuffers(); | 800 SwapBuffers(); |
| 801 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 801 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 802 Mock::VerifyAndClearExpectations(&scheduler_); | 802 Mock::VerifyAndClearExpectations(&scheduler_); |
| 803 } | 803 } |
| 804 | 804 |
| 805 } // namespace | 805 } // namespace |
| 806 } // namespace cc | 806 } // namespace cc |
| OLD | NEW |