Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: cc/layers/delegated_renderer_layer_impl_unittest.cc

Issue 131683005: cc: Make PrepareToDraw return an enum for why it aborts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698