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 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 LayerImpl* m_rootLayerPtr; | 165 LayerImpl* m_rootLayerPtr; |
166 LayerImpl* m_layerBeforePtr; | 166 LayerImpl* m_layerBeforePtr; |
167 LayerImpl* m_layerAfterPtr; | 167 LayerImpl* m_layerAfterPtr; |
168 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; | 168 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; |
169 }; | 169 }; |
170 | 170 |
171 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) | 171 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) |
172 { | 172 { |
173 LayerTreeHostImpl::FrameData frame; | 173 LayerTreeHostImpl::FrameData frame; |
174 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 174 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
175 m_hostImpl->drawLayers(frame); | |
176 m_hostImpl->didDrawAllLayers(frame); | |
177 | 175 |
178 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 176 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
179 ASSERT_EQ(5u, frame.renderPasses.size()); | 177 ASSERT_EQ(5u, frame.renderPasses.size()); |
180 | 178 |
181 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 179 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
182 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); | 180 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
183 EXPECT_EQ(1, frame.renderPasses[1]->id.index); | 181 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
184 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); | 182 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
185 EXPECT_EQ(2, frame.renderPasses[2]->id.index); | 183 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
186 // And all other RenderPasses should be non-delegated. | 184 // And all other RenderPasses should be non-delegated. |
187 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); | 185 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); |
188 EXPECT_EQ(0, frame.renderPasses[0]->id.index); | 186 EXPECT_EQ(0, frame.renderPasses[0]->id.index); |
189 EXPECT_NE(4, frame.renderPasses[3]->id.layer_id); | 187 EXPECT_NE(4, frame.renderPasses[3]->id.layer_id); |
190 EXPECT_EQ(0, frame.renderPasses[3]->id.index); | 188 EXPECT_EQ(0, frame.renderPasses[3]->id.index); |
191 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); | 189 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); |
192 EXPECT_EQ(0, frame.renderPasses[4]->id.index); | 190 EXPECT_EQ(0, frame.renderPasses[4]->id.index); |
193 | 191 |
194 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 192 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
195 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); | 193 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); |
196 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); | 194 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); |
| 195 |
| 196 m_hostImpl->drawLayers(frame); |
| 197 m_hostImpl->didDrawAllLayers(frame); |
197 } | 198 } |
198 | 199 |
199 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) | 200 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) |
200 { | 201 { |
201 LayerTreeHostImpl::FrameData frame; | 202 LayerTreeHostImpl::FrameData frame; |
202 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 203 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
203 m_hostImpl->drawLayers(frame); | |
204 m_hostImpl->didDrawAllLayers(frame); | |
205 | 204 |
206 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 205 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
207 ASSERT_EQ(5u, frame.renderPasses.size()); | 206 ASSERT_EQ(5u, frame.renderPasses.size()); |
208 | 207 |
209 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 208 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
210 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); | 209 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
211 EXPECT_EQ(1, frame.renderPasses[1]->id.index); | 210 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
212 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); | 211 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
213 EXPECT_EQ(2, frame.renderPasses[2]->id.index); | 212 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
214 | 213 |
215 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 214 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
216 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); | 215 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
217 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); | 216 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
218 | 217 |
219 // Verify it added the right quads. | 218 // Verify it added the right quads. |
220 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); | 219 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
221 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r
ect); | 220 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r
ect); |
222 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r
ect); | 221 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r
ect); |
223 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); | 222 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
224 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); | 223 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
| 224 |
| 225 m_hostImpl->drawLayers(frame); |
| 226 m_hostImpl->didDrawAllLayers(frame); |
225 } | 227 } |
226 | 228 |
227 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) | 229 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) |
228 { | 230 { |
229 LayerTreeHostImpl::FrameData frame; | 231 LayerTreeHostImpl::FrameData frame; |
230 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 232 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
231 m_hostImpl->drawLayers(frame); | |
232 m_hostImpl->didDrawAllLayers(frame); | |
233 | 233 |
234 // 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. |
235 ASSERT_EQ(5u, frame.renderPasses.size()); | 235 ASSERT_EQ(5u, frame.renderPasses.size()); |
236 | 236 |
237 // The layer's target is the RenderPass from m_layerAfter. | 237 // The layer's target is the RenderPass from m_layerAfter. |
238 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id); | 238 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id); |
239 | 239 |
240 // 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. |
241 // The m_layerAfter also adds one quad. | 241 // The m_layerAfter also adds one quad. |
242 ASSERT_EQ(2u, frame.renderPasses[3]->quad_list.size()); | 242 ASSERT_EQ(2u, frame.renderPasses[3]->quad_list.size()); |
243 | 243 |
244 // Verify it added the right quads. | 244 // Verify it added the right quads. |
245 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r
ect); | 245 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r
ect); |
246 | 246 |
247 // Its target layer should have a quad as well. | 247 // Its target layer should have a quad as well. |
248 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quad_list[1]-
>rect); | 248 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quad_list[1]-
>rect); |
| 249 |
| 250 m_hostImpl->drawLayers(frame); |
| 251 m_hostImpl->didDrawAllLayers(frame); |
249 } | 252 } |
250 | 253 |
251 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) | 254 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) |
252 { | 255 { |
253 LayerTreeHostImpl::FrameData frame; | 256 LayerTreeHostImpl::FrameData frame; |
254 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 257 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
255 m_hostImpl->drawLayers(frame); | |
256 m_hostImpl->didDrawAllLayers(frame); | |
257 | 258 |
258 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 259 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
259 ASSERT_EQ(5u, frame.renderPasses.size()); | 260 ASSERT_EQ(5u, frame.renderPasses.size()); |
260 | 261 |
261 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
has a translation transform of 1,1. | 262 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
has a translation transform of 1,1. |
262 // So its root RenderPass' quads should all be transformed by that combined
amount. | 263 // So its root RenderPass' quads should all be transformed by that combined
amount. |
263 gfx::Transform transform; | 264 gfx::Transform transform; |
264 transform.Translate(4, 4); | 265 transform.Translate(4, 4); |
265 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quad_list[
0]->quadTransform()); | 266 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, frame.renderPasses[3]->quad_list[
0]->quadTransform()); |
266 | 267 |
267 // Quads from non-root RenderPasses should not be shifted though. | 268 // Quads from non-root RenderPasses should not be shifted though. |
268 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); | 269 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
269 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[0]->quadTransform()); | 270 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[0]->quadTransform()); |
270 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[1]->quadTransform()); | 271 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[1]->quadTransform()); |
271 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); | 272 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
272 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua
d_list[0]->quadTransform()); | 273 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua
d_list[0]->quadTransform()); |
| 274 |
| 275 m_hostImpl->drawLayers(frame); |
| 276 m_hostImpl->didDrawAllLayers(frame); |
273 } | 277 } |
274 | 278 |
275 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) | 279 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) |
276 { | 280 { |
277 LayerTreeHostImpl::FrameData frame; | 281 LayerTreeHostImpl::FrameData frame; |
278 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 282 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
279 m_hostImpl->drawLayers(frame); | |
280 m_hostImpl->didDrawAllLayers(frame); | |
281 | 283 |
282 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then | 284 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then |
283 // it has no need to be a renderSurface for the quads it carries. | 285 // it has no need to be a renderSurface for the quads it carries. |
284 EXPECT_FALSE(m_delegatedRendererLayerPtr->renderSurface()); | 286 EXPECT_FALSE(m_delegatedRendererLayerPtr->renderSurface()); |
| 287 |
| 288 m_hostImpl->drawLayers(frame); |
| 289 m_hostImpl->didDrawAllLayers(frame); |
285 } | 290 } |
286 | 291 |
287 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurface) | 292 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurface) |
288 { | 293 { |
289 m_delegatedRendererLayerPtr->setOpacity(0.5f); | 294 m_delegatedRendererLayerPtr->setOpacity(0.5f); |
290 | 295 |
291 LayerTreeHostImpl::FrameData frame; | 296 LayerTreeHostImpl::FrameData frame; |
292 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 297 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
293 m_hostImpl->drawLayers(frame); | |
294 m_hostImpl->didDrawAllLayers(frame); | |
295 | 298 |
296 // This test case has quads from multiple layers in the delegated renderer, | 299 // This test case has quads from multiple layers in the delegated renderer, |
297 // so if the DelegatedRendererLayer has opacity < 1, it should end up with | 300 // so if the DelegatedRendererLayer has opacity < 1, it should end up with |
298 // a render surface. | 301 // a render surface. |
299 EXPECT_TRUE(m_delegatedRendererLayerPtr->renderSurface()); | 302 EXPECT_TRUE(m_delegatedRendererLayerPtr->renderSurface()); |
300 | 303 |
| 304 m_hostImpl->drawLayers(frame); |
| 305 m_hostImpl->didDrawAllLayers(frame); |
301 } | 306 } |
302 | 307 |
303 class DelegatedRendererLayerImplTestOwnSurface : public DelegatedRendererLayerIm
plTestSimple { | 308 class DelegatedRendererLayerImplTestOwnSurface : public DelegatedRendererLayerIm
plTestSimple { |
304 public: | 309 public: |
305 DelegatedRendererLayerImplTestOwnSurface() | 310 DelegatedRendererLayerImplTestOwnSurface() |
306 : DelegatedRendererLayerImplTestSimple() | 311 : DelegatedRendererLayerImplTestSimple() |
307 { | 312 { |
308 m_delegatedRendererLayerPtr->setForceRenderSurface(true); | 313 m_delegatedRendererLayerPtr->setForceRenderSurface(true); |
309 } | 314 } |
310 }; | 315 }; |
311 | 316 |
312 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) | 317 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) |
313 { | 318 { |
314 LayerTreeHostImpl::FrameData frame; | 319 LayerTreeHostImpl::FrameData frame; |
315 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 320 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
316 m_hostImpl->drawLayers(frame); | |
317 m_hostImpl->didDrawAllLayers(frame); | |
318 | 321 |
319 // 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. |
320 ASSERT_EQ(6u, frame.renderPasses.size()); | 323 ASSERT_EQ(6u, frame.renderPasses.size()); |
321 | 324 |
322 // 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. |
323 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); | 326 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
324 EXPECT_EQ(1, frame.renderPasses[1]->id.index); | 327 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
325 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); | 328 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
326 EXPECT_EQ(2, frame.renderPasses[2]->id.index); | 329 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
327 // The DelegatedRendererLayer should have added a RenderPass for its surface
to the frame. | 330 // The DelegatedRendererLayer should have added a RenderPass for its surface
to the frame. |
328 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); | 331 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
329 EXPECT_EQ(0, frame.renderPasses[3]->id.index); | 332 EXPECT_EQ(0, frame.renderPasses[3]->id.index); |
330 // And all other RenderPasses should be non-delegated. | 333 // And all other RenderPasses should be non-delegated. |
331 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); | 334 EXPECT_NE(4, frame.renderPasses[0]->id.layer_id); |
332 EXPECT_EQ(0, frame.renderPasses[0]->id.index); | 335 EXPECT_EQ(0, frame.renderPasses[0]->id.index); |
333 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); | 336 EXPECT_NE(4, frame.renderPasses[4]->id.layer_id); |
334 EXPECT_EQ(0, frame.renderPasses[4]->id.index); | 337 EXPECT_EQ(0, frame.renderPasses[4]->id.index); |
335 EXPECT_NE(4, frame.renderPasses[5]->id.layer_id); | 338 EXPECT_NE(4, frame.renderPasses[5]->id.layer_id); |
336 EXPECT_EQ(0, frame.renderPasses[5]->id.index); | 339 EXPECT_EQ(0, frame.renderPasses[5]->id.index); |
337 | 340 |
338 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 341 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
339 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); | 342 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->output_rect); |
340 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); | 343 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->output_rect); |
| 344 |
| 345 m_hostImpl->drawLayers(frame); |
| 346 m_hostImpl->didDrawAllLayers(frame); |
341 } | 347 } |
342 | 348 |
343 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRenderPa
sses) | 349 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToContributingRenderPa
sses) |
344 { | 350 { |
345 LayerTreeHostImpl::FrameData frame; | 351 LayerTreeHostImpl::FrameData frame; |
346 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 352 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
347 m_hostImpl->drawLayers(frame); | |
348 m_hostImpl->didDrawAllLayers(frame); | |
349 | 353 |
350 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 354 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
351 ASSERT_EQ(6u, frame.renderPasses.size()); | 355 ASSERT_EQ(6u, frame.renderPasses.size()); |
352 | 356 |
353 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 357 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
354 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); | 358 EXPECT_EQ(4, frame.renderPasses[1]->id.layer_id); |
355 EXPECT_EQ(1, frame.renderPasses[1]->id.index); | 359 EXPECT_EQ(1, frame.renderPasses[1]->id.index); |
356 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); | 360 EXPECT_EQ(4, frame.renderPasses[2]->id.layer_id); |
357 EXPECT_EQ(2, frame.renderPasses[2]->id.index); | 361 EXPECT_EQ(2, frame.renderPasses[2]->id.index); |
358 | 362 |
359 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 363 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
360 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); | 364 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
361 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); | 365 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
362 | 366 |
363 // Verify it added the right quads. | 367 // Verify it added the right quads. |
364 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); | 368 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
365 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r
ect); | 369 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quad_list[0]->r
ect); |
366 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r
ect); | 370 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quad_list[1]->r
ect); |
367 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); | 371 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
368 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); | 372 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quad_list[0]->r
ect); |
| 373 |
| 374 m_hostImpl->drawLayers(frame); |
| 375 m_hostImpl->didDrawAllLayers(frame); |
369 } | 376 } |
370 | 377 |
371 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) | 378 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) |
372 { | 379 { |
373 LayerTreeHostImpl::FrameData frame; | 380 LayerTreeHostImpl::FrameData frame; |
374 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 381 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
375 m_hostImpl->drawLayers(frame); | |
376 m_hostImpl->didDrawAllLayers(frame); | |
377 | 382 |
378 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 383 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
379 ASSERT_EQ(6u, frame.renderPasses.size()); | 384 ASSERT_EQ(6u, frame.renderPasses.size()); |
380 | 385 |
381 // The layer's target is the RenderPass owned by itself. | 386 // The layer's target is the RenderPass owned by itself. |
382 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id); | 387 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id); |
383 | 388 |
384 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 389 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
385 // The m_layerAfter also adds one quad. | 390 // The m_layerAfter also adds one quad. |
386 ASSERT_EQ(1u, frame.renderPasses[3]->quad_list.size()); | 391 ASSERT_EQ(1u, frame.renderPasses[3]->quad_list.size()); |
387 | 392 |
388 // Verify it added the right quads. | 393 // Verify it added the right quads. |
389 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r
ect); | 394 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quad_list[0]->r
ect); |
| 395 |
| 396 m_hostImpl->drawLayers(frame); |
| 397 m_hostImpl->didDrawAllLayers(frame); |
390 } | 398 } |
391 | 399 |
392 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) | 400 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) |
393 { | 401 { |
394 LayerTreeHostImpl::FrameData frame; | 402 LayerTreeHostImpl::FrameData frame; |
395 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 403 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
396 m_hostImpl->drawLayers(frame); | |
397 m_hostImpl->didDrawAllLayers(frame); | |
398 | 404 |
399 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 405 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
400 ASSERT_EQ(6u, frame.renderPasses.size()); | 406 ASSERT_EQ(6u, frame.renderPasses.size()); |
401 | 407 |
402 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root Ren
derPass' quads do not need to be | 408 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root Ren
derPass' quads do not need to be |
403 // modified at all. | 409 // modified at all. |
404 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[3]->qua
d_list[0]->quadTransform()); | 410 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[3]->qua
d_list[0]->quadTransform()); |
405 | 411 |
406 // Quads from non-root RenderPasses should not be shifted though. | 412 // Quads from non-root RenderPasses should not be shifted though. |
407 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); | 413 ASSERT_EQ(2u, frame.renderPasses[2]->quad_list.size()); |
408 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[0]->quadTransform()); | 414 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[0]->quadTransform()); |
409 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[1]->quadTransform()); | 415 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[2]->qua
d_list[1]->quadTransform()); |
410 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); | 416 ASSERT_EQ(1u, frame.renderPasses[1]->quad_list.size()); |
411 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua
d_list[0]->quadTransform()); | 417 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), frame.renderPasses[1]->qua
d_list[0]->quadTransform()); |
| 418 |
| 419 m_hostImpl->drawLayers(frame); |
| 420 m_hostImpl->didDrawAllLayers(frame); |
412 } | 421 } |
413 | 422 |
414 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { | 423 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { |
415 public: | 424 public: |
416 DelegatedRendererLayerImplTestSharedData() | 425 DelegatedRendererLayerImplTestSharedData() |
417 : DelegatedRendererLayerImplTest() | 426 : DelegatedRendererLayerImplTest() |
418 { | 427 { |
419 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); | 428 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); |
420 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); | 429 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); |
421 | 430 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 | 479 |
471 protected: | 480 protected: |
472 LayerImpl* m_rootLayerPtr; | 481 LayerImpl* m_rootLayerPtr; |
473 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; | 482 DelegatedRendererLayerImpl* m_delegatedRendererLayerPtr; |
474 }; | 483 }; |
475 | 484 |
476 TEST_F(DelegatedRendererLayerImplTestSharedData, SharedData) | 485 TEST_F(DelegatedRendererLayerImplTestSharedData, SharedData) |
477 { | 486 { |
478 LayerTreeHostImpl::FrameData frame; | 487 LayerTreeHostImpl::FrameData frame; |
479 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 488 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
480 m_hostImpl->drawLayers(frame); | |
481 m_hostImpl->didDrawAllLayers(frame); | |
482 | 489 |
483 ASSERT_EQ(1u, frame.renderPasses.size()); | 490 ASSERT_EQ(1u, frame.renderPasses.size()); |
484 EXPECT_EQ(1, frame.renderPasses[0]->id.layer_id); | 491 EXPECT_EQ(1, frame.renderPasses[0]->id.layer_id); |
485 EXPECT_EQ(0, frame.renderPasses[0]->id.index); | 492 EXPECT_EQ(0, frame.renderPasses[0]->id.index); |
486 | 493 |
487 const QuadList& quadList = frame.renderPasses[0]->quad_list; | 494 const QuadList& quadList = frame.renderPasses[0]->quad_list; |
488 ASSERT_EQ(4u, quadList.size()); | 495 ASSERT_EQ(4u, quadList.size()); |
489 | 496 |
490 // All quads should share the same state. | 497 // All quads should share the same state. |
491 const SharedQuadState* sharedState = quadList[0]->shared_quad_state; | 498 const SharedQuadState* sharedState = quadList[0]->shared_quad_state; |
492 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); | 499 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); |
493 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); | 500 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); |
494 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); | 501 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); |
495 | 502 |
496 // The state should be transformed only once. | 503 // The state should be transformed only once. |
497 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clipped_rect_in_targe
t); | 504 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clipped_rect_in_targe
t); |
498 gfx::Transform expected; | 505 gfx::Transform expected; |
499 expected.Translate(30, 30); | 506 expected.Translate(30, 30); |
500 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra
nsform); | 507 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra
nsform); |
| 508 |
| 509 m_hostImpl->drawLayers(frame); |
| 510 m_hostImpl->didDrawAllLayers(frame); |
501 } | 511 } |
502 | 512 |
503 } // namespace | 513 } // namespace |
504 } // namespace cc | 514 } // namespace cc |
OLD | NEW |