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" |
(...skipping 4981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4992 EXPECT_FALSE(did_request_commit_); | 4992 EXPECT_FALSE(did_request_commit_); |
4993 } | 4993 } |
4994 | 4994 |
4995 struct RenderPassRemovalTestData : public LayerTreeHostImpl::FrameData { | 4995 struct RenderPassRemovalTestData : public LayerTreeHostImpl::FrameData { |
4996 base::ScopedPtrHashMap<RenderPass::Id, TestRenderPass> render_pass_cache; | 4996 base::ScopedPtrHashMap<RenderPass::Id, TestRenderPass> render_pass_cache; |
4997 scoped_ptr<SharedQuadState> shared_quad_state; | 4997 scoped_ptr<SharedQuadState> shared_quad_state; |
4998 }; | 4998 }; |
4999 | 4999 |
5000 class TestRenderer : public GLRenderer, public RendererClient { | 5000 class TestRenderer : public GLRenderer, public RendererClient { |
5001 public: | 5001 public: |
5002 static scoped_ptr<TestRenderer> Create(ResourceProvider* resource_provider, | 5002 static scoped_ptr<TestRenderer> Create(const LayerTreeSettings* settings, |
| 5003 ResourceProvider* resource_provider, |
5003 OutputSurface* output_surface, | 5004 OutputSurface* output_surface, |
5004 Proxy* proxy) { | 5005 Proxy* proxy) { |
5005 scoped_ptr<TestRenderer> renderer(new TestRenderer(resource_provider, | 5006 scoped_ptr<TestRenderer> renderer( |
5006 output_surface, | 5007 new TestRenderer(settings, resource_provider, output_surface, proxy)); |
5007 proxy)); | |
5008 if (!renderer->Initialize()) | 5008 if (!renderer->Initialize()) |
5009 return scoped_ptr<TestRenderer>(); | 5009 return scoped_ptr<TestRenderer>(); |
5010 | 5010 |
5011 return renderer.Pass(); | 5011 return renderer.Pass(); |
5012 } | 5012 } |
5013 | 5013 |
5014 void ClearCachedTextures() { textures_.clear(); } | 5014 void ClearCachedTextures() { textures_.clear(); } |
5015 void SetHaveCachedResourcesForRenderPassId(RenderPass::Id id) { | 5015 void SetHaveCachedResourcesForRenderPassId(RenderPass::Id id) { |
5016 textures_.insert(id); | 5016 textures_.insert(id); |
5017 } | 5017 } |
5018 | 5018 |
5019 virtual bool HaveCachedResourcesForRenderPassId(RenderPass::Id id) const | 5019 virtual bool HaveCachedResourcesForRenderPassId(RenderPass::Id id) const |
5020 OVERRIDE { | 5020 OVERRIDE { |
5021 return textures_.count(id); | 5021 return textures_.count(id); |
5022 } | 5022 } |
5023 | 5023 |
5024 // RendererClient implementation. | 5024 // RendererClient implementation. |
5025 virtual gfx::Rect DeviceViewport() const OVERRIDE { | 5025 virtual gfx::Rect DeviceViewport() const OVERRIDE { |
5026 return gfx::Rect(viewport_size_); | 5026 return gfx::Rect(viewport_size_); |
5027 } | 5027 } |
5028 virtual gfx::Rect DeviceClip() const OVERRIDE { | 5028 virtual gfx::Rect DeviceClip() const OVERRIDE { return DeviceViewport(); } |
5029 return DeviceViewport(); | 5029 virtual void SetFullRootLayerDamage() OVERRIDE {} |
| 5030 virtual CompositorFrameMetadata MakeCompositorFrameMetadata() const OVERRIDE { |
| 5031 return CompositorFrameMetadata(); |
5030 } | 5032 } |
5031 virtual float DeviceScaleFactor() const OVERRIDE { | |
5032 return 1.f; | |
5033 } | |
5034 virtual const LayerTreeSettings& Settings() const OVERRIDE { | |
5035 return settings_; | |
5036 } | |
5037 virtual void SetFullRootLayerDamage() OVERRIDE {} | |
5038 virtual bool HasImplThread() const OVERRIDE { return false; } | |
5039 virtual bool ShouldClearRootRenderPass() const OVERRIDE { return true; } | |
5040 virtual CompositorFrameMetadata MakeCompositorFrameMetadata() const | |
5041 OVERRIDE { return CompositorFrameMetadata(); } | |
5042 virtual bool AllowPartialSwap() const OVERRIDE { | |
5043 return true; | |
5044 } | |
5045 virtual bool ExternalStencilTestEnabled() const OVERRIDE { return false; } | |
5046 | 5033 |
5047 protected: | 5034 protected: |
5048 TestRenderer(ResourceProvider* resource_provider, | 5035 TestRenderer(const LayerTreeSettings* settings, |
| 5036 ResourceProvider* resource_provider, |
5049 OutputSurface* output_surface, | 5037 OutputSurface* output_surface, |
5050 Proxy* proxy) | 5038 Proxy* proxy) |
5051 : GLRenderer(this, output_surface, resource_provider, 0) {} | 5039 : GLRenderer(this, settings, output_surface, resource_provider, 0) {} |
5052 | 5040 |
5053 private: | 5041 private: |
5054 LayerTreeSettings settings_; | 5042 LayerTreeSettings settings_; |
5055 gfx::Size viewport_size_; | 5043 gfx::Size viewport_size_; |
5056 base::hash_set<RenderPass::Id> textures_; | 5044 base::hash_set<RenderPass::Id> textures_; |
5057 }; | 5045 }; |
5058 | 5046 |
5059 static void ConfigureRenderPassTestData(const char* test_script, | 5047 static void ConfigureRenderPassTestData(const char* test_script, |
5060 RenderPassRemovalTestData* test_data, | 5048 RenderPassRemovalTestData* test_data, |
5061 TestRenderer* renderer) { | 5049 TestRenderer* renderer) { |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5361 static void VerifyRenderPassTestData( | 5349 static void VerifyRenderPassTestData( |
5362 const TestCase& test_case, | 5350 const TestCase& test_case, |
5363 const RenderPassRemovalTestData& test_data) { | 5351 const RenderPassRemovalTestData& test_data) { |
5364 char actual_result[1024]; | 5352 char actual_result[1024]; |
5365 DumpRenderPassTestData(test_data, actual_result); | 5353 DumpRenderPassTestData(test_data, actual_result); |
5366 EXPECT_STREQ(test_case.expected_result, actual_result) << "In test case: " << | 5354 EXPECT_STREQ(test_case.expected_result, actual_result) << "In test case: " << |
5367 test_case.name; | 5355 test_case.name; |
5368 } | 5356 } |
5369 | 5357 |
5370 TEST_F(LayerTreeHostImplTest, TestRemoveRenderPasses) { | 5358 TEST_F(LayerTreeHostImplTest, TestRemoveRenderPasses) { |
| 5359 LayerTreeSettings settings; |
5371 FakeOutputSurfaceClient output_surface_client; | 5360 FakeOutputSurfaceClient output_surface_client; |
5372 scoped_ptr<OutputSurface> output_surface(CreateOutputSurface()); | 5361 scoped_ptr<OutputSurface> output_surface(CreateOutputSurface()); |
5373 ASSERT_TRUE(output_surface->BindToClient(&output_surface_client)); | 5362 ASSERT_TRUE(output_surface->BindToClient(&output_surface_client)); |
5374 ASSERT_TRUE(output_surface->context_provider()); | 5363 ASSERT_TRUE(output_surface->context_provider()); |
5375 | 5364 |
5376 scoped_ptr<ResourceProvider> resource_provider = | 5365 scoped_ptr<ResourceProvider> resource_provider = |
5377 ResourceProvider::Create(output_surface.get(), 0); | 5366 ResourceProvider::Create(output_surface.get(), 0); |
5378 | 5367 |
5379 scoped_ptr<TestRenderer> renderer = | 5368 scoped_ptr<TestRenderer> renderer = TestRenderer::Create( |
5380 TestRenderer::Create(resource_provider.get(), | 5369 &settings, resource_provider.get(), output_surface.get(), &proxy_); |
5381 output_surface.get(), | |
5382 &proxy_); | |
5383 | 5370 |
5384 int test_case_index = 0; | 5371 int test_case_index = 0; |
5385 while (remove_render_passes_cases[test_case_index].name) { | 5372 while (remove_render_passes_cases[test_case_index].name) { |
5386 RenderPassRemovalTestData test_data; | 5373 RenderPassRemovalTestData test_data; |
5387 ConfigureRenderPassTestData( | 5374 ConfigureRenderPassTestData( |
5388 remove_render_passes_cases[test_case_index].init_script, | 5375 remove_render_passes_cases[test_case_index].init_script, |
5389 &test_data, | 5376 &test_data, |
5390 renderer.get()); | 5377 renderer.get()); |
5391 LayerTreeHostImpl::RemoveRenderPasses( | 5378 LayerTreeHostImpl::RemoveRenderPasses( |
5392 LayerTreeHostImpl::CullRenderPassesWithCachedTextures(renderer.get()), | 5379 LayerTreeHostImpl::CullRenderPassesWithCachedTextures(renderer.get()), |
(...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6585 EXPECT_EQ(0u, host_impl_->ResourceIdForUIResource(ui_resource_id)); | 6572 EXPECT_EQ(0u, host_impl_->ResourceIdForUIResource(ui_resource_id)); |
6586 EXPECT_EQ(0u, context3d->NumTextures()); | 6573 EXPECT_EQ(0u, context3d->NumTextures()); |
6587 | 6574 |
6588 // Should not change state for multiple deletion on one UIResourceId | 6575 // Should not change state for multiple deletion on one UIResourceId |
6589 host_impl_->DeleteUIResource(ui_resource_id); | 6576 host_impl_->DeleteUIResource(ui_resource_id); |
6590 EXPECT_EQ(0u, context3d->NumTextures()); | 6577 EXPECT_EQ(0u, context3d->NumTextures()); |
6591 } | 6578 } |
6592 | 6579 |
6593 } // namespace | 6580 } // namespace |
6594 } // namespace cc | 6581 } // namespace cc |
OLD | NEW |