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/layers/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
6 | 6 |
7 #include "cc/base/scoped_ptr_vector.h" | 7 #include "cc/base/scoped_ptr_vector.h" |
8 #include "cc/layers/append_quads_data.h" | 8 #include "cc/layers/append_quads_data.h" |
9 #include "cc/layers/quad_sink.h" | 9 #include "cc/layers/quad_sink.h" |
10 #include "cc/layers/solid_color_layer_impl.h" | 10 #include "cc/layers/solid_color_layer_impl.h" |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 | 129 |
130 protected: | 130 protected: |
131 LayerImpl* root_layer_; | 131 LayerImpl* root_layer_; |
132 LayerImpl* layer_before_; | 132 LayerImpl* layer_before_; |
133 LayerImpl* layer_after_; | 133 LayerImpl* layer_after_; |
134 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 134 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
135 }; | 135 }; |
136 | 136 |
137 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { | 137 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { |
138 LayerTreeHostImpl::FrameData frame; | 138 LayerTreeHostImpl::FrameData frame; |
139 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 139 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 140 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
140 | 141 |
141 // Each non-DelegatedRendererLayer added one RenderPass. The | 142 // Each non-DelegatedRendererLayer added one RenderPass. The |
142 // DelegatedRendererLayer added two contributing passes. | 143 // DelegatedRendererLayer added two contributing passes. |
143 ASSERT_EQ(5u, frame.render_passes.size()); | 144 ASSERT_EQ(5u, frame.render_passes.size()); |
144 | 145 |
145 // The DelegatedRendererLayer should have added its contributing RenderPasses | 146 // The DelegatedRendererLayer should have added its contributing RenderPasses |
146 // to the frame. | 147 // to the frame. |
147 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 148 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
148 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 149 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
149 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 150 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
(...skipping 13 matching lines...) Expand all Loading... |
163 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 164 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
164 frame.render_passes[2]->output_rect.ToString()); | 165 frame.render_passes[2]->output_rect.ToString()); |
165 | 166 |
166 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 167 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
167 host_impl_->DidDrawAllLayers(frame); | 168 host_impl_->DidDrawAllLayers(frame); |
168 } | 169 } |
169 | 170 |
170 TEST_F(DelegatedRendererLayerImplTestSimple, | 171 TEST_F(DelegatedRendererLayerImplTestSimple, |
171 AddsQuadsToContributingRenderPasses) { | 172 AddsQuadsToContributingRenderPasses) { |
172 LayerTreeHostImpl::FrameData frame; | 173 LayerTreeHostImpl::FrameData frame; |
173 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 174 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 175 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
174 | 176 |
175 // Each non-DelegatedRendererLayer added one RenderPass. The | 177 // Each non-DelegatedRendererLayer added one RenderPass. The |
176 // DelegatedRendererLayer added two contributing passes. | 178 // DelegatedRendererLayer added two contributing passes. |
177 ASSERT_EQ(5u, frame.render_passes.size()); | 179 ASSERT_EQ(5u, frame.render_passes.size()); |
178 | 180 |
179 // The DelegatedRendererLayer should have added its contributing RenderPasses | 181 // The DelegatedRendererLayer should have added its contributing RenderPasses |
180 // to the frame. | 182 // to the frame. |
181 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
182 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 184 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
183 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
(...skipping 14 matching lines...) Expand all Loading... |
198 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
199 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
200 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 202 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
201 | 203 |
202 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
203 host_impl_->DidDrawAllLayers(frame); | 205 host_impl_->DidDrawAllLayers(frame); |
204 } | 206 } |
205 | 207 |
206 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
207 LayerTreeHostImpl::FrameData frame; | 209 LayerTreeHostImpl::FrameData frame; |
208 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 210 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 211 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
209 | 212 |
210 // Each non-DelegatedRendererLayer added one RenderPass. The | 213 // Each non-DelegatedRendererLayer added one RenderPass. The |
211 // DelegatedRendererLayer added two contributing passes. | 214 // DelegatedRendererLayer added two contributing passes. |
212 ASSERT_EQ(5u, frame.render_passes.size()); | 215 ASSERT_EQ(5u, frame.render_passes.size()); |
213 | 216 |
214 // The layer's target is the RenderPass from layer_after_. | 217 // The layer's target is the RenderPass from layer_after_. |
215 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); | 218 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); |
216 | 219 |
217 // The DelegatedRendererLayer should have added copies of quads in its root | 220 // The DelegatedRendererLayer should have added copies of quads in its root |
218 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 221 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
219 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 222 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
220 | 223 |
221 // Verify it added the right quads. | 224 // Verify it added the right quads. |
222 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 225 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
223 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 226 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
224 | 227 |
225 // Its target layer should have a quad as well. | 228 // Its target layer should have a quad as well. |
226 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 229 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
227 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 230 frame.render_passes[3]->quad_list[1]->rect.ToString()); |
228 | 231 |
229 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 232 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
230 host_impl_->DidDrawAllLayers(frame); | 233 host_impl_->DidDrawAllLayers(frame); |
231 } | 234 } |
232 | 235 |
233 TEST_F(DelegatedRendererLayerImplTestSimple, | 236 TEST_F(DelegatedRendererLayerImplTestSimple, |
234 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 237 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
235 LayerTreeHostImpl::FrameData frame; | 238 LayerTreeHostImpl::FrameData frame; |
236 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 239 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 240 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
237 | 241 |
238 // Each non-DelegatedRendererLayer added one RenderPass. The | 242 // Each non-DelegatedRendererLayer added one RenderPass. The |
239 // DelegatedRendererLayer added two contributing passes. | 243 // DelegatedRendererLayer added two contributing passes. |
240 ASSERT_EQ(5u, frame.render_passes.size()); | 244 ASSERT_EQ(5u, frame.render_passes.size()); |
241 | 245 |
242 // The DelegatedRendererLayer is at position 3,3 compared to its target, and | 246 // The DelegatedRendererLayer is at position 3,3 compared to its target, and |
243 // has a translation transform of 1,1. So its root RenderPass' quads should | 247 // has a translation transform of 1,1. So its root RenderPass' quads should |
244 // all be transformed by that combined amount. | 248 // all be transformed by that combined amount. |
245 // The DelegatedRendererLayer has a size of 10x10, but the root delegated | 249 // The DelegatedRendererLayer has a size of 10x10, but the root delegated |
246 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8. | 250 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8. |
(...skipping 12 matching lines...) Expand all Loading... |
259 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 263 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
260 EXPECT_TRANSFORMATION_MATRIX_EQ( | 264 EXPECT_TRANSFORMATION_MATRIX_EQ( |
261 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 265 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
262 | 266 |
263 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
264 host_impl_->DidDrawAllLayers(frame); | 268 host_impl_->DidDrawAllLayers(frame); |
265 } | 269 } |
266 | 270 |
267 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 271 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
268 LayerTreeHostImpl::FrameData frame; | 272 LayerTreeHostImpl::FrameData frame; |
269 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 273 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 274 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
270 | 275 |
271 // The delegated layer has a surface between it and the root. | 276 // The delegated layer has a surface between it and the root. |
272 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); | 277 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); |
273 | 278 |
274 // Each non-DelegatedRendererLayer added one RenderPass. The | 279 // Each non-DelegatedRendererLayer added one RenderPass. The |
275 // DelegatedRendererLayer added two contributing passes. | 280 // DelegatedRendererLayer added two contributing passes. |
276 ASSERT_EQ(5u, frame.render_passes.size()); | 281 ASSERT_EQ(5u, frame.render_passes.size()); |
277 | 282 |
278 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all | 283 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all |
279 // render pass' transforms to the root should be shifted by this amount. | 284 // render pass' transforms to the root should be shifted by this amount. |
(...skipping 15 matching lines...) Expand all Loading... |
295 EXPECT_TRANSFORMATION_MATRIX_EQ( | 300 EXPECT_TRANSFORMATION_MATRIX_EQ( |
296 transform * seven_eight, | 301 transform * seven_eight, |
297 frame.render_passes[2]->transform_to_root_target); | 302 frame.render_passes[2]->transform_to_root_target); |
298 | 303 |
299 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 304 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
300 host_impl_->DidDrawAllLayers(frame); | 305 host_impl_->DidDrawAllLayers(frame); |
301 } | 306 } |
302 | 307 |
303 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 308 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
304 LayerTreeHostImpl::FrameData frame; | 309 LayerTreeHostImpl::FrameData frame; |
305 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 310 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 311 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
306 | 312 |
307 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 313 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
308 // has no need to be a RenderSurface for the quads it carries. | 314 // has no need to be a RenderSurface for the quads it carries. |
309 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | 315 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
310 | 316 |
311 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 317 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
312 host_impl_->DidDrawAllLayers(frame); | 318 host_impl_->DidDrawAllLayers(frame); |
313 } | 319 } |
314 | 320 |
315 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 321 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
316 delegated_renderer_layer_->SetOpacity(0.5f); | 322 delegated_renderer_layer_->SetOpacity(0.5f); |
317 | 323 |
318 LayerTreeHostImpl::FrameData frame; | 324 LayerTreeHostImpl::FrameData frame; |
319 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 325 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 326 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
320 | 327 |
321 // This test case has quads from multiple layers in the delegated renderer, so | 328 // This test case has quads from multiple layers in the delegated renderer, so |
322 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 329 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
323 // render surface. | 330 // render surface. |
324 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 331 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
325 | 332 |
326 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 333 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
327 host_impl_->DidDrawAllLayers(frame); | 334 host_impl_->DidDrawAllLayers(frame); |
328 } | 335 } |
329 | 336 |
330 TEST_F(DelegatedRendererLayerImplTestSimple, | 337 TEST_F(DelegatedRendererLayerImplTestSimple, |
331 DoesOwnARenderSurfaceForTransform) { | 338 DoesOwnARenderSurfaceForTransform) { |
332 gfx::Transform rotation; | 339 gfx::Transform rotation; |
333 rotation.RotateAboutZAxis(30.0); | 340 rotation.RotateAboutZAxis(30.0); |
334 delegated_renderer_layer_->SetTransform(rotation); | 341 delegated_renderer_layer_->SetTransform(rotation); |
335 | 342 |
336 LayerTreeHostImpl::FrameData frame; | 343 LayerTreeHostImpl::FrameData frame; |
337 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 344 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 345 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
338 | 346 |
339 // This test case has quads from multiple layers in the delegated renderer, so | 347 // This test case has quads from multiple layers in the delegated renderer, so |
340 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 348 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
341 // render surface. | 349 // render surface. |
342 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 350 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
343 | 351 |
344 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 352 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
345 host_impl_->DidDrawAllLayers(frame); | 353 host_impl_->DidDrawAllLayers(frame); |
346 } | 354 } |
347 | 355 |
348 class DelegatedRendererLayerImplTestOwnSurface | 356 class DelegatedRendererLayerImplTestOwnSurface |
349 : public DelegatedRendererLayerImplTestSimple { | 357 : public DelegatedRendererLayerImplTestSimple { |
350 public: | 358 public: |
351 DelegatedRendererLayerImplTestOwnSurface() | 359 DelegatedRendererLayerImplTestOwnSurface() |
352 : DelegatedRendererLayerImplTestSimple() { | 360 : DelegatedRendererLayerImplTestSimple() { |
353 delegated_renderer_layer_->SetForceRenderSurface(true); | 361 delegated_renderer_layer_->SetForceRenderSurface(true); |
354 } | 362 } |
355 }; | 363 }; |
356 | 364 |
357 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 365 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
358 LayerTreeHostImpl::FrameData frame; | 366 LayerTreeHostImpl::FrameData frame; |
359 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 367 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 368 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
360 | 369 |
361 // Each non-DelegatedRendererLayer added one RenderPass. The | 370 // Each non-DelegatedRendererLayer added one RenderPass. The |
362 // DelegatedRendererLayer added two contributing passes and its owned surface | 371 // DelegatedRendererLayer added two contributing passes and its owned surface |
363 // added one pass. | 372 // added one pass. |
364 ASSERT_EQ(6u, frame.render_passes.size()); | 373 ASSERT_EQ(6u, frame.render_passes.size()); |
365 | 374 |
366 // The DelegatedRendererLayer should have added its contributing RenderPasses | 375 // The DelegatedRendererLayer should have added its contributing RenderPasses |
367 // to the frame. | 376 // to the frame. |
368 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 377 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
369 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 378 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
(...skipping 18 matching lines...) Expand all Loading... |
388 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 397 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
389 frame.render_passes[2]->output_rect.ToString()); | 398 frame.render_passes[2]->output_rect.ToString()); |
390 | 399 |
391 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 400 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
392 host_impl_->DidDrawAllLayers(frame); | 401 host_impl_->DidDrawAllLayers(frame); |
393 } | 402 } |
394 | 403 |
395 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 404 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
396 AddsQuadsToContributingRenderPasses) { | 405 AddsQuadsToContributingRenderPasses) { |
397 LayerTreeHostImpl::FrameData frame; | 406 LayerTreeHostImpl::FrameData frame; |
398 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 407 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 408 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
399 | 409 |
400 // Each non-DelegatedRendererLayer added one RenderPass. The | 410 // Each non-DelegatedRendererLayer added one RenderPass. The |
401 // DelegatedRendererLayer added two contributing passes and its owned surface | 411 // DelegatedRendererLayer added two contributing passes and its owned surface |
402 // added one pass. | 412 // added one pass. |
403 ASSERT_EQ(6u, frame.render_passes.size()); | 413 ASSERT_EQ(6u, frame.render_passes.size()); |
404 | 414 |
405 // The DelegatedRendererLayer should have added its contributing RenderPasses | 415 // The DelegatedRendererLayer should have added its contributing RenderPasses |
406 // to the frame. | 416 // to the frame. |
407 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 417 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
408 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 418 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
(...skipping 15 matching lines...) Expand all Loading... |
424 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 434 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
425 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 435 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
426 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 436 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
427 | 437 |
428 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 438 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
429 host_impl_->DidDrawAllLayers(frame); | 439 host_impl_->DidDrawAllLayers(frame); |
430 } | 440 } |
431 | 441 |
432 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 442 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
433 LayerTreeHostImpl::FrameData frame; | 443 LayerTreeHostImpl::FrameData frame; |
434 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 444 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 445 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
435 | 446 |
436 // Each non-DelegatedRendererLayer added one RenderPass. The | 447 // Each non-DelegatedRendererLayer added one RenderPass. The |
437 // DelegatedRendererLayer added two contributing passes and its owned surface | 448 // DelegatedRendererLayer added two contributing passes and its owned surface |
438 // added one pass. | 449 // added one pass. |
439 ASSERT_EQ(6u, frame.render_passes.size()); | 450 ASSERT_EQ(6u, frame.render_passes.size()); |
440 | 451 |
441 // The layer's target is the RenderPass owned by itself. | 452 // The layer's target is the RenderPass owned by itself. |
442 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); | 453 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); |
443 | 454 |
444 // The DelegatedRendererLayer should have added copies of quads in its root | 455 // The DelegatedRendererLayer should have added copies of quads in its root |
445 // RenderPass to its target RenderPass. | 456 // RenderPass to its target RenderPass. |
446 // The layer_after also adds one quad. | 457 // The layer_after also adds one quad. |
447 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 458 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
448 | 459 |
449 // Verify it added the right quads. | 460 // Verify it added the right quads. |
450 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 461 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
451 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 462 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
452 | 463 |
453 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 464 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
454 host_impl_->DidDrawAllLayers(frame); | 465 host_impl_->DidDrawAllLayers(frame); |
455 } | 466 } |
456 | 467 |
457 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 468 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
458 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 469 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
459 LayerTreeHostImpl::FrameData frame; | 470 LayerTreeHostImpl::FrameData frame; |
460 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 471 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 472 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
461 | 473 |
462 // Each non-DelegatedRendererLayer added one RenderPass. The | 474 // Each non-DelegatedRendererLayer added one RenderPass. The |
463 // DelegatedRendererLayer added two contributing passes and its owned surface | 475 // DelegatedRendererLayer added two contributing passes and its owned surface |
464 // added one pass. | 476 // added one pass. |
465 ASSERT_EQ(6u, frame.render_passes.size()); | 477 ASSERT_EQ(6u, frame.render_passes.size()); |
466 | 478 |
467 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 479 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
468 // RenderPass' quads do not need to be translated at all. However, they are | 480 // RenderPass' quads do not need to be translated at all. However, they are |
469 // scaled from the frame's size (8x8) to the layer's bounds (10x10). | 481 // scaled from the frame's size (8x8) to the layer's bounds (10x10). |
470 gfx::Transform transform; | 482 gfx::Transform transform; |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 LayerImpl* root_layer_; | 674 LayerImpl* root_layer_; |
663 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 675 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
664 bool root_delegated_render_pass_is_clipped_; | 676 bool root_delegated_render_pass_is_clipped_; |
665 }; | 677 }; |
666 | 678 |
667 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { | 679 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { |
668 root_delegated_render_pass_is_clipped_ = false; | 680 root_delegated_render_pass_is_clipped_ = false; |
669 SetUpTest(); | 681 SetUpTest(); |
670 | 682 |
671 LayerTreeHostImpl::FrameData frame; | 683 LayerTreeHostImpl::FrameData frame; |
672 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 684 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 685 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
673 | 686 |
674 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 687 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
675 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 688 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
676 VerifyRenderPasses( | 689 VerifyRenderPasses( |
677 frame, | 690 frame, |
678 2, | 691 2, |
679 &root_delegated_shared_quad_state, | 692 &root_delegated_shared_quad_state, |
680 &contrib_delegated_shared_quad_state); | 693 &contrib_delegated_shared_quad_state); |
681 | 694 |
682 // When the quads don't have a clip of their own, the clip rect is set to | 695 // When the quads don't have a clip of their own, the clip rect is set to |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 | 731 |
719 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 732 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
720 host_impl_->DidDrawAllLayers(frame); | 733 host_impl_->DidDrawAllLayers(frame); |
721 } | 734 } |
722 | 735 |
723 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 736 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
724 root_delegated_render_pass_is_clipped_ = true; | 737 root_delegated_render_pass_is_clipped_ = true; |
725 SetUpTest(); | 738 SetUpTest(); |
726 | 739 |
727 LayerTreeHostImpl::FrameData frame; | 740 LayerTreeHostImpl::FrameData frame; |
728 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 741 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 742 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
729 | 743 |
730 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 744 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
731 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 745 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
732 VerifyRenderPasses( | 746 VerifyRenderPasses( |
733 frame, | 747 frame, |
734 2, | 748 2, |
735 &root_delegated_shared_quad_state, | 749 &root_delegated_shared_quad_state, |
736 &contrib_delegated_shared_quad_state); | 750 &contrib_delegated_shared_quad_state); |
737 | 751 |
738 // Since the quads have a clip_rect it should be modified by delegated | 752 // Since the quads have a clip_rect it should be modified by delegated |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 host_impl_->DidDrawAllLayers(frame); | 797 host_impl_->DidDrawAllLayers(frame); |
784 } | 798 } |
785 | 799 |
786 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 800 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
787 root_delegated_render_pass_is_clipped_ = false; | 801 root_delegated_render_pass_is_clipped_ = false; |
788 SetUpTest(); | 802 SetUpTest(); |
789 | 803 |
790 delegated_renderer_layer_->SetForceRenderSurface(true); | 804 delegated_renderer_layer_->SetForceRenderSurface(true); |
791 | 805 |
792 LayerTreeHostImpl::FrameData frame; | 806 LayerTreeHostImpl::FrameData frame; |
793 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 807 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 808 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
794 | 809 |
795 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 810 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
796 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 811 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
797 VerifyRenderPasses( | 812 VerifyRenderPasses( |
798 frame, | 813 frame, |
799 3, | 814 3, |
800 &root_delegated_shared_quad_state, | 815 &root_delegated_shared_quad_state, |
801 &contrib_delegated_shared_quad_state); | 816 &contrib_delegated_shared_quad_state); |
802 | 817 |
803 // When the layer owns a surface, then its position and translation are not | 818 // When the layer owns a surface, then its position and translation are not |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 host_impl_->DidDrawAllLayers(frame); | 854 host_impl_->DidDrawAllLayers(frame); |
840 } | 855 } |
841 | 856 |
842 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 857 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
843 root_delegated_render_pass_is_clipped_ = true; | 858 root_delegated_render_pass_is_clipped_ = true; |
844 SetUpTest(); | 859 SetUpTest(); |
845 | 860 |
846 delegated_renderer_layer_->SetForceRenderSurface(true); | 861 delegated_renderer_layer_->SetForceRenderSurface(true); |
847 | 862 |
848 LayerTreeHostImpl::FrameData frame; | 863 LayerTreeHostImpl::FrameData frame; |
849 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 864 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 865 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
850 | 866 |
851 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 867 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
852 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 868 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
853 VerifyRenderPasses( | 869 VerifyRenderPasses( |
854 frame, | 870 frame, |
855 3, | 871 3, |
856 &root_delegated_shared_quad_state, | 872 &root_delegated_shared_quad_state, |
857 &contrib_delegated_shared_quad_state); | 873 &contrib_delegated_shared_quad_state); |
858 | 874 |
859 // When the layer owns a surface, then its position and translation are not | 875 // When the layer owns a surface, then its position and translation are not |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1042 bool clip_delegated_renderer_layer_; | 1058 bool clip_delegated_renderer_layer_; |
1043 }; | 1059 }; |
1044 | 1060 |
1045 TEST_F(DelegatedRendererLayerImplTestClip, | 1061 TEST_F(DelegatedRendererLayerImplTestClip, |
1046 QuadsUnclipped_LayerUnclipped_NoSurface) { | 1062 QuadsUnclipped_LayerUnclipped_NoSurface) { |
1047 root_delegated_render_pass_is_clipped_ = false; | 1063 root_delegated_render_pass_is_clipped_ = false; |
1048 clip_delegated_renderer_layer_ = false; | 1064 clip_delegated_renderer_layer_ = false; |
1049 SetUpTest(); | 1065 SetUpTest(); |
1050 | 1066 |
1051 LayerTreeHostImpl::FrameData frame; | 1067 LayerTreeHostImpl::FrameData frame; |
1052 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1068 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1069 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1053 | 1070 |
1054 ASSERT_EQ(2u, frame.render_passes.size()); | 1071 ASSERT_EQ(2u, frame.render_passes.size()); |
1055 const QuadList& contrib_delegated_quad_list = | 1072 const QuadList& contrib_delegated_quad_list = |
1056 frame.render_passes[0]->quad_list; | 1073 frame.render_passes[0]->quad_list; |
1057 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1074 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1058 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1075 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1059 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1076 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1060 const SharedQuadState* root_delegated_shared_quad_state = | 1077 const SharedQuadState* root_delegated_shared_quad_state = |
1061 root_delegated_quad_list[0]->shared_quad_state; | 1078 root_delegated_quad_list[0]->shared_quad_state; |
1062 | 1079 |
1063 // When the quads don't have a clip of their own, the clip rect is set to | 1080 // When the quads don't have a clip of their own, the clip rect is set to |
1064 // the drawable_content_rect of the delegated renderer layer. | 1081 // the drawable_content_rect of the delegated renderer layer. |
1065 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1082 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
1066 root_delegated_shared_quad_state->clip_rect.ToString()); | 1083 root_delegated_shared_quad_state->clip_rect.ToString()); |
1067 // Quads are clipped to the delegated renderer layer. | 1084 // Quads are clipped to the delegated renderer layer. |
1068 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1085 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1069 | 1086 |
1070 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1087 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1071 host_impl_->DidDrawAllLayers(frame); | 1088 host_impl_->DidDrawAllLayers(frame); |
1072 } | 1089 } |
1073 | 1090 |
1074 TEST_F(DelegatedRendererLayerImplTestClip, | 1091 TEST_F(DelegatedRendererLayerImplTestClip, |
1075 QuadsClipped_LayerUnclipped_NoSurface) { | 1092 QuadsClipped_LayerUnclipped_NoSurface) { |
1076 root_delegated_render_pass_is_clipped_ = true; | 1093 root_delegated_render_pass_is_clipped_ = true; |
1077 clip_delegated_renderer_layer_ = false; | 1094 clip_delegated_renderer_layer_ = false; |
1078 SetUpTest(); | 1095 SetUpTest(); |
1079 | 1096 |
1080 LayerTreeHostImpl::FrameData frame; | 1097 LayerTreeHostImpl::FrameData frame; |
1081 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1098 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1099 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1082 | 1100 |
1083 ASSERT_EQ(2u, frame.render_passes.size()); | 1101 ASSERT_EQ(2u, frame.render_passes.size()); |
1084 const QuadList& contrib_delegated_quad_list = | 1102 const QuadList& contrib_delegated_quad_list = |
1085 frame.render_passes[0]->quad_list; | 1103 frame.render_passes[0]->quad_list; |
1086 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1104 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1087 const QuadList& root_delegated_quad_list = | 1105 const QuadList& root_delegated_quad_list = |
1088 frame.render_passes[1]->quad_list; | 1106 frame.render_passes[1]->quad_list; |
1089 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1107 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1090 const SharedQuadState* root_delegated_shared_quad_state = | 1108 const SharedQuadState* root_delegated_shared_quad_state = |
1091 root_delegated_quad_list[0]->shared_quad_state; | 1109 root_delegated_quad_list[0]->shared_quad_state; |
1092 | 1110 |
1093 // When the quads have a clip of their own, it is used. | 1111 // When the quads have a clip of their own, it is used. |
1094 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1112 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
1095 root_delegated_shared_quad_state->clip_rect.ToString()); | 1113 root_delegated_shared_quad_state->clip_rect.ToString()); |
1096 // Quads came with a clip rect. | 1114 // Quads came with a clip rect. |
1097 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1115 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1098 | 1116 |
1099 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1117 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1100 host_impl_->DidDrawAllLayers(frame); | 1118 host_impl_->DidDrawAllLayers(frame); |
1101 } | 1119 } |
1102 | 1120 |
1103 TEST_F(DelegatedRendererLayerImplTestClip, | 1121 TEST_F(DelegatedRendererLayerImplTestClip, |
1104 QuadsUnclipped_LayerClipped_NoSurface) { | 1122 QuadsUnclipped_LayerClipped_NoSurface) { |
1105 root_delegated_render_pass_is_clipped_ = false; | 1123 root_delegated_render_pass_is_clipped_ = false; |
1106 clip_delegated_renderer_layer_ = true; | 1124 clip_delegated_renderer_layer_ = true; |
1107 SetUpTest(); | 1125 SetUpTest(); |
1108 | 1126 |
1109 LayerTreeHostImpl::FrameData frame; | 1127 LayerTreeHostImpl::FrameData frame; |
1110 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1128 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1129 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1111 | 1130 |
1112 ASSERT_EQ(2u, frame.render_passes.size()); | 1131 ASSERT_EQ(2u, frame.render_passes.size()); |
1113 const QuadList& contrib_delegated_quad_list = | 1132 const QuadList& contrib_delegated_quad_list = |
1114 frame.render_passes[0]->quad_list; | 1133 frame.render_passes[0]->quad_list; |
1115 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1134 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1116 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1135 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1117 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1136 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1118 const SharedQuadState* root_delegated_shared_quad_state = | 1137 const SharedQuadState* root_delegated_shared_quad_state = |
1119 root_delegated_quad_list[0]->shared_quad_state; | 1138 root_delegated_quad_list[0]->shared_quad_state; |
1120 | 1139 |
1121 // When the quads don't have a clip of their own, the clip rect is set to | 1140 // When the quads don't have a clip of their own, the clip rect is set to |
1122 // the drawable_content_rect of the delegated renderer layer. When the layer | 1141 // the drawable_content_rect of the delegated renderer layer. When the layer |
1123 // is clipped, that should be seen in the quads' clip_rect. | 1142 // is clipped, that should be seen in the quads' clip_rect. |
1124 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1143 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
1125 root_delegated_shared_quad_state->clip_rect.ToString()); | 1144 root_delegated_shared_quad_state->clip_rect.ToString()); |
1126 // Quads are clipped to the delegated renderer layer. | 1145 // Quads are clipped to the delegated renderer layer. |
1127 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1146 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1128 | 1147 |
1129 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1148 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1130 host_impl_->DidDrawAllLayers(frame); | 1149 host_impl_->DidDrawAllLayers(frame); |
1131 } | 1150 } |
1132 | 1151 |
1133 TEST_F(DelegatedRendererLayerImplTestClip, | 1152 TEST_F(DelegatedRendererLayerImplTestClip, |
1134 QuadsClipped_LayerClipped_NoSurface) { | 1153 QuadsClipped_LayerClipped_NoSurface) { |
1135 root_delegated_render_pass_is_clipped_ = true; | 1154 root_delegated_render_pass_is_clipped_ = true; |
1136 clip_delegated_renderer_layer_ = true; | 1155 clip_delegated_renderer_layer_ = true; |
1137 SetUpTest(); | 1156 SetUpTest(); |
1138 | 1157 |
1139 LayerTreeHostImpl::FrameData frame; | 1158 LayerTreeHostImpl::FrameData frame; |
1140 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1159 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1160 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1141 | 1161 |
1142 ASSERT_EQ(2u, frame.render_passes.size()); | 1162 ASSERT_EQ(2u, frame.render_passes.size()); |
1143 const QuadList& contrib_delegated_quad_list = | 1163 const QuadList& contrib_delegated_quad_list = |
1144 frame.render_passes[0]->quad_list; | 1164 frame.render_passes[0]->quad_list; |
1145 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1165 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1146 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1166 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1147 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1167 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1148 const SharedQuadState* root_delegated_shared_quad_state = | 1168 const SharedQuadState* root_delegated_shared_quad_state = |
1149 root_delegated_quad_list[0]->shared_quad_state; | 1169 root_delegated_quad_list[0]->shared_quad_state; |
1150 | 1170 |
(...skipping 10 matching lines...) Expand all Loading... |
1161 | 1181 |
1162 TEST_F(DelegatedRendererLayerImplTestClip, | 1182 TEST_F(DelegatedRendererLayerImplTestClip, |
1163 QuadsUnclipped_LayerUnclipped_Surface) { | 1183 QuadsUnclipped_LayerUnclipped_Surface) { |
1164 root_delegated_render_pass_is_clipped_ = false; | 1184 root_delegated_render_pass_is_clipped_ = false; |
1165 clip_delegated_renderer_layer_ = false; | 1185 clip_delegated_renderer_layer_ = false; |
1166 SetUpTest(); | 1186 SetUpTest(); |
1167 | 1187 |
1168 delegated_renderer_layer_->SetForceRenderSurface(true); | 1188 delegated_renderer_layer_->SetForceRenderSurface(true); |
1169 | 1189 |
1170 LayerTreeHostImpl::FrameData frame; | 1190 LayerTreeHostImpl::FrameData frame; |
1171 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1191 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1192 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1172 | 1193 |
1173 ASSERT_EQ(3u, frame.render_passes.size()); | 1194 ASSERT_EQ(3u, frame.render_passes.size()); |
1174 const QuadList& contrib_delegated_quad_list = | 1195 const QuadList& contrib_delegated_quad_list = |
1175 frame.render_passes[0]->quad_list; | 1196 frame.render_passes[0]->quad_list; |
1176 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1197 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1177 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1198 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1178 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1199 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1179 const SharedQuadState* root_delegated_shared_quad_state = | 1200 const SharedQuadState* root_delegated_shared_quad_state = |
1180 root_delegated_quad_list[0]->shared_quad_state; | 1201 root_delegated_quad_list[0]->shared_quad_state; |
1181 | 1202 |
1182 // When the layer owns a surface, the quads don't need to be clipped | 1203 // When the layer owns a surface, the quads don't need to be clipped |
1183 // further than they already specify. If they aren't clipped, then their | 1204 // further than they already specify. If they aren't clipped, then their |
1184 // clip rect is ignored, and they are not set as clipped. | 1205 // clip rect is ignored, and they are not set as clipped. |
1185 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1206 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1186 | 1207 |
1187 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1208 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1188 host_impl_->DidDrawAllLayers(frame); | 1209 host_impl_->DidDrawAllLayers(frame); |
1189 } | 1210 } |
1190 | 1211 |
1191 TEST_F(DelegatedRendererLayerImplTestClip, | 1212 TEST_F(DelegatedRendererLayerImplTestClip, |
1192 QuadsClipped_LayerUnclipped_Surface) { | 1213 QuadsClipped_LayerUnclipped_Surface) { |
1193 root_delegated_render_pass_is_clipped_ = true; | 1214 root_delegated_render_pass_is_clipped_ = true; |
1194 clip_delegated_renderer_layer_ = false; | 1215 clip_delegated_renderer_layer_ = false; |
1195 SetUpTest(); | 1216 SetUpTest(); |
1196 | 1217 |
1197 delegated_renderer_layer_->SetForceRenderSurface(true); | 1218 delegated_renderer_layer_->SetForceRenderSurface(true); |
1198 | 1219 |
1199 LayerTreeHostImpl::FrameData frame; | 1220 LayerTreeHostImpl::FrameData frame; |
1200 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1221 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1222 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1201 | 1223 |
1202 ASSERT_EQ(3u, frame.render_passes.size()); | 1224 ASSERT_EQ(3u, frame.render_passes.size()); |
1203 const QuadList& contrib_delegated_quad_list = | 1225 const QuadList& contrib_delegated_quad_list = |
1204 frame.render_passes[0]->quad_list; | 1226 frame.render_passes[0]->quad_list; |
1205 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1227 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1206 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1228 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1207 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1229 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1208 const SharedQuadState* root_delegated_shared_quad_state = | 1230 const SharedQuadState* root_delegated_shared_quad_state = |
1209 root_delegated_quad_list[0]->shared_quad_state; | 1231 root_delegated_quad_list[0]->shared_quad_state; |
1210 | 1232 |
1211 // When the quads have a clip of their own, it is used. | 1233 // When the quads have a clip of their own, it is used. |
1212 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1234 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1213 root_delegated_shared_quad_state->clip_rect.ToString()); | 1235 root_delegated_shared_quad_state->clip_rect.ToString()); |
1214 // Quads came with a clip rect. | 1236 // Quads came with a clip rect. |
1215 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1237 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1216 | 1238 |
1217 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1239 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1218 host_impl_->DidDrawAllLayers(frame); | 1240 host_impl_->DidDrawAllLayers(frame); |
1219 } | 1241 } |
1220 | 1242 |
1221 TEST_F(DelegatedRendererLayerImplTestClip, | 1243 TEST_F(DelegatedRendererLayerImplTestClip, |
1222 QuadsUnclipped_LayerClipped_Surface) { | 1244 QuadsUnclipped_LayerClipped_Surface) { |
1223 root_delegated_render_pass_is_clipped_ = false; | 1245 root_delegated_render_pass_is_clipped_ = false; |
1224 clip_delegated_renderer_layer_ = true; | 1246 clip_delegated_renderer_layer_ = true; |
1225 SetUpTest(); | 1247 SetUpTest(); |
1226 | 1248 |
1227 delegated_renderer_layer_->SetForceRenderSurface(true); | 1249 delegated_renderer_layer_->SetForceRenderSurface(true); |
1228 | 1250 |
1229 LayerTreeHostImpl::FrameData frame; | 1251 LayerTreeHostImpl::FrameData frame; |
1230 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1252 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1253 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1231 | 1254 |
1232 ASSERT_EQ(3u, frame.render_passes.size()); | 1255 ASSERT_EQ(3u, frame.render_passes.size()); |
1233 const QuadList& contrib_delegated_quad_list = | 1256 const QuadList& contrib_delegated_quad_list = |
1234 frame.render_passes[0]->quad_list; | 1257 frame.render_passes[0]->quad_list; |
1235 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1258 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1236 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1259 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1237 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1260 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1238 const SharedQuadState* root_delegated_shared_quad_state = | 1261 const SharedQuadState* root_delegated_shared_quad_state = |
1239 root_delegated_quad_list[0]->shared_quad_state; | 1262 root_delegated_quad_list[0]->shared_quad_state; |
1240 | 1263 |
1241 // When the layer owns a surface, the quads don't need to be clipped | 1264 // When the layer owns a surface, the quads don't need to be clipped |
1242 // further than they already specify. If they aren't clipped, then their | 1265 // further than they already specify. If they aren't clipped, then their |
1243 // clip rect is ignored, and they are not set as clipped. | 1266 // clip rect is ignored, and they are not set as clipped. |
1244 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1267 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1245 | 1268 |
1246 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1269 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1247 host_impl_->DidDrawAllLayers(frame); | 1270 host_impl_->DidDrawAllLayers(frame); |
1248 } | 1271 } |
1249 | 1272 |
1250 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1273 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
1251 root_delegated_render_pass_is_clipped_ = true; | 1274 root_delegated_render_pass_is_clipped_ = true; |
1252 clip_delegated_renderer_layer_ = true; | 1275 clip_delegated_renderer_layer_ = true; |
1253 SetUpTest(); | 1276 SetUpTest(); |
1254 | 1277 |
1255 delegated_renderer_layer_->SetForceRenderSurface(true); | 1278 delegated_renderer_layer_->SetForceRenderSurface(true); |
1256 | 1279 |
1257 LayerTreeHostImpl::FrameData frame; | 1280 LayerTreeHostImpl::FrameData frame; |
1258 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1281 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1282 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1259 | 1283 |
1260 ASSERT_EQ(3u, frame.render_passes.size()); | 1284 ASSERT_EQ(3u, frame.render_passes.size()); |
1261 const QuadList& contrib_delegated_quad_list = | 1285 const QuadList& contrib_delegated_quad_list = |
1262 frame.render_passes[0]->quad_list; | 1286 frame.render_passes[0]->quad_list; |
1263 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1287 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1264 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1288 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1265 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1289 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1266 const SharedQuadState* root_delegated_shared_quad_state = | 1290 const SharedQuadState* root_delegated_shared_quad_state = |
1267 root_delegated_quad_list[0]->shared_quad_state; | 1291 root_delegated_quad_list[0]->shared_quad_state; |
1268 | 1292 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1312 delegated_renderer_layer->SetFrameDataForRenderPasses( | 1336 delegated_renderer_layer->SetFrameDataForRenderPasses( |
1313 &delegated_render_passes); | 1337 &delegated_render_passes); |
1314 | 1338 |
1315 // The RenderPasses should be taken by the layer. | 1339 // The RenderPasses should be taken by the layer. |
1316 EXPECT_EQ(0u, delegated_render_passes.size()); | 1340 EXPECT_EQ(0u, delegated_render_passes.size()); |
1317 | 1341 |
1318 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 1342 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
1319 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 1343 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
1320 | 1344 |
1321 LayerTreeHostImpl::FrameData frame; | 1345 LayerTreeHostImpl::FrameData frame; |
1322 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1346 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1347 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
1323 | 1348 |
1324 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1349 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
1325 ASSERT_EQ(1u, frame.render_passes.size()); | 1350 ASSERT_EQ(1u, frame.render_passes.size()); |
1326 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1351 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
1327 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1352 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
1328 frame.render_passes[0]->quad_list[0]->material); | 1353 frame.render_passes[0]->quad_list[0]->material); |
1329 | 1354 |
1330 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1355 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1331 host_impl_->DidDrawAllLayers(frame); | 1356 host_impl_->DidDrawAllLayers(frame); |
1332 } | 1357 } |
1333 | 1358 |
1334 } // namespace | 1359 } // namespace |
1335 } // namespace cc | 1360 } // namespace cc |
OLD | NEW |