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

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

Issue 246753008: cc: Unify use of DidSwapBuffers() and did_request_swap (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 7 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
« no previous file with comments | « cc/cc.gyp ('k') | cc/output/delegating_renderer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/quad_sink.h" 8 #include "cc/layers/quad_sink.h"
9 #include "cc/layers/solid_color_layer_impl.h" 9 #include "cc/layers/solid_color_layer_impl.h"
10 #include "cc/quads/render_pass_draw_quad.h" 10 #include "cc/quads/render_pass_draw_quad.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 133
134 protected: 134 protected:
135 LayerImpl* root_layer_; 135 LayerImpl* root_layer_;
136 LayerImpl* layer_before_; 136 LayerImpl* layer_before_;
137 LayerImpl* layer_after_; 137 LayerImpl* layer_after_;
138 DelegatedRendererLayerImpl* delegated_renderer_layer_; 138 DelegatedRendererLayerImpl* delegated_renderer_layer_;
139 }; 139 };
140 140
141 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { 141 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) {
142 LayerTreeHostImpl::FrameData frame; 142 LayerTreeHostImpl::FrameData frame;
143 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 143 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
144 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
145 144
146 // Each non-DelegatedRendererLayer added one RenderPass. The 145 // Each non-DelegatedRendererLayer added one RenderPass. The
147 // DelegatedRendererLayer added two contributing passes. 146 // DelegatedRendererLayer added two contributing passes.
148 ASSERT_EQ(5u, frame.render_passes.size()); 147 ASSERT_EQ(5u, frame.render_passes.size());
149 148
150 // The DelegatedRendererLayer should have added its contributing RenderPasses 149 // The DelegatedRendererLayer should have added its contributing RenderPasses
151 // to the frame. 150 // to the frame.
152 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 151 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
153 EXPECT_EQ(1, frame.render_passes[1]->id.index); 152 EXPECT_EQ(1, frame.render_passes[1]->id.index);
154 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); 153 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id);
(...skipping 13 matching lines...) Expand all
168 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 167 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
169 frame.render_passes[2]->output_rect.ToString()); 168 frame.render_passes[2]->output_rect.ToString());
170 169
171 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 170 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
172 host_impl_->DidDrawAllLayers(frame); 171 host_impl_->DidDrawAllLayers(frame);
173 } 172 }
174 173
175 TEST_F(DelegatedRendererLayerImplTestSimple, 174 TEST_F(DelegatedRendererLayerImplTestSimple,
176 AddsQuadsToContributingRenderPasses) { 175 AddsQuadsToContributingRenderPasses) {
177 LayerTreeHostImpl::FrameData frame; 176 LayerTreeHostImpl::FrameData frame;
178 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 177 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
179 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
180 178
181 // Each non-DelegatedRendererLayer added one RenderPass. The 179 // Each non-DelegatedRendererLayer added one RenderPass. The
182 // DelegatedRendererLayer added two contributing passes. 180 // DelegatedRendererLayer added two contributing passes.
183 ASSERT_EQ(5u, frame.render_passes.size()); 181 ASSERT_EQ(5u, frame.render_passes.size());
184 182
185 // The DelegatedRendererLayer should have added its contributing RenderPasses 183 // The DelegatedRendererLayer should have added its contributing RenderPasses
186 // to the frame. 184 // to the frame.
187 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 185 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
188 EXPECT_EQ(1, frame.render_passes[1]->id.index); 186 EXPECT_EQ(1, frame.render_passes[1]->id.index);
189 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); 187 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id);
(...skipping 14 matching lines...) Expand all
204 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 202 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
205 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 203 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
206 frame.render_passes[1]->quad_list[0]->rect.ToString()); 204 frame.render_passes[1]->quad_list[0]->rect.ToString());
207 205
208 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 206 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
209 host_impl_->DidDrawAllLayers(frame); 207 host_impl_->DidDrawAllLayers(frame);
210 } 208 }
211 209
212 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { 210 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) {
213 LayerTreeHostImpl::FrameData frame; 211 LayerTreeHostImpl::FrameData frame;
214 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
215 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
216 213
217 // Each non-DelegatedRendererLayer added one RenderPass. The 214 // Each non-DelegatedRendererLayer added one RenderPass. The
218 // DelegatedRendererLayer added two contributing passes. 215 // DelegatedRendererLayer added two contributing passes.
219 ASSERT_EQ(5u, frame.render_passes.size()); 216 ASSERT_EQ(5u, frame.render_passes.size());
220 217
221 // The layer's target is the RenderPass from layer_after_. 218 // The layer's target is the RenderPass from layer_after_.
222 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); 219 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id);
223 220
224 // The DelegatedRendererLayer should have added copies of quads in its root 221 // The DelegatedRendererLayer should have added copies of quads in its root
225 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. 222 // RenderPass to its target RenderPass. The layer_after_ also adds one quad.
226 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); 223 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size());
227 224
228 // Verify it added the right quads. 225 // Verify it added the right quads.
229 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 226 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
230 frame.render_passes[3]->quad_list[0]->rect.ToString()); 227 frame.render_passes[3]->quad_list[0]->rect.ToString());
231 228
232 // Its target layer should have a quad as well. 229 // Its target layer should have a quad as well.
233 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), 230 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(),
234 frame.render_passes[3]->quad_list[1]->rect.ToString()); 231 frame.render_passes[3]->quad_list[1]->rect.ToString());
235 232
236 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
237 host_impl_->DidDrawAllLayers(frame); 234 host_impl_->DidDrawAllLayers(frame);
238 } 235 }
239 236
240 TEST_F(DelegatedRendererLayerImplTestSimple, 237 TEST_F(DelegatedRendererLayerImplTestSimple,
241 QuadsFromRootRenderPassAreModifiedForTheTarget) { 238 QuadsFromRootRenderPassAreModifiedForTheTarget) {
242 LayerTreeHostImpl::FrameData frame; 239 LayerTreeHostImpl::FrameData frame;
243 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 240 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
244 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
245 241
246 // Each non-DelegatedRendererLayer added one RenderPass. The 242 // Each non-DelegatedRendererLayer added one RenderPass. The
247 // DelegatedRendererLayer added two contributing passes. 243 // DelegatedRendererLayer added two contributing passes.
248 ASSERT_EQ(5u, frame.render_passes.size()); 244 ASSERT_EQ(5u, frame.render_passes.size());
249 245
250 // 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
251 // 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
252 // all be transformed by that combined amount. 248 // all be transformed by that combined amount.
253 // The DelegatedRendererLayer has a size of 10x10, but the root delegated 249 // The DelegatedRendererLayer has a size of 10x10, but the root delegated
254 // 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
267 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 263 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
268 EXPECT_TRANSFORMATION_MATRIX_EQ( 264 EXPECT_TRANSFORMATION_MATRIX_EQ(
269 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); 265 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform());
270 266
271 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
272 host_impl_->DidDrawAllLayers(frame); 268 host_impl_->DidDrawAllLayers(frame);
273 } 269 }
274 270
275 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { 271 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) {
276 LayerTreeHostImpl::FrameData frame; 272 LayerTreeHostImpl::FrameData frame;
277 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
278 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
279 274
280 // The delegated layer has a surface between it and the root. 275 // The delegated layer has a surface between it and the root.
281 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); 276 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent());
282 277
283 // Each non-DelegatedRendererLayer added one RenderPass. The 278 // Each non-DelegatedRendererLayer added one RenderPass. The
284 // DelegatedRendererLayer added two contributing passes. 279 // DelegatedRendererLayer added two contributing passes.
285 ASSERT_EQ(5u, frame.render_passes.size()); 280 ASSERT_EQ(5u, frame.render_passes.size());
286 281
287 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all 282 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all
288 // render pass' transforms to the root should be shifted by this amount. 283 // render pass' transforms to the root should be shifted by this amount.
(...skipping 15 matching lines...) Expand all
304 EXPECT_TRANSFORMATION_MATRIX_EQ( 299 EXPECT_TRANSFORMATION_MATRIX_EQ(
305 transform * seven_eight, 300 transform * seven_eight,
306 frame.render_passes[2]->transform_to_root_target); 301 frame.render_passes[2]->transform_to_root_target);
307 302
308 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 303 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
309 host_impl_->DidDrawAllLayers(frame); 304 host_impl_->DidDrawAllLayers(frame);
310 } 305 }
311 306
312 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { 307 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) {
313 LayerTreeHostImpl::FrameData frame; 308 LayerTreeHostImpl::FrameData frame;
314 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 309 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
315 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
316 310
317 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it 311 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it
318 // has no need to be a RenderSurface for the quads it carries. 312 // has no need to be a RenderSurface for the quads it carries.
319 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); 313 EXPECT_FALSE(delegated_renderer_layer_->render_surface());
320 314
321 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 315 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
322 host_impl_->DidDrawAllLayers(frame); 316 host_impl_->DidDrawAllLayers(frame);
323 } 317 }
324 318
325 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { 319 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) {
326 delegated_renderer_layer_->SetOpacity(0.5f); 320 delegated_renderer_layer_->SetOpacity(0.5f);
327 321
328 LayerTreeHostImpl::FrameData frame; 322 LayerTreeHostImpl::FrameData frame;
329 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 323 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
330 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
331 324
332 // This test case has quads from multiple layers in the delegated renderer, so 325 // This test case has quads from multiple layers in the delegated renderer, so
333 // if the DelegatedRendererLayer has opacity < 1, it should end up with a 326 // if the DelegatedRendererLayer has opacity < 1, it should end up with a
334 // render surface. 327 // render surface.
335 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); 328 EXPECT_TRUE(delegated_renderer_layer_->render_surface());
336 329
337 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 330 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
338 host_impl_->DidDrawAllLayers(frame); 331 host_impl_->DidDrawAllLayers(frame);
339 } 332 }
340 333
341 TEST_F(DelegatedRendererLayerImplTestSimple, 334 TEST_F(DelegatedRendererLayerImplTestSimple,
342 DoesOwnARenderSurfaceForTransform) { 335 DoesOwnARenderSurfaceForTransform) {
343 gfx::Transform rotation; 336 gfx::Transform rotation;
344 rotation.RotateAboutZAxis(30.0); 337 rotation.RotateAboutZAxis(30.0);
345 delegated_renderer_layer_->SetTransform(rotation); 338 delegated_renderer_layer_->SetTransform(rotation);
346 339
347 LayerTreeHostImpl::FrameData frame; 340 LayerTreeHostImpl::FrameData frame;
348 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 341 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
349 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
350 342
351 // This test case has quads from multiple layers in the delegated renderer, so 343 // This test case has quads from multiple layers in the delegated renderer, so
352 // if the DelegatedRendererLayer has opacity < 1, it should end up with a 344 // if the DelegatedRendererLayer has opacity < 1, it should end up with a
353 // render surface. 345 // render surface.
354 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); 346 EXPECT_TRUE(delegated_renderer_layer_->render_surface());
355 347
356 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 348 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
357 host_impl_->DidDrawAllLayers(frame); 349 host_impl_->DidDrawAllLayers(frame);
358 } 350 }
359 351
360 class DelegatedRendererLayerImplTestOwnSurface 352 class DelegatedRendererLayerImplTestOwnSurface
361 : public DelegatedRendererLayerImplTestSimple { 353 : public DelegatedRendererLayerImplTestSimple {
362 public: 354 public:
363 DelegatedRendererLayerImplTestOwnSurface() 355 DelegatedRendererLayerImplTestOwnSurface()
364 : DelegatedRendererLayerImplTestSimple() { 356 : DelegatedRendererLayerImplTestSimple() {
365 delegated_renderer_layer_->SetForceRenderSurface(true); 357 delegated_renderer_layer_->SetForceRenderSurface(true);
366 } 358 }
367 }; 359 };
368 360
369 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { 361 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) {
370 LayerTreeHostImpl::FrameData frame; 362 LayerTreeHostImpl::FrameData frame;
371 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 363 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
372 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
373 364
374 // Each non-DelegatedRendererLayer added one RenderPass. The 365 // Each non-DelegatedRendererLayer added one RenderPass. The
375 // DelegatedRendererLayer added two contributing passes and its owned surface 366 // DelegatedRendererLayer added two contributing passes and its owned surface
376 // added one pass. 367 // added one pass.
377 ASSERT_EQ(6u, frame.render_passes.size()); 368 ASSERT_EQ(6u, frame.render_passes.size());
378 369
379 // The DelegatedRendererLayer should have added its contributing RenderPasses 370 // The DelegatedRendererLayer should have added its contributing RenderPasses
380 // to the frame. 371 // to the frame.
381 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 372 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
382 EXPECT_EQ(1, frame.render_passes[1]->id.index); 373 EXPECT_EQ(1, frame.render_passes[1]->id.index);
(...skipping 18 matching lines...) Expand all
401 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 392 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
402 frame.render_passes[2]->output_rect.ToString()); 393 frame.render_passes[2]->output_rect.ToString());
403 394
404 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 395 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
405 host_impl_->DidDrawAllLayers(frame); 396 host_impl_->DidDrawAllLayers(frame);
406 } 397 }
407 398
408 TEST_F(DelegatedRendererLayerImplTestOwnSurface, 399 TEST_F(DelegatedRendererLayerImplTestOwnSurface,
409 AddsQuadsToContributingRenderPasses) { 400 AddsQuadsToContributingRenderPasses) {
410 LayerTreeHostImpl::FrameData frame; 401 LayerTreeHostImpl::FrameData frame;
411 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 402 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
412 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
413 403
414 // Each non-DelegatedRendererLayer added one RenderPass. The 404 // Each non-DelegatedRendererLayer added one RenderPass. The
415 // DelegatedRendererLayer added two contributing passes and its owned surface 405 // DelegatedRendererLayer added two contributing passes and its owned surface
416 // added one pass. 406 // added one pass.
417 ASSERT_EQ(6u, frame.render_passes.size()); 407 ASSERT_EQ(6u, frame.render_passes.size());
418 408
419 // The DelegatedRendererLayer should have added its contributing RenderPasses 409 // The DelegatedRendererLayer should have added its contributing RenderPasses
420 // to the frame. 410 // to the frame.
421 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 411 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
422 EXPECT_EQ(1, frame.render_passes[1]->id.index); 412 EXPECT_EQ(1, frame.render_passes[1]->id.index);
(...skipping 15 matching lines...) Expand all
438 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 428 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
439 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 429 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
440 frame.render_passes[1]->quad_list[0]->rect.ToString()); 430 frame.render_passes[1]->quad_list[0]->rect.ToString());
441 431
442 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 432 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
443 host_impl_->DidDrawAllLayers(frame); 433 host_impl_->DidDrawAllLayers(frame);
444 } 434 }
445 435
446 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { 436 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) {
447 LayerTreeHostImpl::FrameData frame; 437 LayerTreeHostImpl::FrameData frame;
448 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 438 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
449 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
450 439
451 // Each non-DelegatedRendererLayer added one RenderPass. The 440 // Each non-DelegatedRendererLayer added one RenderPass. The
452 // DelegatedRendererLayer added two contributing passes and its owned surface 441 // DelegatedRendererLayer added two contributing passes and its owned surface
453 // added one pass. 442 // added one pass.
454 ASSERT_EQ(6u, frame.render_passes.size()); 443 ASSERT_EQ(6u, frame.render_passes.size());
455 444
456 // The layer's target is the RenderPass owned by itself. 445 // The layer's target is the RenderPass owned by itself.
457 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); 446 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id);
458 447
459 // The DelegatedRendererLayer should have added copies of quads in its root 448 // The DelegatedRendererLayer should have added copies of quads in its root
460 // RenderPass to its target RenderPass. 449 // RenderPass to its target RenderPass.
461 // The layer_after also adds one quad. 450 // The layer_after also adds one quad.
462 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); 451 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size());
463 452
464 // Verify it added the right quads. 453 // Verify it added the right quads.
465 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 454 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
466 frame.render_passes[3]->quad_list[0]->rect.ToString()); 455 frame.render_passes[3]->quad_list[0]->rect.ToString());
467 456
468 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 457 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
469 host_impl_->DidDrawAllLayers(frame); 458 host_impl_->DidDrawAllLayers(frame);
470 } 459 }
471 460
472 TEST_F(DelegatedRendererLayerImplTestOwnSurface, 461 TEST_F(DelegatedRendererLayerImplTestOwnSurface,
473 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { 462 QuadsFromRootRenderPassAreNotModifiedForTheTarget) {
474 LayerTreeHostImpl::FrameData frame; 463 LayerTreeHostImpl::FrameData frame;
475 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 464 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
476 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
477 465
478 // Each non-DelegatedRendererLayer added one RenderPass. The 466 // Each non-DelegatedRendererLayer added one RenderPass. The
479 // DelegatedRendererLayer added two contributing passes and its owned surface 467 // DelegatedRendererLayer added two contributing passes and its owned surface
480 // added one pass. 468 // added one pass.
481 ASSERT_EQ(6u, frame.render_passes.size()); 469 ASSERT_EQ(6u, frame.render_passes.size());
482 470
483 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root 471 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root
484 // RenderPass' quads do not need to be translated at all. However, they are 472 // RenderPass' quads do not need to be translated at all. However, they are
485 // scaled from the frame's size (8x8) to the layer's bounds (10x10). 473 // scaled from the frame's size (8x8) to the layer's bounds (10x10).
486 gfx::Transform transform; 474 gfx::Transform transform;
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 LayerImpl* root_layer_; 687 LayerImpl* root_layer_;
700 DelegatedRendererLayerImpl* delegated_renderer_layer_; 688 DelegatedRendererLayerImpl* delegated_renderer_layer_;
701 bool root_delegated_render_pass_is_clipped_; 689 bool root_delegated_render_pass_is_clipped_;
702 }; 690 };
703 691
704 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { 692 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) {
705 root_delegated_render_pass_is_clipped_ = false; 693 root_delegated_render_pass_is_clipped_ = false;
706 SetUpTest(); 694 SetUpTest();
707 695
708 LayerTreeHostImpl::FrameData frame; 696 LayerTreeHostImpl::FrameData frame;
709 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 697 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
710 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
711 698
712 const SharedQuadState* root_delegated_shared_quad_state = NULL; 699 const SharedQuadState* root_delegated_shared_quad_state = NULL;
713 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 700 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
714 VerifyRenderPasses( 701 VerifyRenderPasses(
715 frame, 702 frame,
716 2, 703 2,
717 &root_delegated_shared_quad_state, 704 &root_delegated_shared_quad_state,
718 &contrib_delegated_shared_quad_state); 705 &contrib_delegated_shared_quad_state);
719 706
720 // When the quads don't have a clip of their own, the clip rect is set to 707 // 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
756 743
757 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 744 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
758 host_impl_->DidDrawAllLayers(frame); 745 host_impl_->DidDrawAllLayers(frame);
759 } 746 }
760 747
761 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { 748 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) {
762 root_delegated_render_pass_is_clipped_ = true; 749 root_delegated_render_pass_is_clipped_ = true;
763 SetUpTest(); 750 SetUpTest();
764 751
765 LayerTreeHostImpl::FrameData frame; 752 LayerTreeHostImpl::FrameData frame;
766 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 753 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
767 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
768 754
769 const SharedQuadState* root_delegated_shared_quad_state = NULL; 755 const SharedQuadState* root_delegated_shared_quad_state = NULL;
770 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 756 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
771 VerifyRenderPasses( 757 VerifyRenderPasses(
772 frame, 758 frame,
773 2, 759 2,
774 &root_delegated_shared_quad_state, 760 &root_delegated_shared_quad_state,
775 &contrib_delegated_shared_quad_state); 761 &contrib_delegated_shared_quad_state);
776 762
777 // Since the quads have a clip_rect it should be modified by delegated 763 // 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
822 host_impl_->DidDrawAllLayers(frame); 808 host_impl_->DidDrawAllLayers(frame);
823 } 809 }
824 810
825 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { 811 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) {
826 root_delegated_render_pass_is_clipped_ = false; 812 root_delegated_render_pass_is_clipped_ = false;
827 SetUpTest(); 813 SetUpTest();
828 814
829 delegated_renderer_layer_->SetForceRenderSurface(true); 815 delegated_renderer_layer_->SetForceRenderSurface(true);
830 816
831 LayerTreeHostImpl::FrameData frame; 817 LayerTreeHostImpl::FrameData frame;
832 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 818 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
833 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
834 819
835 const SharedQuadState* root_delegated_shared_quad_state = NULL; 820 const SharedQuadState* root_delegated_shared_quad_state = NULL;
836 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 821 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
837 VerifyRenderPasses( 822 VerifyRenderPasses(
838 frame, 823 frame,
839 3, 824 3,
840 &root_delegated_shared_quad_state, 825 &root_delegated_shared_quad_state,
841 &contrib_delegated_shared_quad_state); 826 &contrib_delegated_shared_quad_state);
842 827
843 // When the layer owns a surface, then its position and translation are not 828 // 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
879 host_impl_->DidDrawAllLayers(frame); 864 host_impl_->DidDrawAllLayers(frame);
880 } 865 }
881 866
882 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { 867 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) {
883 root_delegated_render_pass_is_clipped_ = true; 868 root_delegated_render_pass_is_clipped_ = true;
884 SetUpTest(); 869 SetUpTest();
885 870
886 delegated_renderer_layer_->SetForceRenderSurface(true); 871 delegated_renderer_layer_->SetForceRenderSurface(true);
887 872
888 LayerTreeHostImpl::FrameData frame; 873 LayerTreeHostImpl::FrameData frame;
889 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 874 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
890 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
891 875
892 const SharedQuadState* root_delegated_shared_quad_state = NULL; 876 const SharedQuadState* root_delegated_shared_quad_state = NULL;
893 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 877 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
894 VerifyRenderPasses( 878 VerifyRenderPasses(
895 frame, 879 frame,
896 3, 880 3,
897 &root_delegated_shared_quad_state, 881 &root_delegated_shared_quad_state,
898 &contrib_delegated_shared_quad_state); 882 &contrib_delegated_shared_quad_state);
899 883
900 // When the layer owns a surface, then its position and translation are not 884 // When the layer owns a surface, then its position and translation are not
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 bool clip_delegated_renderer_layer_; 1088 bool clip_delegated_renderer_layer_;
1105 }; 1089 };
1106 1090
1107 TEST_F(DelegatedRendererLayerImplTestClip, 1091 TEST_F(DelegatedRendererLayerImplTestClip,
1108 QuadsUnclipped_LayerUnclipped_NoSurface) { 1092 QuadsUnclipped_LayerUnclipped_NoSurface) {
1109 root_delegated_render_pass_is_clipped_ = false; 1093 root_delegated_render_pass_is_clipped_ = false;
1110 clip_delegated_renderer_layer_ = false; 1094 clip_delegated_renderer_layer_ = false;
1111 SetUpTest(); 1095 SetUpTest();
1112 1096
1113 LayerTreeHostImpl::FrameData frame; 1097 LayerTreeHostImpl::FrameData frame;
1114 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1098 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1115 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1116 1099
1117 ASSERT_EQ(2u, frame.render_passes.size()); 1100 ASSERT_EQ(2u, frame.render_passes.size());
1118 const QuadList& contrib_delegated_quad_list = 1101 const QuadList& contrib_delegated_quad_list =
1119 frame.render_passes[0]->quad_list; 1102 frame.render_passes[0]->quad_list;
1120 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1103 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1121 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1104 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1122 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1105 ASSERT_EQ(5u, root_delegated_quad_list.size());
1123 const SharedQuadState* root_delegated_shared_quad_state = 1106 const SharedQuadState* root_delegated_shared_quad_state =
1124 root_delegated_quad_list[0]->shared_quad_state; 1107 root_delegated_quad_list[0]->shared_quad_state;
1125 1108
1126 // When the quads don't have a clip of their own, the clip rect is set to 1109 // When the quads don't have a clip of their own, the clip rect is set to
1127 // the drawable_content_rect of the delegated renderer layer. 1110 // the drawable_content_rect of the delegated renderer layer.
1128 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), 1111 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(),
1129 root_delegated_shared_quad_state->clip_rect.ToString()); 1112 root_delegated_shared_quad_state->clip_rect.ToString());
1130 // Quads are clipped to the delegated renderer layer. 1113 // Quads are clipped to the delegated renderer layer.
1131 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1114 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1132 1115
1133 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1116 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1134 host_impl_->DidDrawAllLayers(frame); 1117 host_impl_->DidDrawAllLayers(frame);
1135 } 1118 }
1136 1119
1137 TEST_F(DelegatedRendererLayerImplTestClip, 1120 TEST_F(DelegatedRendererLayerImplTestClip,
1138 QuadsClipped_LayerUnclipped_NoSurface) { 1121 QuadsClipped_LayerUnclipped_NoSurface) {
1139 root_delegated_render_pass_is_clipped_ = true; 1122 root_delegated_render_pass_is_clipped_ = true;
1140 clip_delegated_renderer_layer_ = false; 1123 clip_delegated_renderer_layer_ = false;
1141 SetUpTest(); 1124 SetUpTest();
1142 1125
1143 LayerTreeHostImpl::FrameData frame; 1126 LayerTreeHostImpl::FrameData frame;
1144 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1127 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1145 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1146 1128
1147 ASSERT_EQ(2u, frame.render_passes.size()); 1129 ASSERT_EQ(2u, frame.render_passes.size());
1148 const QuadList& contrib_delegated_quad_list = 1130 const QuadList& contrib_delegated_quad_list =
1149 frame.render_passes[0]->quad_list; 1131 frame.render_passes[0]->quad_list;
1150 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1132 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1151 const QuadList& root_delegated_quad_list = 1133 const QuadList& root_delegated_quad_list =
1152 frame.render_passes[1]->quad_list; 1134 frame.render_passes[1]->quad_list;
1153 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1135 ASSERT_EQ(5u, root_delegated_quad_list.size());
1154 const SharedQuadState* root_delegated_shared_quad_state = 1136 const SharedQuadState* root_delegated_shared_quad_state =
1155 root_delegated_quad_list[0]->shared_quad_state; 1137 root_delegated_quad_list[0]->shared_quad_state;
1156 1138
1157 // When the quads have a clip of their own, it is used. 1139 // When the quads have a clip of their own, it is used.
1158 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), 1140 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(),
1159 root_delegated_shared_quad_state->clip_rect.ToString()); 1141 root_delegated_shared_quad_state->clip_rect.ToString());
1160 // Quads came with a clip rect. 1142 // Quads came with a clip rect.
1161 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1143 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1162 1144
1163 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1145 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1164 host_impl_->DidDrawAllLayers(frame); 1146 host_impl_->DidDrawAllLayers(frame);
1165 } 1147 }
1166 1148
1167 TEST_F(DelegatedRendererLayerImplTestClip, 1149 TEST_F(DelegatedRendererLayerImplTestClip,
1168 QuadsUnclipped_LayerClipped_NoSurface) { 1150 QuadsUnclipped_LayerClipped_NoSurface) {
1169 root_delegated_render_pass_is_clipped_ = false; 1151 root_delegated_render_pass_is_clipped_ = false;
1170 clip_delegated_renderer_layer_ = true; 1152 clip_delegated_renderer_layer_ = true;
1171 SetUpTest(); 1153 SetUpTest();
1172 1154
1173 LayerTreeHostImpl::FrameData frame; 1155 LayerTreeHostImpl::FrameData frame;
1174 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1156 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1175 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1176 1157
1177 ASSERT_EQ(2u, frame.render_passes.size()); 1158 ASSERT_EQ(2u, frame.render_passes.size());
1178 const QuadList& contrib_delegated_quad_list = 1159 const QuadList& contrib_delegated_quad_list =
1179 frame.render_passes[0]->quad_list; 1160 frame.render_passes[0]->quad_list;
1180 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1161 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1181 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1162 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1182 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1163 ASSERT_EQ(5u, root_delegated_quad_list.size());
1183 const SharedQuadState* root_delegated_shared_quad_state = 1164 const SharedQuadState* root_delegated_shared_quad_state =
1184 root_delegated_quad_list[0]->shared_quad_state; 1165 root_delegated_quad_list[0]->shared_quad_state;
1185 1166
1186 // When the quads don't have a clip of their own, the clip rect is set to 1167 // When the quads don't have a clip of their own, the clip rect is set to
1187 // the drawable_content_rect of the delegated renderer layer. When the layer 1168 // the drawable_content_rect of the delegated renderer layer. When the layer
1188 // is clipped, that should be seen in the quads' clip_rect. 1169 // is clipped, that should be seen in the quads' clip_rect.
1189 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), 1170 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(),
1190 root_delegated_shared_quad_state->clip_rect.ToString()); 1171 root_delegated_shared_quad_state->clip_rect.ToString());
1191 // Quads are clipped to the delegated renderer layer. 1172 // Quads are clipped to the delegated renderer layer.
1192 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1173 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1193 1174
1194 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1175 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1195 host_impl_->DidDrawAllLayers(frame); 1176 host_impl_->DidDrawAllLayers(frame);
1196 } 1177 }
1197 1178
1198 TEST_F(DelegatedRendererLayerImplTestClip, 1179 TEST_F(DelegatedRendererLayerImplTestClip,
1199 QuadsClipped_LayerClipped_NoSurface) { 1180 QuadsClipped_LayerClipped_NoSurface) {
1200 root_delegated_render_pass_is_clipped_ = true; 1181 root_delegated_render_pass_is_clipped_ = true;
1201 clip_delegated_renderer_layer_ = true; 1182 clip_delegated_renderer_layer_ = true;
1202 SetUpTest(); 1183 SetUpTest();
1203 1184
1204 LayerTreeHostImpl::FrameData frame; 1185 LayerTreeHostImpl::FrameData frame;
1205 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1186 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1206 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1207 1187
1208 ASSERT_EQ(2u, frame.render_passes.size()); 1188 ASSERT_EQ(2u, frame.render_passes.size());
1209 const QuadList& contrib_delegated_quad_list = 1189 const QuadList& contrib_delegated_quad_list =
1210 frame.render_passes[0]->quad_list; 1190 frame.render_passes[0]->quad_list;
1211 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1191 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1212 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1192 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1213 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1193 ASSERT_EQ(5u, root_delegated_quad_list.size());
1214 const SharedQuadState* root_delegated_shared_quad_state = 1194 const SharedQuadState* root_delegated_shared_quad_state =
1215 root_delegated_quad_list[0]->shared_quad_state; 1195 root_delegated_quad_list[0]->shared_quad_state;
1216 1196
(...skipping 10 matching lines...) Expand all
1227 1207
1228 TEST_F(DelegatedRendererLayerImplTestClip, 1208 TEST_F(DelegatedRendererLayerImplTestClip,
1229 QuadsUnclipped_LayerUnclipped_Surface) { 1209 QuadsUnclipped_LayerUnclipped_Surface) {
1230 root_delegated_render_pass_is_clipped_ = false; 1210 root_delegated_render_pass_is_clipped_ = false;
1231 clip_delegated_renderer_layer_ = false; 1211 clip_delegated_renderer_layer_ = false;
1232 SetUpTest(); 1212 SetUpTest();
1233 1213
1234 delegated_renderer_layer_->SetForceRenderSurface(true); 1214 delegated_renderer_layer_->SetForceRenderSurface(true);
1235 1215
1236 LayerTreeHostImpl::FrameData frame; 1216 LayerTreeHostImpl::FrameData frame;
1237 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1217 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1238 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1239 1218
1240 ASSERT_EQ(3u, frame.render_passes.size()); 1219 ASSERT_EQ(3u, frame.render_passes.size());
1241 const QuadList& contrib_delegated_quad_list = 1220 const QuadList& contrib_delegated_quad_list =
1242 frame.render_passes[0]->quad_list; 1221 frame.render_passes[0]->quad_list;
1243 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1222 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1244 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1223 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1245 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1224 ASSERT_EQ(5u, root_delegated_quad_list.size());
1246 const SharedQuadState* root_delegated_shared_quad_state = 1225 const SharedQuadState* root_delegated_shared_quad_state =
1247 root_delegated_quad_list[0]->shared_quad_state; 1226 root_delegated_quad_list[0]->shared_quad_state;
1248 1227
1249 // When the layer owns a surface, the quads don't need to be clipped 1228 // When the layer owns a surface, the quads don't need to be clipped
1250 // further than they already specify. If they aren't clipped, then their 1229 // further than they already specify. If they aren't clipped, then their
1251 // clip rect is ignored, and they are not set as clipped. 1230 // clip rect is ignored, and they are not set as clipped.
1252 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); 1231 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped);
1253 1232
1254 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1255 host_impl_->DidDrawAllLayers(frame); 1234 host_impl_->DidDrawAllLayers(frame);
1256 } 1235 }
1257 1236
1258 TEST_F(DelegatedRendererLayerImplTestClip, 1237 TEST_F(DelegatedRendererLayerImplTestClip,
1259 QuadsClipped_LayerUnclipped_Surface) { 1238 QuadsClipped_LayerUnclipped_Surface) {
1260 root_delegated_render_pass_is_clipped_ = true; 1239 root_delegated_render_pass_is_clipped_ = true;
1261 clip_delegated_renderer_layer_ = false; 1240 clip_delegated_renderer_layer_ = false;
1262 SetUpTest(); 1241 SetUpTest();
1263 1242
1264 delegated_renderer_layer_->SetForceRenderSurface(true); 1243 delegated_renderer_layer_->SetForceRenderSurface(true);
1265 1244
1266 LayerTreeHostImpl::FrameData frame; 1245 LayerTreeHostImpl::FrameData frame;
1267 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1246 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1268 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1269 1247
1270 ASSERT_EQ(3u, frame.render_passes.size()); 1248 ASSERT_EQ(3u, frame.render_passes.size());
1271 const QuadList& contrib_delegated_quad_list = 1249 const QuadList& contrib_delegated_quad_list =
1272 frame.render_passes[0]->quad_list; 1250 frame.render_passes[0]->quad_list;
1273 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1251 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1274 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1252 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1275 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1253 ASSERT_EQ(5u, root_delegated_quad_list.size());
1276 const SharedQuadState* root_delegated_shared_quad_state = 1254 const SharedQuadState* root_delegated_shared_quad_state =
1277 root_delegated_quad_list[0]->shared_quad_state; 1255 root_delegated_quad_list[0]->shared_quad_state;
1278 1256
1279 // When the quads have a clip of their own, it is used. 1257 // When the quads have a clip of their own, it is used.
1280 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), 1258 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(),
1281 root_delegated_shared_quad_state->clip_rect.ToString()); 1259 root_delegated_shared_quad_state->clip_rect.ToString());
1282 // Quads came with a clip rect. 1260 // Quads came with a clip rect.
1283 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1261 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1284 1262
1285 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1263 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1286 host_impl_->DidDrawAllLayers(frame); 1264 host_impl_->DidDrawAllLayers(frame);
1287 } 1265 }
1288 1266
1289 TEST_F(DelegatedRendererLayerImplTestClip, 1267 TEST_F(DelegatedRendererLayerImplTestClip,
1290 QuadsUnclipped_LayerClipped_Surface) { 1268 QuadsUnclipped_LayerClipped_Surface) {
1291 root_delegated_render_pass_is_clipped_ = false; 1269 root_delegated_render_pass_is_clipped_ = false;
1292 clip_delegated_renderer_layer_ = true; 1270 clip_delegated_renderer_layer_ = true;
1293 SetUpTest(); 1271 SetUpTest();
1294 1272
1295 delegated_renderer_layer_->SetForceRenderSurface(true); 1273 delegated_renderer_layer_->SetForceRenderSurface(true);
1296 1274
1297 LayerTreeHostImpl::FrameData frame; 1275 LayerTreeHostImpl::FrameData frame;
1298 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1276 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1299 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1300 1277
1301 ASSERT_EQ(3u, frame.render_passes.size()); 1278 ASSERT_EQ(3u, frame.render_passes.size());
1302 const QuadList& contrib_delegated_quad_list = 1279 const QuadList& contrib_delegated_quad_list =
1303 frame.render_passes[0]->quad_list; 1280 frame.render_passes[0]->quad_list;
1304 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1281 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1305 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1282 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1306 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1283 ASSERT_EQ(5u, root_delegated_quad_list.size());
1307 const SharedQuadState* root_delegated_shared_quad_state = 1284 const SharedQuadState* root_delegated_shared_quad_state =
1308 root_delegated_quad_list[0]->shared_quad_state; 1285 root_delegated_quad_list[0]->shared_quad_state;
1309 1286
1310 // When the layer owns a surface, the quads don't need to be clipped 1287 // When the layer owns a surface, the quads don't need to be clipped
1311 // further than they already specify. If they aren't clipped, then their 1288 // further than they already specify. If they aren't clipped, then their
1312 // clip rect is ignored, and they are not set as clipped. 1289 // clip rect is ignored, and they are not set as clipped.
1313 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); 1290 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped);
1314 1291
1315 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1292 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1316 host_impl_->DidDrawAllLayers(frame); 1293 host_impl_->DidDrawAllLayers(frame);
1317 } 1294 }
1318 1295
1319 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { 1296 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) {
1320 root_delegated_render_pass_is_clipped_ = true; 1297 root_delegated_render_pass_is_clipped_ = true;
1321 clip_delegated_renderer_layer_ = true; 1298 clip_delegated_renderer_layer_ = true;
1322 SetUpTest(); 1299 SetUpTest();
1323 1300
1324 delegated_renderer_layer_->SetForceRenderSurface(true); 1301 delegated_renderer_layer_->SetForceRenderSurface(true);
1325 1302
1326 LayerTreeHostImpl::FrameData frame; 1303 LayerTreeHostImpl::FrameData frame;
1327 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1304 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1328 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1329 1305
1330 ASSERT_EQ(3u, frame.render_passes.size()); 1306 ASSERT_EQ(3u, frame.render_passes.size());
1331 const QuadList& contrib_delegated_quad_list = 1307 const QuadList& contrib_delegated_quad_list =
1332 frame.render_passes[0]->quad_list; 1308 frame.render_passes[0]->quad_list;
1333 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1309 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1334 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1310 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1335 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1311 ASSERT_EQ(5u, root_delegated_quad_list.size());
1336 const SharedQuadState* root_delegated_shared_quad_state = 1312 const SharedQuadState* root_delegated_shared_quad_state =
1337 root_delegated_quad_list[0]->shared_quad_state; 1313 root_delegated_quad_list[0]->shared_quad_state;
1338 1314
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 delegated_renderer_layer->SetFrameDataForRenderPasses( 1358 delegated_renderer_layer->SetFrameDataForRenderPasses(
1383 &delegated_render_passes); 1359 &delegated_render_passes);
1384 1360
1385 // The RenderPasses should be taken by the layer. 1361 // The RenderPasses should be taken by the layer.
1386 EXPECT_EQ(0u, delegated_render_passes.size()); 1362 EXPECT_EQ(0u, delegated_render_passes.size());
1387 1363
1388 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); 1364 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>());
1389 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); 1365 host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
1390 1366
1391 LayerTreeHostImpl::FrameData frame; 1367 LayerTreeHostImpl::FrameData frame;
1392 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, 1368 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1393 host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1394 1369
1395 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. 1370 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad.
1396 ASSERT_EQ(1u, frame.render_passes.size()); 1371 ASSERT_EQ(1u, frame.render_passes.size());
1397 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 1372 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
1398 EXPECT_EQ(DrawQuad::SOLID_COLOR, 1373 EXPECT_EQ(DrawQuad::SOLID_COLOR,
1399 frame.render_passes[0]->quad_list[0]->material); 1374 frame.render_passes[0]->quad_list[0]->material);
1400 1375
1401 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1376 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1402 host_impl_->DidDrawAllLayers(frame); 1377 host_impl_->DidDrawAllLayers(frame);
1403 } 1378 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1531 // The occlusion extends to 500 in the x-axis, pushing the left of the 1506 // The occlusion extends to 500 in the x-axis, pushing the left of the
1532 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. 1507 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad.
1533 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), 1508 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(),
1534 impl.quad_list()[0]->visible_rect.ToString()); 1509 impl.quad_list()[0]->visible_rect.ToString());
1535 } 1510 }
1536 } 1511 }
1537 } 1512 }
1538 1513
1539 } // namespace 1514 } // namespace
1540 } // namespace cc 1515 } // namespace cc
OLDNEW
« no previous file with comments | « cc/cc.gyp ('k') | cc/output/delegating_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698