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/layer_tree_host_impl.h" | 5 #include "cc/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/compositor_frame_metadata.h" |
12 #include "cc/delegated_renderer_layer_impl.h" | 13 #include "cc/delegated_renderer_layer_impl.h" |
13 #include "cc/gl_renderer.h" | 14 #include "cc/gl_renderer.h" |
14 #include "cc/heads_up_display_layer_impl.h" | 15 #include "cc/heads_up_display_layer_impl.h" |
15 #include "cc/io_surface_layer_impl.h" | 16 #include "cc/io_surface_layer_impl.h" |
16 #include "cc/layer_impl.h" | 17 #include "cc/layer_impl.h" |
17 #include "cc/layer_tiling_data.h" | 18 #include "cc/layer_tiling_data.h" |
18 #include "cc/layer_tree_impl.h" | 19 #include "cc/layer_tree_impl.h" |
19 #include "cc/math_util.h" | 20 #include "cc/math_util.h" |
20 #include "cc/quad_sink.h" | 21 #include "cc/quad_sink.h" |
21 #include "cc/render_pass_draw_quad.h" | 22 #include "cc/render_pass_draw_quad.h" |
(...skipping 4176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4198 EXPECT_FALSE(m_didRequestCommit); | 4199 EXPECT_FALSE(m_didRequestCommit); |
4199 } | 4200 } |
4200 | 4201 |
4201 struct RenderPassRemovalTestData : public LayerTreeHostImpl::FrameData { | 4202 struct RenderPassRemovalTestData : public LayerTreeHostImpl::FrameData { |
4202 ScopedPtrHashMap<RenderPass::Id, TestRenderPass> renderPassCache; | 4203 ScopedPtrHashMap<RenderPass::Id, TestRenderPass> renderPassCache; |
4203 scoped_ptr<SharedQuadState> sharedQuadState; | 4204 scoped_ptr<SharedQuadState> sharedQuadState; |
4204 }; | 4205 }; |
4205 | 4206 |
4206 class TestRenderer : public GLRenderer, public RendererClient { | 4207 class TestRenderer : public GLRenderer, public RendererClient { |
4207 public: | 4208 public: |
4208 static scoped_ptr<TestRenderer> create(ResourceProvider* resourceProvider, P
roxy* proxy) | 4209 static scoped_ptr<TestRenderer> create(ResourceProvider* resourceProvider, O
utputSurface* outputSurface, Proxy* proxy) |
4209 { | 4210 { |
4210 scoped_ptr<TestRenderer> renderer(new TestRenderer(resourceProvider, pro
xy)); | 4211 scoped_ptr<TestRenderer> renderer(new TestRenderer(resourceProvider, out
putSurface, proxy)); |
4211 if (!renderer->initialize()) | 4212 if (!renderer->initialize()) |
4212 return scoped_ptr<TestRenderer>(); | 4213 return scoped_ptr<TestRenderer>(); |
4213 | 4214 |
4214 return renderer.Pass(); | 4215 return renderer.Pass(); |
4215 } | 4216 } |
4216 | 4217 |
4217 void clearCachedTextures() { m_textures.clear(); } | 4218 void clearCachedTextures() { m_textures.clear(); } |
4218 void setHaveCachedResourcesForRenderPassId(RenderPass::Id id) { m_textures.i
nsert(id); } | 4219 void setHaveCachedResourcesForRenderPassId(RenderPass::Id id) { m_textures.i
nsert(id); } |
4219 | 4220 |
4220 virtual bool haveCachedResourcesForRenderPassId(RenderPass::Id id) const OVE
RRIDE { return m_textures.count(id); } | 4221 virtual bool haveCachedResourcesForRenderPassId(RenderPass::Id id) const OVE
RRIDE { return m_textures.count(id); } |
4221 | 4222 |
4222 // RendererClient implementation. | 4223 // RendererClient implementation. |
4223 virtual const gfx::Size& deviceViewportSize() const OVERRIDE { return m_view
portSize; } | 4224 virtual const gfx::Size& deviceViewportSize() const OVERRIDE { return m_view
portSize; } |
4224 virtual const LayerTreeSettings& settings() const OVERRIDE { return m_settin
gs; } | 4225 virtual const LayerTreeSettings& settings() const OVERRIDE { return m_settin
gs; } |
4225 virtual void didLoseOutputSurface() OVERRIDE { } | 4226 virtual void didLoseOutputSurface() OVERRIDE { } |
4226 virtual void onSwapBuffersComplete() OVERRIDE { } | 4227 virtual void onSwapBuffersComplete() OVERRIDE { } |
4227 virtual void setFullRootLayerDamage() OVERRIDE { } | 4228 virtual void setFullRootLayerDamage() OVERRIDE { } |
4228 virtual void setManagedMemoryPolicy(const ManagedMemoryPolicy& policy) OVERR
IDE { } | 4229 virtual void setManagedMemoryPolicy(const ManagedMemoryPolicy& policy) OVERR
IDE { } |
4229 virtual void enforceManagedMemoryPolicy(const ManagedMemoryPolicy& policy) O
VERRIDE { } | 4230 virtual void enforceManagedMemoryPolicy(const ManagedMemoryPolicy& policy) O
VERRIDE { } |
4230 virtual bool hasImplThread() const OVERRIDE { return false; } | 4231 virtual bool hasImplThread() const OVERRIDE { return false; } |
| 4232 virtual CompositorFrameMetadata makeCompositorFrameMetadata() const |
| 4233 OVERRIDE { return CompositorFrameMetadata(); } |
4231 | 4234 |
4232 protected: | 4235 protected: |
4233 TestRenderer(ResourceProvider* resourceProvider, Proxy* proxy) : GLRenderer(
this, resourceProvider) { } | 4236 TestRenderer(ResourceProvider* resourceProvider, OutputSurface* outputSurfac
e, Proxy* proxy) : GLRenderer(this, outputSurface, resourceProvider) { } |
4234 | 4237 |
4235 private: | 4238 private: |
4236 LayerTreeSettings m_settings; | 4239 LayerTreeSettings m_settings; |
4237 gfx::Size m_viewportSize; | 4240 gfx::Size m_viewportSize; |
4238 base::hash_set<RenderPass::Id> m_textures; | 4241 base::hash_set<RenderPass::Id> m_textures; |
4239 }; | 4242 }; |
4240 | 4243 |
4241 static void configureRenderPassTestData(const char* testScript, RenderPassRemova
lTestData& testData, TestRenderer* renderer) | 4244 static void configureRenderPassTestData(const char* testScript, RenderPassRemova
lTestData& testData, TestRenderer* renderer) |
4242 { | 4245 { |
4243 renderer->clearCachedTextures(); | 4246 renderer->clearCachedTextures(); |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4514 dumpRenderPassTestData(testData, actualResult); | 4517 dumpRenderPassTestData(testData, actualResult); |
4515 EXPECT_STREQ(testCase.expectedResult, actualResult) << "In test case: " << t
estCase.name; | 4518 EXPECT_STREQ(testCase.expectedResult, actualResult) << "In test case: " << t
estCase.name; |
4516 } | 4519 } |
4517 | 4520 |
4518 TEST_P(LayerTreeHostImplTest, testRemoveRenderPasses) | 4521 TEST_P(LayerTreeHostImplTest, testRemoveRenderPasses) |
4519 { | 4522 { |
4520 scoped_ptr<OutputSurface> outputSurface(createOutputSurface()); | 4523 scoped_ptr<OutputSurface> outputSurface(createOutputSurface()); |
4521 ASSERT_TRUE(outputSurface->Context3D()); | 4524 ASSERT_TRUE(outputSurface->Context3D()); |
4522 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu
tSurface.get())); | 4525 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu
tSurface.get())); |
4523 | 4526 |
4524 scoped_ptr<TestRenderer> renderer(TestRenderer::create(resourceProvider.get(
), &m_proxy)); | 4527 scoped_ptr<TestRenderer> renderer(TestRenderer::create(resourceProvider.get(
), outputSurface.get(), &m_proxy)); |
4525 | 4528 |
4526 int testCaseIndex = 0; | 4529 int testCaseIndex = 0; |
4527 while (removeRenderPassesCases[testCaseIndex].name) { | 4530 while (removeRenderPassesCases[testCaseIndex].name) { |
4528 RenderPassRemovalTestData testData; | 4531 RenderPassRemovalTestData testData; |
4529 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS
cript, testData, renderer.get()); | 4532 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS
cript, testData, renderer.get()); |
4530 LayerTreeHostImpl::removeRenderPasses(LayerTreeHostImpl::CullRenderPasse
sWithCachedTextures(*renderer), testData); | 4533 LayerTreeHostImpl::removeRenderPasses(LayerTreeHostImpl::CullRenderPasse
sWithCachedTextures(*renderer), testData); |
4531 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); | 4534 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat
a); |
4532 testCaseIndex++; | 4535 testCaseIndex++; |
4533 } | 4536 } |
4534 } | 4537 } |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4928 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize()); | 4931 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize()); |
4929 drawFrameAndTestDamage(noDamage); | 4932 drawFrameAndTestDamage(noDamage); |
4930 } | 4933 } |
4931 | 4934 |
4932 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, | 4935 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, |
4933 LayerTreeHostImplTest, | 4936 LayerTreeHostImplTest, |
4934 ::testing::Values(false, true)); | 4937 ::testing::Values(false, true)); |
4935 | 4938 |
4936 } // namespace | 4939 } // namespace |
4937 } // namespace cc | 4940 } // namespace cc |
OLD | NEW |