| 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 |