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 "cc/delegated_renderer_layer_impl.h" | 5 #include "cc/delegated_renderer_layer_impl.h" |
6 | 6 |
7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
8 #include "cc/layer_tree_host_impl.h" | 8 #include "cc/layer_tree_host_impl.h" |
9 #include "cc/quad_sink.h" | 9 #include "cc/quad_sink.h" |
10 #include "cc/render_pass_draw_quad.h" | 10 #include "cc/render_pass_draw_quad.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<GraphicsContext>(); | 61 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<GraphicsContext>(); |
62 } | 62 } |
63 | 63 |
64 FakeProxy m_proxy; | 64 FakeProxy m_proxy; |
65 DebugScopedSetImplThreadAndMainThreadBlocked m_alwaysImplThreadAndMainThread
Blocked; | 65 DebugScopedSetImplThreadAndMainThreadBlocked m_alwaysImplThreadAndMainThread
Blocked; |
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, gfx::Rect 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()); |
| 72 pass->SetNew(id, outputRect, outputRect, rootTransform); |
72 TestRenderPass* saved = pass.get(); | 73 TestRenderPass* saved = pass.get(); |
73 passList.append(pass.PassAs<RenderPass>()); | 74 passList.append(pass.PassAs<RenderPass>()); |
74 return saved; | 75 return saved; |
75 } | 76 } |
76 | 77 |
77 static SolidColorDrawQuad* addQuad(TestRenderPass* pass, gfx::Rect rect, SkColor
color) | 78 static SolidColorDrawQuad* addQuad(TestRenderPass* pass, gfx::Rect rect, SkColor
color) |
78 { | 79 { |
79 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); | 80 MockQuadCuller quadSink(pass->quad_list, pass->shared_quad_state_list); |
80 AppendQuadsData data(pass->id()); | 81 AppendQuadsData data(pass->id); |
81 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
Create()); | 82 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
Create()); |
82 sharedState->SetAll(WebTransformationMatrix(), rect, rect, 1); | 83 sharedState->SetAll(WebTransformationMatrix(), rect, rect, 1); |
83 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); | 84 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); |
84 quad->SetNew(sharedState, rect, color); | 85 quad->SetNew(sharedState, rect, color); |
85 SolidColorDrawQuad* quadPtr = quad.get(); | 86 SolidColorDrawQuad* quadPtr = quad.get(); |
86 quadSink.append(quad.PassAs<DrawQuad>(), data); | 87 quadSink.append(quad.PassAs<DrawQuad>(), data); |
87 return quadPtr; | 88 return quadPtr; |
88 } | 89 } |
89 | 90 |
90 static void addRenderPassQuad(TestRenderPass* toPass, TestRenderPass* contributi
ngPass) | 91 static void addRenderPassQuad(TestRenderPass* toPass, TestRenderPass* contributi
ngPass) |
91 { | 92 { |
92 MockQuadCuller quadSink(toPass->quadList(), toPass->sharedQuadStateList()); | 93 MockQuadCuller quadSink(toPass->quad_list, toPass->shared_quad_state_list); |
93 AppendQuadsData data(toPass->id()); | 94 AppendQuadsData data(toPass->id); |
94 gfx::Rect outputRect = contributingPass->outputRect(); | 95 gfx::Rect outputRect = contributingPass->output_rect; |
95 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
Create()); | 96 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
Create()); |
96 sharedState->SetAll(WebTransformationMatrix(), outputRect, outputRect, 1); | 97 sharedState->SetAll(WebTransformationMatrix(), outputRect, outputRect, 1); |
97 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); | 98 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); |
98 quad->SetNew(sharedState, outputRect, contributingPass->id(), false, 0, outp
utRect, 0, 0, 0, 0); | 99 quad->SetNew(sharedState, outputRect, contributingPass->id, false, 0, output
Rect, 0, 0, 0, 0); |
99 quadSink.append(quad.PassAs<DrawQuad>(), data); | 100 quadSink.append(quad.PassAs<DrawQuad>(), data); |
100 } | 101 } |
101 | 102 |
102 class DelegatedRendererLayerImplTestSimple : public DelegatedRendererLayerImplTe
st { | 103 class DelegatedRendererLayerImplTestSimple : public DelegatedRendererLayerImplTe
st { |
103 public: | 104 public: |
104 DelegatedRendererLayerImplTestSimple() | 105 DelegatedRendererLayerImplTestSimple() |
105 : DelegatedRendererLayerImplTest() | 106 : DelegatedRendererLayerImplTest() |
106 { | 107 { |
107 scoped_ptr<LayerImpl> rootLayer = SolidColorLayerImpl::create(1).PassAs<
LayerImpl>(); | 108 scoped_ptr<LayerImpl> rootLayer = SolidColorLayerImpl::create(1).PassAs<
LayerImpl>(); |
108 scoped_ptr<LayerImpl> layerBefore = SolidColorLayerImpl::create(2).PassA
s<LayerImpl>(); | 109 scoped_ptr<LayerImpl> layerBefore = SolidColorLayerImpl::create(2).PassA
s<LayerImpl>(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 { | 172 { |
172 LayerTreeHostImpl::FrameData frame; | 173 LayerTreeHostImpl::FrameData frame; |
173 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 174 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
174 m_hostImpl->drawLayers(frame); | 175 m_hostImpl->drawLayers(frame); |
175 m_hostImpl->didDrawAllLayers(frame); | 176 m_hostImpl->didDrawAllLayers(frame); |
176 | 177 |
177 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 178 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
178 ASSERT_EQ(5u, frame.renderPasses.size()); | 179 ASSERT_EQ(5u, frame.renderPasses.size()); |
179 | 180 |
180 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 181 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
181 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 182 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
182 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 183 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
183 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 184 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
184 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 185 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
185 // And all other RenderPasses should be non-delegated. | 186 // And all other RenderPasses should be non-delegated. |
186 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); | 187 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); |
187 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 188 EXPECT_EQ(0, frame.renderPasses[0]->id.index); |
188 EXPECT_NE(4, frame.renderPasses[3]->id().layerId); | 189 EXPECT_NE(4, frame.renderPasses[3]->id.layer_id); |
189 EXPECT_EQ(0, frame.renderPasses[3]->id().index); | 190 EXPECT_EQ(0, frame.renderPasses[3]->id.index); |
190 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); | 191 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); |
191 EXPECT_EQ(0, frame.renderPasses[4]->id().index); | 192 EXPECT_EQ(0, frame.renderPasses[4]->id.index); |
192 | 193 |
193 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 194 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
194 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); | 195 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); |
195 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); | 196 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); |
196 } | 197 } |
197 | 198 |
198 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) | 199 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) |
199 { | 200 { |
200 LayerTreeHostImpl::FrameData frame; | 201 LayerTreeHostImpl::FrameData frame; |
201 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 202 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
202 m_hostImpl->drawLayers(frame); | 203 m_hostImpl->drawLayers(frame); |
203 m_hostImpl->didDrawAllLayers(frame); | 204 m_hostImpl->didDrawAllLayers(frame); |
204 | 205 |
205 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 206 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
206 ASSERT_EQ(5u, frame.renderPasses.size()); | 207 ASSERT_EQ(5u, frame.renderPasses.size()); |
207 | 208 |
208 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 209 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
209 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 210 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
210 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 211 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
211 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 212 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
212 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 213 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
213 | 214 |
214 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 215 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
215 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 216 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
216 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); | 217 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
217 | 218 |
218 // Verify it added the right quads. | 219 // Verify it added the right quads. |
219 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 220 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
220 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
rect); | 221 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r
ect); |
221 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
rect); | 222 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r
ect); |
222 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 223 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
223 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); | 224 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
224 } | 225 } |
225 | 226 |
226 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) | 227 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) |
227 { | 228 { |
228 LayerTreeHostImpl::FrameData frame; | 229 LayerTreeHostImpl::FrameData frame; |
229 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 230 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
230 m_hostImpl->drawLayers(frame); | 231 m_hostImpl->drawLayers(frame); |
231 m_hostImpl->didDrawAllLayers(frame); | 232 m_hostImpl->didDrawAllLayers(frame); |
232 | 233 |
233 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 234 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
234 ASSERT_EQ(5u, frame.renderPasses.size()); | 235 ASSERT_EQ(5u, frame.renderPasses.size()); |
235 | 236 |
236 // The layer's target is the RenderPass from m_layerAfter. | 237 // The layer's target is the RenderPass from m_layerAfter. |
237 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); | 238 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id); |
238 | 239 |
239 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 240 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
240 // The m_layerAfter also adds one quad. | 241 // The m_layerAfter also adds one quad. |
241 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); | 242 ASSERT_EQ(2u, frame.renderPasses[3]->quad_list.size()); |
242 | 243 |
243 // Verify it added the right quads. | 244 // Verify it added the right quads. |
244 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
rect); | 245 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r
ect); |
245 | 246 |
246 // Its target layer should have a quad as well. | 247 // Its target layer should have a quad as well. |
247 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]
->rect); | 248 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quad_list[1]-
>rect); |
248 } | 249 } |
249 | 250 |
250 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) | 251 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) |
251 { | 252 { |
252 LayerTreeHostImpl::FrameData frame; | 253 LayerTreeHostImpl::FrameData frame; |
253 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 254 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
254 m_hostImpl->drawLayers(frame); | 255 m_hostImpl->drawLayers(frame); |
255 m_hostImpl->didDrawAllLayers(frame); | 256 m_hostImpl->didDrawAllLayers(frame); |
256 | 257 |
257 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 258 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
258 ASSERT_EQ(5u, frame.renderPasses.size()); | 259 ASSERT_EQ(5u, frame.renderPasses.size()); |
259 | 260 |
260 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
has a translation transform of 1,1. | 261 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
has a translation transform of 1,1. |
261 // So its root RenderPass' quads should all be transformed by that combined
amount. | 262 // So its root RenderPass' quads should all be transformed by that combined
amount. |
262 WebTransformationMatrix transform; | 263 WebTransformationMatrix transform; |
263 transform.translate(4, 4); | 264 transform.translate(4, 4); |
264 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quadList()
[0]->quadTransform()); | 265 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quad_list[
0]->quadTransform()); |
265 | 266 |
266 // Quads from non-root RenderPasses should not be shifted though. | 267 // Quads from non-root RenderPasses should not be shifted though. |
267 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 268 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
268 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[0]->quadTransform()); | 269 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quad_list[0]->quadTransform()); |
269 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[1]->quadTransform()); | 270 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quad_list[1]->quadTransform()); |
270 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 271 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
271 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quadList()[0]->quadTransform()); | 272 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quad_list[0]->quadTransform()); |
272 } | 273 } |
273 | 274 |
274 class DelegatedRendererLayerImplTestOwnSurface : public DelegatedRendererLayerIm
plTestSimple { | 275 class DelegatedRendererLayerImplTestOwnSurface : public DelegatedRendererLayerIm
plTestSimple { |
275 public: | 276 public: |
276 DelegatedRendererLayerImplTestOwnSurface() | 277 DelegatedRendererLayerImplTestOwnSurface() |
277 : DelegatedRendererLayerImplTestSimple() | 278 : DelegatedRendererLayerImplTestSimple() |
278 { | 279 { |
279 m_delegatedRendererLayerPtr->setForceRenderSurface(true); | 280 m_delegatedRendererLayerPtr->setForceRenderSurface(true); |
280 } | 281 } |
281 }; | 282 }; |
282 | 283 |
283 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) | 284 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) |
284 { | 285 { |
285 LayerTreeHostImpl::FrameData frame; | 286 LayerTreeHostImpl::FrameData frame; |
286 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 287 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
287 m_hostImpl->drawLayers(frame); | 288 m_hostImpl->drawLayers(frame); |
288 m_hostImpl->didDrawAllLayers(frame); | 289 m_hostImpl->didDrawAllLayers(frame); |
289 | 290 |
290 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 291 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
291 ASSERT_EQ(6u, frame.renderPasses.size()); | 292 ASSERT_EQ(6u, frame.renderPasses.size()); |
292 | 293 |
293 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 294 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
294 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 295 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
295 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 296 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
296 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 297 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
297 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 298 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
298 // The DelegatedRendererLayer should have added a RenderPass for its surface
to the frame. | 299 // The DelegatedRendererLayer should have added a RenderPass for its surface
to the frame. |
299 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 300 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
300 EXPECT_EQ(0, frame.renderPasses[3]->id().index); | 301 EXPECT_EQ(0, frame.renderPasses[3]->id.index); |
301 // And all other RenderPasses should be non-delegated. | 302 // And all other RenderPasses should be non-delegated. |
302 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); | 303 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); |
303 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 304 EXPECT_EQ(0, frame.renderPasses[0]->id.index); |
304 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); | 305 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); |
305 EXPECT_EQ(0, frame.renderPasses[4]->id().index); | 306 EXPECT_EQ(0, frame.renderPasses[4]->id.index); |
306 EXPECT_NE(4, frame.renderPasses[5]->id().layerId); | 307 EXPECT_NE(4, frame.renderPasses[5]->id.layer_id); |
307 EXPECT_EQ(0, frame.renderPasses[5]->id().index); | 308 EXPECT_EQ(0, frame.renderPasses[5]->id.index); |
308 | 309 |
309 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 310 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
310 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); | 311 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); |
311 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); | 312 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); |
312 } | 313 } |
313 | 314 |
314 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRenderPa
sses) | 315 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRenderPa
sses) |
315 { | 316 { |
316 LayerTreeHostImpl::FrameData frame; | 317 LayerTreeHostImpl::FrameData frame; |
317 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 318 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
318 m_hostImpl->drawLayers(frame); | 319 m_hostImpl->drawLayers(frame); |
319 m_hostImpl->didDrawAllLayers(frame); | 320 m_hostImpl->didDrawAllLayers(frame); |
320 | 321 |
321 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 322 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
322 ASSERT_EQ(6u, frame.renderPasses.size()); | 323 ASSERT_EQ(6u, frame.renderPasses.size()); |
323 | 324 |
324 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 325 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
325 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 326 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
326 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 327 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
327 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 328 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
328 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 329 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
329 | 330 |
330 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 331 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
331 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 332 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
332 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); | 333 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
333 | 334 |
334 // Verify it added the right quads. | 335 // Verify it added the right quads. |
335 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 336 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
336 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
rect); | 337 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r
ect); |
337 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
rect); | 338 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r
ect); |
338 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 339 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
339 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); | 340 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
340 } | 341 } |
341 | 342 |
342 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) | 343 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) |
343 { | 344 { |
344 LayerTreeHostImpl::FrameData frame; | 345 LayerTreeHostImpl::FrameData frame; |
345 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 346 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
346 m_hostImpl->drawLayers(frame); | 347 m_hostImpl->drawLayers(frame); |
347 m_hostImpl->didDrawAllLayers(frame); | 348 m_hostImpl->didDrawAllLayers(frame); |
348 | 349 |
349 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 350 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
350 ASSERT_EQ(6u, frame.renderPasses.size()); | 351 ASSERT_EQ(6u, frame.renderPasses.size()); |
351 | 352 |
352 // The layer's target is the RenderPass owned by itself. | 353 // The layer's target is the RenderPass owned by itself. |
353 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); | 354 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id); |
354 | 355 |
355 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 356 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
356 // The m_layerAfter also adds one quad. | 357 // The m_layerAfter also adds one quad. |
357 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); | 358 ASSERT_EQ(1u, frame.renderPasses[3]->quad_list.size()); |
358 | 359 |
359 // Verify it added the right quads. | 360 // Verify it added the right quads. |
360 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
rect); | 361 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r
ect); |
361 } | 362 } |
362 | 363 |
363 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) | 364 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) |
364 { | 365 { |
365 LayerTreeHostImpl::FrameData frame; | 366 LayerTreeHostImpl::FrameData frame; |
366 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 367 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
367 m_hostImpl->drawLayers(frame); | 368 m_hostImpl->drawLayers(frame); |
368 m_hostImpl->didDrawAllLayers(frame); | 369 m_hostImpl->didDrawAllLayers(frame); |
369 | 370 |
370 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 371 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
371 ASSERT_EQ(6u, frame.renderPasses.size()); | 372 ASSERT_EQ(6u, frame.renderPasses.size()); |
372 | 373 |
373 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root Ren
derPass' quads do not need to be | 374 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root Ren
derPass' quads do not need to be |
374 // modified at all. | 375 // modified at all. |
375 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[3]->quadList()[0]->quadTransform()); | 376 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[3]->quad_list[0]->quadTransform()); |
376 | 377 |
377 // Quads from non-root RenderPasses should not be shifted though. | 378 // Quads from non-root RenderPasses should not be shifted though. |
378 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 379 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
379 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[0]->quadTransform()); | 380 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quad_list[0]->quadTransform()); |
380 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quadList()[1]->quadTransform()); | 381 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[2]->quad_list[1]->quadTransform()); |
381 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 382 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
382 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quadList()[0]->quadTransform()); | 383 EXPECT_TRANSFORMATION_MATRIX_EQ(WebTransformationMatrix(), frame.renderPasse
s[1]->quad_list[0]->quadTransform()); |
383 } | 384 } |
384 | 385 |
385 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { | 386 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { |
386 public: | 387 public: |
387 DelegatedRendererLayerImplTestSharedData() | 388 DelegatedRendererLayerImplTestSharedData() |
388 : DelegatedRendererLayerImplTest() | 389 : DelegatedRendererLayerImplTest() |
389 { | 390 { |
390 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); | 391 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); |
391 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); | 392 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); |
392 | 393 |
393 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); | 394 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
394 rootLayer->setBounds(gfx::Size(100, 100)); | 395 rootLayer->setBounds(gfx::Size(100, 100)); |
395 | 396 |
396 delegatedRendererLayer->setPosition(gfx::Point(20, 20)); | 397 delegatedRendererLayer->setPosition(gfx::Point(20, 20)); |
397 delegatedRendererLayer->setBounds(gfx::Size(20, 20)); | 398 delegatedRendererLayer->setBounds(gfx::Size(20, 20)); |
398 delegatedRendererLayer->setContentBounds(gfx::Size(20, 20)); | 399 delegatedRendererLayer->setContentBounds(gfx::Size(20, 20)); |
399 delegatedRendererLayer->setDrawsContent(true); | 400 delegatedRendererLayer->setDrawsContent(true); |
400 WebTransformationMatrix transform; | 401 WebTransformationMatrix transform; |
401 transform.translate(10, 10); | 402 transform.translate(10, 10); |
402 delegatedRendererLayer->setTransform(transform); | 403 delegatedRendererLayer->setTransform(transform); |
403 | 404 |
404 ScopedPtrVector<RenderPass> delegatedRenderPasses; | 405 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
405 gfx::Rect passRect(0, 0, 50, 50); | 406 gfx::Rect passRect(0, 0, 50, 50); |
406 TestRenderPass* pass = addRenderPass(delegatedRenderPasses, RenderPass::
Id(9, 6), passRect, WebTransformationMatrix()); | 407 TestRenderPass* pass = addRenderPass(delegatedRenderPasses, RenderPass::
Id(9, 6), passRect, WebTransformationMatrix()); |
407 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); | 408 MockQuadCuller quadSink(pass->quad_list, pass->shared_quad_state_list); |
408 AppendQuadsData data(pass->id()); | 409 AppendQuadsData data(pass->id); |
409 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadSta
te::Create()); | 410 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadSta
te::Create()); |
410 sharedState->SetAll(WebTransformationMatrix(), passRect, passRect, 1); | 411 sharedState->SetAll(WebTransformationMatrix(), passRect, passRect, 1); |
411 scoped_ptr<SolidColorDrawQuad> colorQuad; | 412 scoped_ptr<SolidColorDrawQuad> colorQuad; |
412 | 413 |
413 colorQuad = SolidColorDrawQuad::Create(); | 414 colorQuad = SolidColorDrawQuad::Create(); |
414 colorQuad->SetNew(sharedState, gfx::Rect(0, 0, 10, 10), 1u); | 415 colorQuad->SetNew(sharedState, gfx::Rect(0, 0, 10, 10), 1u); |
415 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); | 416 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); |
416 | 417 |
417 colorQuad = SolidColorDrawQuad::Create(); | 418 colorQuad = SolidColorDrawQuad::Create(); |
418 colorQuad->SetNew(sharedState, gfx::Rect(0, 10, 10, 10), 2u); | 419 colorQuad->SetNew(sharedState, gfx::Rect(0, 10, 10, 10), 2u); |
(...skipping 26 matching lines...) Expand all Loading... |
445 }; | 446 }; |
446 | 447 |
447 TEST_F(DelegatedRendererLayerImplTestSharedData, SharedData) | 448 TEST_F(DelegatedRendererLayerImplTestSharedData, SharedData) |
448 { | 449 { |
449 LayerTreeHostImpl::FrameData frame; | 450 LayerTreeHostImpl::FrameData frame; |
450 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 451 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
451 m_hostImpl->drawLayers(frame); | 452 m_hostImpl->drawLayers(frame); |
452 m_hostImpl->didDrawAllLayers(frame); | 453 m_hostImpl->didDrawAllLayers(frame); |
453 | 454 |
454 ASSERT_EQ(1u, frame.renderPasses.size()); | 455 ASSERT_EQ(1u, frame.renderPasses.size()); |
455 EXPECT_EQ(1, frame.renderPasses[0]->id().layerId); | 456 EXPECT_EQ(1, frame.renderPasses[0]->id.layer_id); |
456 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 457 EXPECT_EQ(0, frame.renderPasses[0]->id.index); |
457 | 458 |
458 const QuadList& quadList = frame.renderPasses[0]->quadList(); | 459 const QuadList& quadList = frame.renderPasses[0]->quad_list; |
459 ASSERT_EQ(4u, quadList.size()); | 460 ASSERT_EQ(4u, quadList.size()); |
460 | 461 |
461 // All quads should share the same state. | 462 // All quads should share the same state. |
462 const SharedQuadState* sharedState = quadList[0]->shared_quad_state; | 463 const SharedQuadState* sharedState = quadList[0]->shared_quad_state; |
463 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); | 464 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); |
464 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); | 465 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); |
465 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); | 466 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); |
466 | 467 |
467 // The state should be transformed only once. | 468 // The state should be transformed only once. |
468 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clipped_rect_in_targe
t); | 469 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clipped_rect_in_targe
t); |
469 WebTransformationMatrix expected; | 470 WebTransformationMatrix expected; |
470 expected.translate(30, 30); | 471 expected.translate(30, 30); |
471 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra
nsform); | 472 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra
nsform); |
472 } | 473 } |
473 | 474 |
474 } // namespace | 475 } // namespace |
475 } // namespace cc | 476 } // namespace cc |
OLD | NEW |