OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "cc/delegated_renderer_layer_impl.h" | 7 #include "cc/delegated_renderer_layer_impl.h" |
8 | 8 |
9 #include "cc/append_quads_data.h" | 9 #include "cc/append_quads_data.h" |
10 #include "cc/layer_tree_host_impl.h" | 10 #include "cc/layer_tree_host_impl.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 using namespace cc; | 29 using namespace cc; |
30 using namespace WebKitTests; | 30 using namespace WebKitTests; |
31 | 31 |
32 namespace { | 32 namespace { |
33 | 33 |
34 class DelegatedRendererLayerImplTest : public testing::Test, public LayerTreeHos
tImplClient { | 34 class DelegatedRendererLayerImplTest : public testing::Test, public LayerTreeHos
tImplClient { |
35 public: | 35 public: |
36 DelegatedRendererLayerImplTest() | 36 DelegatedRendererLayerImplTest() |
37 { | 37 { |
38 LayerTreeSettings settings; | 38 LayerTreeSettings settings; |
39 settings.minimumOcclusionTrackingSize = IntSize(); | 39 settings.minimumOcclusionTrackingSize = gfx::Size(); |
40 | 40 |
41 m_hostImpl = LayerTreeHostImpl::create(settings, this); | 41 m_hostImpl = LayerTreeHostImpl::create(settings, this); |
42 m_hostImpl->initializeRenderer(createContext()); | 42 m_hostImpl->initializeRenderer(createContext()); |
43 m_hostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10)); | 43 m_hostImpl->setViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); |
44 } | 44 } |
45 | 45 |
46 // LayerTreeHostImplClient implementation. | 46 // LayerTreeHostImplClient implementation. |
47 virtual void didLoseContextOnImplThread() OVERRIDE { } | 47 virtual void didLoseContextOnImplThread() OVERRIDE { } |
48 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } | 48 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } |
49 virtual void onVSyncParametersChanged(base::TimeTicks, base::TimeDelta) OVER
RIDE { } | 49 virtual void onVSyncParametersChanged(base::TimeTicks, base::TimeDelta) OVER
RIDE { } |
50 virtual void onCanDrawStateChanged(bool) OVERRIDE { } | 50 virtual void onCanDrawStateChanged(bool) OVERRIDE { } |
51 virtual void setNeedsRedrawOnImplThread() OVERRIDE { } | 51 virtual void setNeedsRedrawOnImplThread() OVERRIDE { } |
52 virtual void setNeedsCommitOnImplThread() OVERRIDE { } | 52 virtual void setNeedsCommitOnImplThread() OVERRIDE { } |
53 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, base::Time wallClockTime) OVERRIDE { } | 53 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, base::Time wallClockTime) OVERRIDE { } |
54 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return true; } | 54 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return true; } |
55 virtual void sendManagedMemoryStats() OVERRIDE { } | 55 virtual void sendManagedMemoryStats() OVERRIDE { } |
56 | 56 |
57 protected: | 57 protected: |
58 scoped_ptr<GraphicsContext> createContext() | 58 scoped_ptr<GraphicsContext> createContext() |
59 { | 59 { |
60 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<GraphicsContext>(); | 60 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<GraphicsContext>(); |
61 } | 61 } |
62 | 62 |
63 DebugScopedSetImplThread m_alwaysImplThread; | 63 DebugScopedSetImplThread m_alwaysImplThread; |
64 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; | 64 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; |
65 | 65 |
66 scoped_ptr<LayerTreeHostImpl> m_hostImpl; | 66 scoped_ptr<LayerTreeHostImpl> m_hostImpl; |
67 }; | 67 }; |
68 | 68 |
69 static TestRenderPass* addRenderPass(ScopedPtrVector<RenderPass>& passList, Rend
erPass::Id id, IntRect outputRect, WebTransformationMatrix rootTransform) | 69 static TestRenderPass* addRenderPass(ScopedPtrVector<RenderPass>& passList, Rend
erPass::Id id, gfx::Rect outputRect, WebTransformationMatrix rootTransform) |
70 { | 70 { |
71 scoped_ptr<TestRenderPass> pass(TestRenderPass::create(id, outputRect, rootT
ransform)); | 71 scoped_ptr<TestRenderPass> pass(TestRenderPass::create(id, outputRect, rootT
ransform)); |
72 TestRenderPass* saved = pass.get(); | 72 TestRenderPass* saved = pass.get(); |
73 passList.append(pass.PassAs<RenderPass>()); | 73 passList.append(pass.PassAs<RenderPass>()); |
74 return saved; | 74 return saved; |
75 } | 75 } |
76 | 76 |
77 static SolidColorDrawQuad* addQuad(TestRenderPass* pass, IntRect rect, SkColor c
olor) | 77 static SolidColorDrawQuad* addQuad(TestRenderPass* pass, gfx::Rect rect, SkColor
color) |
78 { | 78 { |
79 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); | 79 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); |
80 AppendQuadsData data(pass->id()); | 80 AppendQuadsData data(pass->id()); |
81 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
create(WebTransformationMatrix(), rect, rect, 1, false)); | 81 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
create(WebTransformationMatrix(), rect, rect, 1, false)); |
82 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::create(sharedState
, rect, color); | 82 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::create(sharedState
, rect, color); |
83 SolidColorDrawQuad* quadPtr = quad.get(); | 83 SolidColorDrawQuad* quadPtr = quad.get(); |
84 quadSink.append(quad.PassAs<DrawQuad>(), data); | 84 quadSink.append(quad.PassAs<DrawQuad>(), data); |
85 return quadPtr; | 85 return quadPtr; |
86 } | 86 } |
87 | 87 |
(...skipping 10 matching lines...) Expand all Loading... |
98 class DelegatedRendererLayerImplTestSimple : public DelegatedRendererLayerImplTe
st { | 98 class DelegatedRendererLayerImplTestSimple : public DelegatedRendererLayerImplTe
st { |
99 public: | 99 public: |
100 DelegatedRendererLayerImplTestSimple() | 100 DelegatedRendererLayerImplTestSimple() |
101 : DelegatedRendererLayerImplTest() | 101 : DelegatedRendererLayerImplTest() |
102 { | 102 { |
103 scoped_ptr<LayerImpl> rootLayer = SolidColorLayerImpl::create(1).PassAs<
LayerImpl>(); | 103 scoped_ptr<LayerImpl> rootLayer = SolidColorLayerImpl::create(1).PassAs<
LayerImpl>(); |
104 scoped_ptr<LayerImpl> layerBefore = SolidColorLayerImpl::create(2).PassA
s<LayerImpl>(); | 104 scoped_ptr<LayerImpl> layerBefore = SolidColorLayerImpl::create(2).PassA
s<LayerImpl>(); |
105 scoped_ptr<LayerImpl> layerAfter = SolidColorLayerImpl::create(3).PassAs
<LayerImpl>(); | 105 scoped_ptr<LayerImpl> layerAfter = SolidColorLayerImpl::create(3).PassAs
<LayerImpl>(); |
106 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(4); | 106 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(4); |
107 | 107 |
108 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); | 108 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
109 rootLayer->setBounds(IntSize(100, 100)); | 109 rootLayer->setBounds(gfx::Size(100, 100)); |
110 | 110 |
111 layerBefore->setPosition(IntPoint(20, 20)); | 111 layerBefore->setPosition(gfx::Point(20, 20)); |
112 layerBefore->setBounds(IntSize(14, 14)); | 112 layerBefore->setBounds(gfx::Size(14, 14)); |
113 layerBefore->setContentBounds(IntSize(14, 14)); | 113 layerBefore->setContentBounds(gfx::Size(14, 14)); |
114 layerBefore->setDrawsContent(true); | 114 layerBefore->setDrawsContent(true); |
115 layerBefore->setForceRenderSurface(true); | 115 layerBefore->setForceRenderSurface(true); |
116 | 116 |
117 layerAfter->setPosition(IntPoint(5, 5)); | 117 layerAfter->setPosition(gfx::Point(5, 5)); |
118 layerAfter->setBounds(IntSize(15, 15)); | 118 layerAfter->setBounds(gfx::Size(15, 15)); |
119 layerAfter->setContentBounds(IntSize(15, 15)); | 119 layerAfter->setContentBounds(gfx::Size(15, 15)); |
120 layerAfter->setDrawsContent(true); | 120 layerAfter->setDrawsContent(true); |
121 layerAfter->setForceRenderSurface(true); | 121 layerAfter->setForceRenderSurface(true); |
122 | 122 |
123 delegatedRendererLayer->setPosition(IntPoint(3, 3)); | 123 delegatedRendererLayer->setPosition(gfx::Point(3, 3)); |
124 delegatedRendererLayer->setBounds(IntSize(10, 10)); | 124 delegatedRendererLayer->setBounds(gfx::Size(10, 10)); |
125 delegatedRendererLayer->setContentBounds(IntSize(10, 10)); | 125 delegatedRendererLayer->setContentBounds(gfx::Size(10, 10)); |
126 delegatedRendererLayer->setDrawsContent(true); | 126 delegatedRendererLayer->setDrawsContent(true); |
127 WebTransformationMatrix transform; | 127 WebTransformationMatrix transform; |
128 transform.translate(1, 1); | 128 transform.translate(1, 1); |
129 delegatedRendererLayer->setTransform(transform); | 129 delegatedRendererLayer->setTransform(transform); |
130 | 130 |
131 ScopedPtrVector<RenderPass> delegatedRenderPasses; | 131 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
132 TestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 6), IntRect(6, 6, 6, 6), WebTransformationMatrix()); | 132 TestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 6), gfx::Rect(6, 6, 6, 6), WebTransformationMatrix()); |
133 addQuad(pass1, IntRect(0, 0, 6, 6), 33u); | 133 addQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u); |
134 TestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 7), IntRect(7, 7, 7, 7), WebTransformationMatrix()); | 134 TestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 7), gfx::Rect(7, 7, 7, 7), WebTransformationMatrix()); |
135 addQuad(pass2, IntRect(0, 0, 7, 7), 22u); | 135 addQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u); |
136 addRenderPassQuad(pass2, pass1); | 136 addRenderPassQuad(pass2, pass1); |
137 TestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 8), IntRect(8, 8, 8, 8), WebTransformationMatrix()); | 137 TestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 8), gfx::Rect(8, 8, 8, 8), WebTransformationMatrix()); |
138 addRenderPassQuad(pass3, pass2); | 138 addRenderPassQuad(pass3, pass2); |
139 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 139 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); |
140 | 140 |
141 // The RenderPasses should be taken by the layer. | 141 // The RenderPasses should be taken by the layer. |
142 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 142 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
143 | 143 |
144 m_rootLayerPtr = rootLayer.get(); | 144 m_rootLayerPtr = rootLayer.get(); |
145 m_layerBeforePtr = layerBefore.get(); | 145 m_layerBeforePtr = layerBefore.get(); |
146 m_layerAfterPtr = layerAfter.get(); | 146 m_layerAfterPtr = layerAfter.get(); |
147 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 147 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 180 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
181 // And all other RenderPasses should be non-delegated. | 181 // And all other RenderPasses should be non-delegated. |
182 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); | 182 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); |
183 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 183 EXPECT_EQ(0, frame.renderPasses[0]->id().index); |
184 EXPECT_NE(4, frame.renderPasses[3]->id().layerId); | 184 EXPECT_NE(4, frame.renderPasses[3]->id().layerId); |
185 EXPECT_EQ(0, frame.renderPasses[3]->id().index); | 185 EXPECT_EQ(0, frame.renderPasses[3]->id().index); |
186 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); | 186 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); |
187 EXPECT_EQ(0, frame.renderPasses[4]->id().index); | 187 EXPECT_EQ(0, frame.renderPasses[4]->id().index); |
188 | 188 |
189 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 189 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
190 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); | 190 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); |
191 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); | 191 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); |
192 } | 192 } |
193 | 193 |
194 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) | 194 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) |
195 { | 195 { |
196 LayerTreeHostImpl::FrameData frame; | 196 LayerTreeHostImpl::FrameData frame; |
197 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 197 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
198 m_hostImpl->drawLayers(frame); | 198 m_hostImpl->drawLayers(frame); |
199 m_hostImpl->didDrawAllLayers(frame); | 199 m_hostImpl->didDrawAllLayers(frame); |
200 | 200 |
201 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 201 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
202 ASSERT_EQ(5u, frame.renderPasses.size()); | 202 ASSERT_EQ(5u, frame.renderPasses.size()); |
203 | 203 |
204 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 204 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
205 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 205 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
206 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 206 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
207 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 207 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
208 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 208 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
209 | 209 |
210 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 210 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
211 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 211 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
212 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 212 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
213 | 213 |
214 // Verify it added the right quads. | 214 // Verify it added the right quads. |
215 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 215 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
216 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); | 216 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
quadRect()); |
217 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); | 217 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
quadRect()); |
218 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 218 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
219 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 219 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
220 } | 220 } |
221 | 221 |
222 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) | 222 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) |
223 { | 223 { |
224 LayerTreeHostImpl::FrameData frame; | 224 LayerTreeHostImpl::FrameData frame; |
225 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 225 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
226 m_hostImpl->drawLayers(frame); | 226 m_hostImpl->drawLayers(frame); |
227 m_hostImpl->didDrawAllLayers(frame); | 227 m_hostImpl->didDrawAllLayers(frame); |
228 | 228 |
229 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 229 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
230 ASSERT_EQ(5u, frame.renderPasses.size()); | 230 ASSERT_EQ(5u, frame.renderPasses.size()); |
231 | 231 |
232 // The layer's target is the RenderPass from m_layerAfter. | 232 // The layer's target is the RenderPass from m_layerAfter. |
233 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); | 233 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); |
234 | 234 |
235 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 235 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
236 // The m_layerAfter also adds one quad. | 236 // The m_layerAfter also adds one quad. |
237 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); | 237 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); |
238 | 238 |
239 // Verify it added the right quads. | 239 // Verify it added the right quads. |
240 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); | 240 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
quadRect()); |
241 | 241 |
242 // Its target layer should have a quad as well. | 242 // Its target layer should have a quad as well. |
243 EXPECT_RECT_EQ(IntRect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]->
quadRect()); | 243 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]
->quadRect()); |
244 } | 244 } |
245 | 245 |
246 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) | 246 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) |
247 { | 247 { |
248 LayerTreeHostImpl::FrameData frame; | 248 LayerTreeHostImpl::FrameData frame; |
249 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 249 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
250 m_hostImpl->drawLayers(frame); | 250 m_hostImpl->drawLayers(frame); |
251 m_hostImpl->didDrawAllLayers(frame); | 251 m_hostImpl->didDrawAllLayers(frame); |
252 | 252 |
253 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 253 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 ASSERT_EQ(6u, frame.renderPasses.size()); | 318 ASSERT_EQ(6u, frame.renderPasses.size()); |
319 | 319 |
320 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 320 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
321 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 321 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
322 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 322 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
323 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 323 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
324 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 324 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
325 | 325 |
326 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 326 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
327 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 327 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
328 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 328 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
329 | 329 |
330 // Verify it added the right quads. | 330 // Verify it added the right quads. |
331 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 331 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
332 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); | 332 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
quadRect()); |
333 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); | 333 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
quadRect()); |
334 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 334 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
335 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 335 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
336 } | 336 } |
337 | 337 |
338 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) | 338 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) |
339 { | 339 { |
340 LayerTreeHostImpl::FrameData frame; | 340 LayerTreeHostImpl::FrameData frame; |
341 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 341 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
342 m_hostImpl->drawLayers(frame); | 342 m_hostImpl->drawLayers(frame); |
343 m_hostImpl->didDrawAllLayers(frame); | 343 m_hostImpl->didDrawAllLayers(frame); |
344 | 344 |
345 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 345 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
346 ASSERT_EQ(6u, frame.renderPasses.size()); | 346 ASSERT_EQ(6u, frame.renderPasses.size()); |
347 | 347 |
348 // The layer's target is the RenderPass owned by itself. | 348 // The layer's target is the RenderPass owned by itself. |
349 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); | 349 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); |
350 | 350 |
351 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 351 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
352 // The m_layerAfter also adds one quad. | 352 // The m_layerAfter also adds one quad. |
353 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); | 353 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); |
354 | 354 |
355 // Verify it added the right quads. | 355 // Verify it added the right quads. |
356 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); | 356 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
quadRect()); |
357 } | 357 } |
358 | 358 |
359 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) | 359 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) |
360 { | 360 { |
361 LayerTreeHostImpl::FrameData frame; | 361 LayerTreeHostImpl::FrameData frame; |
362 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 362 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
363 m_hostImpl->drawLayers(frame); | 363 m_hostImpl->drawLayers(frame); |
364 m_hostImpl->didDrawAllLayers(frame); | 364 m_hostImpl->didDrawAllLayers(frame); |
365 | 365 |
366 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 366 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
(...skipping 12 matching lines...) Expand all Loading... |
379 } | 379 } |
380 | 380 |
381 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { | 381 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { |
382 public: | 382 public: |
383 DelegatedRendererLayerImplTestSharedData() | 383 DelegatedRendererLayerImplTestSharedData() |
384 : DelegatedRendererLayerImplTest() | 384 : DelegatedRendererLayerImplTest() |
385 { | 385 { |
386 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); | 386 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); |
387 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); | 387 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); |
388 | 388 |
389 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); | 389 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
390 rootLayer->setBounds(IntSize(100, 100)); | 390 rootLayer->setBounds(gfx::Size(100, 100)); |
391 | 391 |
392 delegatedRendererLayer->setPosition(IntPoint(20, 20)); | 392 delegatedRendererLayer->setPosition(gfx::Point(20, 20)); |
393 delegatedRendererLayer->setBounds(IntSize(20, 20)); | 393 delegatedRendererLayer->setBounds(gfx::Size(20, 20)); |
394 delegatedRendererLayer->setContentBounds(IntSize(20, 20)); | 394 delegatedRendererLayer->setContentBounds(gfx::Size(20, 20)); |
395 delegatedRendererLayer->setDrawsContent(true); | 395 delegatedRendererLayer->setDrawsContent(true); |
396 WebTransformationMatrix transform; | 396 WebTransformationMatrix transform; |
397 transform.translate(10, 10); | 397 transform.translate(10, 10); |
398 delegatedRendererLayer->setTransform(transform); | 398 delegatedRendererLayer->setTransform(transform); |
399 | 399 |
400 ScopedPtrVector<RenderPass> delegatedRenderPasses; | 400 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
401 IntRect passRect(0, 0, 50, 50); | 401 gfx::Rect passRect(0, 0, 50, 50); |
402 TestRenderPass* pass = addRenderPass(delegatedRenderPasses, RenderPass::
Id(9, 6), passRect, WebTransformationMatrix()); | 402 TestRenderPass* pass = addRenderPass(delegatedRenderPasses, RenderPass::
Id(9, 6), passRect, WebTransformationMatrix()); |
403 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); | 403 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); |
404 AppendQuadsData data(pass->id()); | 404 AppendQuadsData data(pass->id()); |
405 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadSta
te::create(WebTransformationMatrix(), passRect, passRect, 1, false)); | 405 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadSta
te::create(WebTransformationMatrix(), passRect, passRect, 1, false)); |
406 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(0, 0, 10
, 10), 1u).PassAs<DrawQuad>(), data); | 406 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(0, 0,
10, 10), 1u).PassAs<DrawQuad>(), data); |
407 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(0, 10, 1
0, 10), 2u).PassAs<DrawQuad>(), data); | 407 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(0, 10,
10, 10), 2u).PassAs<DrawQuad>(), data); |
408 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(10, 0, 1
0, 10), 3u).PassAs<DrawQuad>(), data); | 408 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(10, 0,
10, 10), 3u).PassAs<DrawQuad>(), data); |
409 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(10, 10,
10, 10), 4u).PassAs<DrawQuad>(), data); | 409 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(10, 10
, 10, 10), 4u).PassAs<DrawQuad>(), data); |
410 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 410 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); |
411 | 411 |
412 // The RenderPasses should be taken by the layer. | 412 // The RenderPasses should be taken by the layer. |
413 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 413 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
414 | 414 |
415 m_rootLayerPtr = rootLayer.get(); | 415 m_rootLayerPtr = rootLayer.get(); |
416 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 416 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
417 | 417 |
418 rootLayer->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); | 418 rootLayer->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); |
419 | 419 |
(...skipping 19 matching lines...) Expand all Loading... |
439 const QuadList& quadList = frame.renderPasses[0]->quadList(); | 439 const QuadList& quadList = frame.renderPasses[0]->quadList(); |
440 ASSERT_EQ(4u, quadList.size()); | 440 ASSERT_EQ(4u, quadList.size()); |
441 | 441 |
442 // All quads should share the same state. | 442 // All quads should share the same state. |
443 const SharedQuadState* sharedState = quadList[0]->sharedQuadState(); | 443 const SharedQuadState* sharedState = quadList[0]->sharedQuadState(); |
444 EXPECT_EQ(sharedState, quadList[1]->sharedQuadState()); | 444 EXPECT_EQ(sharedState, quadList[1]->sharedQuadState()); |
445 EXPECT_EQ(sharedState, quadList[2]->sharedQuadState()); | 445 EXPECT_EQ(sharedState, quadList[2]->sharedQuadState()); |
446 EXPECT_EQ(sharedState, quadList[3]->sharedQuadState()); | 446 EXPECT_EQ(sharedState, quadList[3]->sharedQuadState()); |
447 | 447 |
448 // The state should be transformed only once. | 448 // The state should be transformed only once. |
449 EXPECT_RECT_EQ(IntRect(30, 30, 50, 50), sharedState->clippedRectInTarget); | 449 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clippedRectInTarget); |
450 WebTransformationMatrix expected; | 450 WebTransformationMatrix expected; |
451 expected.translate(30, 30); | 451 expected.translate(30, 30); |
452 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); | 452 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); |
453 } | 453 } |
454 | 454 |
455 } // namespace | 455 } // namespace |
OLD | NEW |