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

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

Issue 12662021: cc: Don't draw and swap if the frame will not change. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 8 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_tests.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/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 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 136
137 protected: 137 protected:
138 LayerImpl* root_layer_; 138 LayerImpl* root_layer_;
139 LayerImpl* layer_before_; 139 LayerImpl* layer_before_;
140 LayerImpl* layer_after_; 140 LayerImpl* layer_after_;
141 DelegatedRendererLayerImpl* delegated_renderer_layer_; 141 DelegatedRendererLayerImpl* delegated_renderer_layer_;
142 }; 142 };
143 143
144 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { 144 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) {
145 LayerTreeHostImpl::FrameData frame; 145 LayerTreeHostImpl::FrameData frame;
146 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 146 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
147 147
148 // Each non-DelegatedRendererLayer added one RenderPass. The 148 // Each non-DelegatedRendererLayer added one RenderPass. The
149 // DelegatedRendererLayer added two contributing passes. 149 // DelegatedRendererLayer added two contributing passes.
150 ASSERT_EQ(5u, frame.render_passes.size()); 150 ASSERT_EQ(5u, frame.render_passes.size());
151 151
152 // The DelegatedRendererLayer should have added its contributing RenderPasses 152 // The DelegatedRendererLayer should have added its contributing RenderPasses
153 // to the frame. 153 // to the frame.
154 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 154 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
155 EXPECT_EQ(1, frame.render_passes[1]->id.index); 155 EXPECT_EQ(1, frame.render_passes[1]->id.index);
156 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); 156 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id);
(...skipping 13 matching lines...) Expand all
170 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 170 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
171 frame.render_passes[2]->output_rect.ToString()); 171 frame.render_passes[2]->output_rect.ToString());
172 172
173 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 173 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
174 host_impl_->DidDrawAllLayers(frame); 174 host_impl_->DidDrawAllLayers(frame);
175 } 175 }
176 176
177 TEST_F(DelegatedRendererLayerImplTestSimple, 177 TEST_F(DelegatedRendererLayerImplTestSimple,
178 AddsQuadsToContributingRenderPasses) { 178 AddsQuadsToContributingRenderPasses) {
179 LayerTreeHostImpl::FrameData frame; 179 LayerTreeHostImpl::FrameData frame;
180 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 180 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
181 181
182 // Each non-DelegatedRendererLayer added one RenderPass. The 182 // Each non-DelegatedRendererLayer added one RenderPass. The
183 // DelegatedRendererLayer added two contributing passes. 183 // DelegatedRendererLayer added two contributing passes.
184 ASSERT_EQ(5u, frame.render_passes.size()); 184 ASSERT_EQ(5u, frame.render_passes.size());
185 185
186 // The DelegatedRendererLayer should have added its contributing RenderPasses 186 // The DelegatedRendererLayer should have added its contributing RenderPasses
187 // to the frame. 187 // to the frame.
188 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 188 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
189 EXPECT_EQ(1, frame.render_passes[1]->id.index); 189 EXPECT_EQ(1, frame.render_passes[1]->id.index);
190 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); 190 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id);
(...skipping 14 matching lines...) Expand all
205 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 205 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
206 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 206 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
207 frame.render_passes[1]->quad_list[0]->rect.ToString()); 207 frame.render_passes[1]->quad_list[0]->rect.ToString());
208 208
209 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 209 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
210 host_impl_->DidDrawAllLayers(frame); 210 host_impl_->DidDrawAllLayers(frame);
211 } 211 }
212 212
213 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { 213 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) {
214 LayerTreeHostImpl::FrameData frame; 214 LayerTreeHostImpl::FrameData frame;
215 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 215 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
216 216
217 // Each non-DelegatedRendererLayer added one RenderPass. The 217 // Each non-DelegatedRendererLayer added one RenderPass. The
218 // DelegatedRendererLayer added two contributing passes. 218 // DelegatedRendererLayer added two contributing passes.
219 ASSERT_EQ(5u, frame.render_passes.size()); 219 ASSERT_EQ(5u, frame.render_passes.size());
220 220
221 // The layer's target is the RenderPass from layer_after_. 221 // The layer's target is the RenderPass from layer_after_.
222 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); 222 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id);
223 223
224 // The DelegatedRendererLayer should have added copies of quads in its root 224 // The DelegatedRendererLayer should have added copies of quads in its root
225 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. 225 // RenderPass to its target RenderPass. The layer_after_ also adds one quad.
226 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); 226 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size());
227 227
228 // Verify it added the right quads. 228 // Verify it added the right quads.
229 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 229 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
230 frame.render_passes[3]->quad_list[0]->rect.ToString()); 230 frame.render_passes[3]->quad_list[0]->rect.ToString());
231 231
232 // Its target layer should have a quad as well. 232 // Its target layer should have a quad as well.
233 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), 233 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(),
234 frame.render_passes[3]->quad_list[1]->rect.ToString()); 234 frame.render_passes[3]->quad_list[1]->rect.ToString());
235 235
236 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 236 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
237 host_impl_->DidDrawAllLayers(frame); 237 host_impl_->DidDrawAllLayers(frame);
238 } 238 }
239 239
240 TEST_F(DelegatedRendererLayerImplTestSimple, 240 TEST_F(DelegatedRendererLayerImplTestSimple,
241 QuadsFromRootRenderPassAreModifiedForTheTarget) { 241 QuadsFromRootRenderPassAreModifiedForTheTarget) {
242 LayerTreeHostImpl::FrameData frame; 242 LayerTreeHostImpl::FrameData frame;
243 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 243 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
244 244
245 // Each non-DelegatedRendererLayer added one RenderPass. The 245 // Each non-DelegatedRendererLayer added one RenderPass. The
246 // DelegatedRendererLayer added two contributing passes. 246 // DelegatedRendererLayer added two contributing passes.
247 ASSERT_EQ(5u, frame.render_passes.size()); 247 ASSERT_EQ(5u, frame.render_passes.size());
248 248
249 // The DelegatedRendererLayer is at position 3,3 compared to its target, and 249 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
250 // has a translation transform of 1,1. So its root RenderPass' quads should 250 // has a translation transform of 1,1. So its root RenderPass' quads should
251 // all be transformed by that combined amount. 251 // all be transformed by that combined amount.
252 // The DelegatedRendererLayer has a size of 10x10, but the root delegated 252 // The DelegatedRendererLayer has a size of 10x10, but the root delegated
253 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8. 253 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8.
(...skipping 12 matching lines...) Expand all
266 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 266 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
267 EXPECT_TRANSFORMATION_MATRIX_EQ( 267 EXPECT_TRANSFORMATION_MATRIX_EQ(
268 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); 268 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform());
269 269
270 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 270 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
271 host_impl_->DidDrawAllLayers(frame); 271 host_impl_->DidDrawAllLayers(frame);
272 } 272 }
273 273
274 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { 274 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) {
275 LayerTreeHostImpl::FrameData frame; 275 LayerTreeHostImpl::FrameData frame;
276 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 276 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
277 277
278 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it 278 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it
279 // has no need to be a RenderSurface for the quads it carries. 279 // has no need to be a RenderSurface for the quads it carries.
280 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); 280 EXPECT_FALSE(delegated_renderer_layer_->render_surface());
281 281
282 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 282 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
283 host_impl_->DidDrawAllLayers(frame); 283 host_impl_->DidDrawAllLayers(frame);
284 } 284 }
285 285
286 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { 286 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) {
287 delegated_renderer_layer_->SetOpacity(0.5f); 287 delegated_renderer_layer_->SetOpacity(0.5f);
288 288
289 LayerTreeHostImpl::FrameData frame; 289 LayerTreeHostImpl::FrameData frame;
290 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 290 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
291 291
292 // This test case has quads from multiple layers in the delegated renderer, so 292 // This test case has quads from multiple layers in the delegated renderer, so
293 // if the DelegatedRendererLayer has opacity < 1, it should end up with a 293 // if the DelegatedRendererLayer has opacity < 1, it should end up with a
294 // render surface. 294 // render surface.
295 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); 295 EXPECT_TRUE(delegated_renderer_layer_->render_surface());
296 296
297 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 297 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
298 host_impl_->DidDrawAllLayers(frame); 298 host_impl_->DidDrawAllLayers(frame);
299 } 299 }
300 300
301 TEST_F(DelegatedRendererLayerImplTestSimple, 301 TEST_F(DelegatedRendererLayerImplTestSimple,
302 DoesOwnARenderSurfaceForTransform) { 302 DoesOwnARenderSurfaceForTransform) {
303 gfx::Transform rotation; 303 gfx::Transform rotation;
304 rotation.RotateAboutZAxis(30.0); 304 rotation.RotateAboutZAxis(30.0);
305 delegated_renderer_layer_->SetTransform(rotation); 305 delegated_renderer_layer_->SetTransform(rotation);
306 306
307 LayerTreeHostImpl::FrameData frame; 307 LayerTreeHostImpl::FrameData frame;
308 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 308 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
309 309
310 // This test case has quads from multiple layers in the delegated renderer, so 310 // This test case has quads from multiple layers in the delegated renderer, so
311 // if the DelegatedRendererLayer has opacity < 1, it should end up with a 311 // if the DelegatedRendererLayer has opacity < 1, it should end up with a
312 // render surface. 312 // render surface.
313 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); 313 EXPECT_TRUE(delegated_renderer_layer_->render_surface());
314 314
315 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 315 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
316 host_impl_->DidDrawAllLayers(frame); 316 host_impl_->DidDrawAllLayers(frame);
317 } 317 }
318 318
319 class DelegatedRendererLayerImplTestOwnSurface 319 class DelegatedRendererLayerImplTestOwnSurface
320 : public DelegatedRendererLayerImplTestSimple { 320 : public DelegatedRendererLayerImplTestSimple {
321 public: 321 public:
322 DelegatedRendererLayerImplTestOwnSurface() 322 DelegatedRendererLayerImplTestOwnSurface()
323 : DelegatedRendererLayerImplTestSimple() { 323 : DelegatedRendererLayerImplTestSimple() {
324 delegated_renderer_layer_->SetForceRenderSurface(true); 324 delegated_renderer_layer_->SetForceRenderSurface(true);
325 } 325 }
326 }; 326 };
327 327
328 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { 328 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) {
329 LayerTreeHostImpl::FrameData frame; 329 LayerTreeHostImpl::FrameData frame;
330 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 330 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
331 331
332 // Each non-DelegatedRendererLayer added one RenderPass. The 332 // Each non-DelegatedRendererLayer added one RenderPass. The
333 // DelegatedRendererLayer added two contributing passes and its owned surface 333 // DelegatedRendererLayer added two contributing passes and its owned surface
334 // added one pass. 334 // added one pass.
335 ASSERT_EQ(6u, frame.render_passes.size()); 335 ASSERT_EQ(6u, frame.render_passes.size());
336 336
337 // The DelegatedRendererLayer should have added its contributing RenderPasses 337 // The DelegatedRendererLayer should have added its contributing RenderPasses
338 // to the frame. 338 // to the frame.
339 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 339 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
340 EXPECT_EQ(1, frame.render_passes[1]->id.index); 340 EXPECT_EQ(1, frame.render_passes[1]->id.index);
(...skipping 18 matching lines...) Expand all
359 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 359 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
360 frame.render_passes[2]->output_rect.ToString()); 360 frame.render_passes[2]->output_rect.ToString());
361 361
362 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 362 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
363 host_impl_->DidDrawAllLayers(frame); 363 host_impl_->DidDrawAllLayers(frame);
364 } 364 }
365 365
366 TEST_F(DelegatedRendererLayerImplTestOwnSurface, 366 TEST_F(DelegatedRendererLayerImplTestOwnSurface,
367 AddsQuadsToContributingRenderPasses) { 367 AddsQuadsToContributingRenderPasses) {
368 LayerTreeHostImpl::FrameData frame; 368 LayerTreeHostImpl::FrameData frame;
369 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 369 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
370 370
371 // Each non-DelegatedRendererLayer added one RenderPass. The 371 // Each non-DelegatedRendererLayer added one RenderPass. The
372 // DelegatedRendererLayer added two contributing passes and its owned surface 372 // DelegatedRendererLayer added two contributing passes and its owned surface
373 // added one pass. 373 // added one pass.
374 ASSERT_EQ(6u, frame.render_passes.size()); 374 ASSERT_EQ(6u, frame.render_passes.size());
375 375
376 // The DelegatedRendererLayer should have added its contributing RenderPasses 376 // The DelegatedRendererLayer should have added its contributing RenderPasses
377 // to the frame. 377 // to the frame.
378 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 378 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
379 EXPECT_EQ(1, frame.render_passes[1]->id.index); 379 EXPECT_EQ(1, frame.render_passes[1]->id.index);
(...skipping 15 matching lines...) Expand all
395 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 395 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
396 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 396 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
397 frame.render_passes[1]->quad_list[0]->rect.ToString()); 397 frame.render_passes[1]->quad_list[0]->rect.ToString());
398 398
399 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 399 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
400 host_impl_->DidDrawAllLayers(frame); 400 host_impl_->DidDrawAllLayers(frame);
401 } 401 }
402 402
403 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { 403 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) {
404 LayerTreeHostImpl::FrameData frame; 404 LayerTreeHostImpl::FrameData frame;
405 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 405 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
406 406
407 // Each non-DelegatedRendererLayer added one RenderPass. The 407 // Each non-DelegatedRendererLayer added one RenderPass. The
408 // DelegatedRendererLayer added two contributing passes and its owned surface 408 // DelegatedRendererLayer added two contributing passes and its owned surface
409 // added one pass. 409 // added one pass.
410 ASSERT_EQ(6u, frame.render_passes.size()); 410 ASSERT_EQ(6u, frame.render_passes.size());
411 411
412 // The layer's target is the RenderPass owned by itself. 412 // The layer's target is the RenderPass owned by itself.
413 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); 413 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id);
414 414
415 // The DelegatedRendererLayer should have added copies of quads in its root 415 // The DelegatedRendererLayer should have added copies of quads in its root
416 // RenderPass to its target RenderPass. 416 // RenderPass to its target RenderPass.
417 // The layer_after also adds one quad. 417 // The layer_after also adds one quad.
418 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); 418 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size());
419 419
420 // Verify it added the right quads. 420 // Verify it added the right quads.
421 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 421 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
422 frame.render_passes[3]->quad_list[0]->rect.ToString()); 422 frame.render_passes[3]->quad_list[0]->rect.ToString());
423 423
424 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 424 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
425 host_impl_->DidDrawAllLayers(frame); 425 host_impl_->DidDrawAllLayers(frame);
426 } 426 }
427 427
428 TEST_F(DelegatedRendererLayerImplTestOwnSurface, 428 TEST_F(DelegatedRendererLayerImplTestOwnSurface,
429 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { 429 QuadsFromRootRenderPassAreNotModifiedForTheTarget) {
430 LayerTreeHostImpl::FrameData frame; 430 LayerTreeHostImpl::FrameData frame;
431 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 431 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
432 432
433 // Each non-DelegatedRendererLayer added one RenderPass. The 433 // Each non-DelegatedRendererLayer added one RenderPass. The
434 // DelegatedRendererLayer added two contributing passes and its owned surface 434 // DelegatedRendererLayer added two contributing passes and its owned surface
435 // added one pass. 435 // added one pass.
436 ASSERT_EQ(6u, frame.render_passes.size()); 436 ASSERT_EQ(6u, frame.render_passes.size());
437 437
438 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root 438 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root
439 // RenderPass' quads do not need to be translated at all. However, they are 439 // RenderPass' quads do not need to be translated at all. However, they are
440 // scaled from the frame's size (8x8) to the layer's bounds (10x10). 440 // scaled from the frame's size (8x8) to the layer's bounds (10x10).
441 gfx::Transform transform; 441 gfx::Transform transform;
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 LayerImpl* root_layer_; 632 LayerImpl* root_layer_;
633 DelegatedRendererLayerImpl* delegated_renderer_layer_; 633 DelegatedRendererLayerImpl* delegated_renderer_layer_;
634 bool root_delegated_render_pass_is_clipped_; 634 bool root_delegated_render_pass_is_clipped_;
635 }; 635 };
636 636
637 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { 637 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) {
638 root_delegated_render_pass_is_clipped_ = false; 638 root_delegated_render_pass_is_clipped_ = false;
639 SetUpTest(); 639 SetUpTest();
640 640
641 LayerTreeHostImpl::FrameData frame; 641 LayerTreeHostImpl::FrameData frame;
642 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 642 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
643 643
644 const SharedQuadState* root_delegated_shared_quad_state = NULL; 644 const SharedQuadState* root_delegated_shared_quad_state = NULL;
645 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 645 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
646 VerifyRenderPasses( 646 VerifyRenderPasses(
647 frame, 647 frame,
648 2, 648 2,
649 &root_delegated_shared_quad_state, 649 &root_delegated_shared_quad_state,
650 &contrib_delegated_shared_quad_state); 650 &contrib_delegated_shared_quad_state);
651 651
652 // When the quads don't have a clip of their own, the clip rect is set to 652 // When the quads don't have a clip of their own, the clip rect is set to
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 686
687 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 687 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
688 host_impl_->DidDrawAllLayers(frame); 688 host_impl_->DidDrawAllLayers(frame);
689 } 689 }
690 690
691 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { 691 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) {
692 root_delegated_render_pass_is_clipped_ = true; 692 root_delegated_render_pass_is_clipped_ = true;
693 SetUpTest(); 693 SetUpTest();
694 694
695 LayerTreeHostImpl::FrameData frame; 695 LayerTreeHostImpl::FrameData frame;
696 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 696 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
697 697
698 const SharedQuadState* root_delegated_shared_quad_state = NULL; 698 const SharedQuadState* root_delegated_shared_quad_state = NULL;
699 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 699 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
700 VerifyRenderPasses( 700 VerifyRenderPasses(
701 frame, 701 frame,
702 2, 702 2,
703 &root_delegated_shared_quad_state, 703 &root_delegated_shared_quad_state,
704 &contrib_delegated_shared_quad_state); 704 &contrib_delegated_shared_quad_state);
705 705
706 // Since the quads have a clip_rect it should be modified by delegated 706 // Since the quads have a clip_rect it should be modified by delegated
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 host_impl_->DidDrawAllLayers(frame); 747 host_impl_->DidDrawAllLayers(frame);
748 } 748 }
749 749
750 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { 750 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) {
751 root_delegated_render_pass_is_clipped_ = false; 751 root_delegated_render_pass_is_clipped_ = false;
752 SetUpTest(); 752 SetUpTest();
753 753
754 delegated_renderer_layer_->SetForceRenderSurface(true); 754 delegated_renderer_layer_->SetForceRenderSurface(true);
755 755
756 LayerTreeHostImpl::FrameData frame; 756 LayerTreeHostImpl::FrameData frame;
757 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 757 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
758 758
759 const SharedQuadState* root_delegated_shared_quad_state = NULL; 759 const SharedQuadState* root_delegated_shared_quad_state = NULL;
760 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 760 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
761 VerifyRenderPasses( 761 VerifyRenderPasses(
762 frame, 762 frame,
763 3, 763 3,
764 &root_delegated_shared_quad_state, 764 &root_delegated_shared_quad_state,
765 &contrib_delegated_shared_quad_state); 765 &contrib_delegated_shared_quad_state);
766 766
767 // When the layer owns a surface, then its position and translation are not 767 // When the layer owns a surface, then its position and translation are not
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 host_impl_->DidDrawAllLayers(frame); 802 host_impl_->DidDrawAllLayers(frame);
803 } 803 }
804 804
805 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { 805 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) {
806 root_delegated_render_pass_is_clipped_ = true; 806 root_delegated_render_pass_is_clipped_ = true;
807 SetUpTest(); 807 SetUpTest();
808 808
809 delegated_renderer_layer_->SetForceRenderSurface(true); 809 delegated_renderer_layer_->SetForceRenderSurface(true);
810 810
811 LayerTreeHostImpl::FrameData frame; 811 LayerTreeHostImpl::FrameData frame;
812 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 812 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
813 813
814 const SharedQuadState* root_delegated_shared_quad_state = NULL; 814 const SharedQuadState* root_delegated_shared_quad_state = NULL;
815 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; 815 const SharedQuadState* contrib_delegated_shared_quad_state = NULL;
816 VerifyRenderPasses( 816 VerifyRenderPasses(
817 frame, 817 frame,
818 3, 818 3,
819 &root_delegated_shared_quad_state, 819 &root_delegated_shared_quad_state,
820 &contrib_delegated_shared_quad_state); 820 &contrib_delegated_shared_quad_state);
821 821
822 // When the layer owns a surface, then its position and translation are not 822 // When the layer owns a surface, then its position and translation are not
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 bool clip_delegated_renderer_layer_; 1004 bool clip_delegated_renderer_layer_;
1005 }; 1005 };
1006 1006
1007 TEST_F(DelegatedRendererLayerImplTestClip, 1007 TEST_F(DelegatedRendererLayerImplTestClip,
1008 QuadsUnclipped_LayerUnclipped_NoSurface) { 1008 QuadsUnclipped_LayerUnclipped_NoSurface) {
1009 root_delegated_render_pass_is_clipped_ = false; 1009 root_delegated_render_pass_is_clipped_ = false;
1010 clip_delegated_renderer_layer_ = false; 1010 clip_delegated_renderer_layer_ = false;
1011 SetUpTest(); 1011 SetUpTest();
1012 1012
1013 LayerTreeHostImpl::FrameData frame; 1013 LayerTreeHostImpl::FrameData frame;
1014 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1014 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1015 1015
1016 ASSERT_EQ(2u, frame.render_passes.size()); 1016 ASSERT_EQ(2u, frame.render_passes.size());
1017 const QuadList& contrib_delegated_quad_list = 1017 const QuadList& contrib_delegated_quad_list =
1018 frame.render_passes[0]->quad_list; 1018 frame.render_passes[0]->quad_list;
1019 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1019 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1020 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1020 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1021 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1021 ASSERT_EQ(5u, root_delegated_quad_list.size());
1022 const SharedQuadState* root_delegated_shared_quad_state = 1022 const SharedQuadState* root_delegated_shared_quad_state =
1023 root_delegated_quad_list[0]->shared_quad_state; 1023 root_delegated_quad_list[0]->shared_quad_state;
1024 1024
1025 // When the quads don't have a clip of their own, the clip rect is set to 1025 // When the quads don't have a clip of their own, the clip rect is set to
1026 // the drawable_content_rect of the delegated renderer layer. 1026 // the drawable_content_rect of the delegated renderer layer.
1027 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), 1027 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(),
1028 root_delegated_shared_quad_state->clip_rect.ToString()); 1028 root_delegated_shared_quad_state->clip_rect.ToString());
1029 // Quads are clipped to the delegated renderer layer. 1029 // Quads are clipped to the delegated renderer layer.
1030 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1030 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1031 1031
1032 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 1032 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
1033 host_impl_->DidDrawAllLayers(frame); 1033 host_impl_->DidDrawAllLayers(frame);
1034 } 1034 }
1035 1035
1036 TEST_F(DelegatedRendererLayerImplTestClip, 1036 TEST_F(DelegatedRendererLayerImplTestClip,
1037 QuadsClipped_LayerUnclipped_NoSurface) { 1037 QuadsClipped_LayerUnclipped_NoSurface) {
1038 root_delegated_render_pass_is_clipped_ = true; 1038 root_delegated_render_pass_is_clipped_ = true;
1039 clip_delegated_renderer_layer_ = false; 1039 clip_delegated_renderer_layer_ = false;
1040 SetUpTest(); 1040 SetUpTest();
1041 1041
1042 LayerTreeHostImpl::FrameData frame; 1042 LayerTreeHostImpl::FrameData frame;
1043 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1043 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1044 1044
1045 ASSERT_EQ(2u, frame.render_passes.size()); 1045 ASSERT_EQ(2u, frame.render_passes.size());
1046 const QuadList& contrib_delegated_quad_list = 1046 const QuadList& contrib_delegated_quad_list =
1047 frame.render_passes[0]->quad_list; 1047 frame.render_passes[0]->quad_list;
1048 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1048 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1049 const QuadList& root_delegated_quad_list = 1049 const QuadList& root_delegated_quad_list =
1050 frame.render_passes[1]->quad_list; 1050 frame.render_passes[1]->quad_list;
1051 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1051 ASSERT_EQ(5u, root_delegated_quad_list.size());
1052 const SharedQuadState* root_delegated_shared_quad_state = 1052 const SharedQuadState* root_delegated_shared_quad_state =
1053 root_delegated_quad_list[0]->shared_quad_state; 1053 root_delegated_quad_list[0]->shared_quad_state;
1054 1054
1055 // When the quads have a clip of their own, it is used. 1055 // When the quads have a clip of their own, it is used.
1056 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), 1056 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(),
1057 root_delegated_shared_quad_state->clip_rect.ToString()); 1057 root_delegated_shared_quad_state->clip_rect.ToString());
1058 // Quads came with a clip rect. 1058 // Quads came with a clip rect.
1059 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1059 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1060 1060
1061 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 1061 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
1062 host_impl_->DidDrawAllLayers(frame); 1062 host_impl_->DidDrawAllLayers(frame);
1063 } 1063 }
1064 1064
1065 TEST_F(DelegatedRendererLayerImplTestClip, 1065 TEST_F(DelegatedRendererLayerImplTestClip,
1066 QuadsUnclipped_LayerClipped_NoSurface) { 1066 QuadsUnclipped_LayerClipped_NoSurface) {
1067 root_delegated_render_pass_is_clipped_ = false; 1067 root_delegated_render_pass_is_clipped_ = false;
1068 clip_delegated_renderer_layer_ = true; 1068 clip_delegated_renderer_layer_ = true;
1069 SetUpTest(); 1069 SetUpTest();
1070 1070
1071 LayerTreeHostImpl::FrameData frame; 1071 LayerTreeHostImpl::FrameData frame;
1072 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1072 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1073 1073
1074 ASSERT_EQ(2u, frame.render_passes.size()); 1074 ASSERT_EQ(2u, frame.render_passes.size());
1075 const QuadList& contrib_delegated_quad_list = 1075 const QuadList& contrib_delegated_quad_list =
1076 frame.render_passes[0]->quad_list; 1076 frame.render_passes[0]->quad_list;
1077 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1077 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1078 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1078 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1079 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1079 ASSERT_EQ(5u, root_delegated_quad_list.size());
1080 const SharedQuadState* root_delegated_shared_quad_state = 1080 const SharedQuadState* root_delegated_shared_quad_state =
1081 root_delegated_quad_list[0]->shared_quad_state; 1081 root_delegated_quad_list[0]->shared_quad_state;
1082 1082
1083 // When the quads don't have a clip of their own, the clip rect is set to 1083 // When the quads don't have a clip of their own, the clip rect is set to
1084 // the drawable_content_rect of the delegated renderer layer. When the layer 1084 // the drawable_content_rect of the delegated renderer layer. When the layer
1085 // is clipped, that should be seen in the quads' clip_rect. 1085 // is clipped, that should be seen in the quads' clip_rect.
1086 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), 1086 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(),
1087 root_delegated_shared_quad_state->clip_rect.ToString()); 1087 root_delegated_shared_quad_state->clip_rect.ToString());
1088 // Quads are clipped to the delegated renderer layer. 1088 // Quads are clipped to the delegated renderer layer.
1089 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1089 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1090 1090
1091 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 1091 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
1092 host_impl_->DidDrawAllLayers(frame); 1092 host_impl_->DidDrawAllLayers(frame);
1093 } 1093 }
1094 1094
1095 TEST_F(DelegatedRendererLayerImplTestClip, 1095 TEST_F(DelegatedRendererLayerImplTestClip,
1096 QuadsClipped_LayerClipped_NoSurface) { 1096 QuadsClipped_LayerClipped_NoSurface) {
1097 root_delegated_render_pass_is_clipped_ = true; 1097 root_delegated_render_pass_is_clipped_ = true;
1098 clip_delegated_renderer_layer_ = true; 1098 clip_delegated_renderer_layer_ = true;
1099 SetUpTest(); 1099 SetUpTest();
1100 1100
1101 LayerTreeHostImpl::FrameData frame; 1101 LayerTreeHostImpl::FrameData frame;
1102 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1102 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1103 1103
1104 ASSERT_EQ(2u, frame.render_passes.size()); 1104 ASSERT_EQ(2u, frame.render_passes.size());
1105 const QuadList& contrib_delegated_quad_list = 1105 const QuadList& contrib_delegated_quad_list =
1106 frame.render_passes[0]->quad_list; 1106 frame.render_passes[0]->quad_list;
1107 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1107 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1108 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1108 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1109 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1109 ASSERT_EQ(5u, root_delegated_quad_list.size());
1110 const SharedQuadState* root_delegated_shared_quad_state = 1110 const SharedQuadState* root_delegated_shared_quad_state =
1111 root_delegated_quad_list[0]->shared_quad_state; 1111 root_delegated_quad_list[0]->shared_quad_state;
1112 1112
(...skipping 10 matching lines...) Expand all
1123 1123
1124 TEST_F(DelegatedRendererLayerImplTestClip, 1124 TEST_F(DelegatedRendererLayerImplTestClip,
1125 QuadsUnclipped_LayerUnclipped_Surface) { 1125 QuadsUnclipped_LayerUnclipped_Surface) {
1126 root_delegated_render_pass_is_clipped_ = false; 1126 root_delegated_render_pass_is_clipped_ = false;
1127 clip_delegated_renderer_layer_ = false; 1127 clip_delegated_renderer_layer_ = false;
1128 SetUpTest(); 1128 SetUpTest();
1129 1129
1130 delegated_renderer_layer_->SetForceRenderSurface(true); 1130 delegated_renderer_layer_->SetForceRenderSurface(true);
1131 1131
1132 LayerTreeHostImpl::FrameData frame; 1132 LayerTreeHostImpl::FrameData frame;
1133 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1133 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1134 1134
1135 ASSERT_EQ(3u, frame.render_passes.size()); 1135 ASSERT_EQ(3u, frame.render_passes.size());
1136 const QuadList& contrib_delegated_quad_list = 1136 const QuadList& contrib_delegated_quad_list =
1137 frame.render_passes[0]->quad_list; 1137 frame.render_passes[0]->quad_list;
1138 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1138 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1139 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1139 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1140 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1140 ASSERT_EQ(5u, root_delegated_quad_list.size());
1141 const SharedQuadState* root_delegated_shared_quad_state = 1141 const SharedQuadState* root_delegated_shared_quad_state =
1142 root_delegated_quad_list[0]->shared_quad_state; 1142 root_delegated_quad_list[0]->shared_quad_state;
1143 1143
1144 // When the layer owns a surface, the quads don't need to be clipped 1144 // When the layer owns a surface, the quads don't need to be clipped
1145 // further than they already specify. If they aren't clipped, then their 1145 // further than they already specify. If they aren't clipped, then their
1146 // clip rect is ignored, and they are not set as clipped. 1146 // clip rect is ignored, and they are not set as clipped.
1147 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); 1147 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped);
1148 1148
1149 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 1149 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
1150 host_impl_->DidDrawAllLayers(frame); 1150 host_impl_->DidDrawAllLayers(frame);
1151 } 1151 }
1152 1152
1153 TEST_F(DelegatedRendererLayerImplTestClip, 1153 TEST_F(DelegatedRendererLayerImplTestClip,
1154 QuadsClipped_LayerUnclipped_Surface) { 1154 QuadsClipped_LayerUnclipped_Surface) {
1155 root_delegated_render_pass_is_clipped_ = true; 1155 root_delegated_render_pass_is_clipped_ = true;
1156 clip_delegated_renderer_layer_ = false; 1156 clip_delegated_renderer_layer_ = false;
1157 SetUpTest(); 1157 SetUpTest();
1158 1158
1159 delegated_renderer_layer_->SetForceRenderSurface(true); 1159 delegated_renderer_layer_->SetForceRenderSurface(true);
1160 1160
1161 LayerTreeHostImpl::FrameData frame; 1161 LayerTreeHostImpl::FrameData frame;
1162 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1162 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1163 1163
1164 ASSERT_EQ(3u, frame.render_passes.size()); 1164 ASSERT_EQ(3u, frame.render_passes.size());
1165 const QuadList& contrib_delegated_quad_list = 1165 const QuadList& contrib_delegated_quad_list =
1166 frame.render_passes[0]->quad_list; 1166 frame.render_passes[0]->quad_list;
1167 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1167 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1168 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1168 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1169 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1169 ASSERT_EQ(5u, root_delegated_quad_list.size());
1170 const SharedQuadState* root_delegated_shared_quad_state = 1170 const SharedQuadState* root_delegated_shared_quad_state =
1171 root_delegated_quad_list[0]->shared_quad_state; 1171 root_delegated_quad_list[0]->shared_quad_state;
1172 1172
1173 // When the quads have a clip of their own, it is used. 1173 // When the quads have a clip of their own, it is used.
1174 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), 1174 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(),
1175 root_delegated_shared_quad_state->clip_rect.ToString()); 1175 root_delegated_shared_quad_state->clip_rect.ToString());
1176 // Quads came with a clip rect. 1176 // Quads came with a clip rect.
1177 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1177 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1178 1178
1179 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 1179 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
1180 host_impl_->DidDrawAllLayers(frame); 1180 host_impl_->DidDrawAllLayers(frame);
1181 } 1181 }
1182 1182
1183 TEST_F(DelegatedRendererLayerImplTestClip, 1183 TEST_F(DelegatedRendererLayerImplTestClip,
1184 QuadsUnclipped_LayerClipped_Surface) { 1184 QuadsUnclipped_LayerClipped_Surface) {
1185 root_delegated_render_pass_is_clipped_ = false; 1185 root_delegated_render_pass_is_clipped_ = false;
1186 clip_delegated_renderer_layer_ = true; 1186 clip_delegated_renderer_layer_ = true;
1187 SetUpTest(); 1187 SetUpTest();
1188 1188
1189 delegated_renderer_layer_->SetForceRenderSurface(true); 1189 delegated_renderer_layer_->SetForceRenderSurface(true);
1190 1190
1191 LayerTreeHostImpl::FrameData frame; 1191 LayerTreeHostImpl::FrameData frame;
1192 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1192 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1193 1193
1194 ASSERT_EQ(3u, frame.render_passes.size()); 1194 ASSERT_EQ(3u, frame.render_passes.size());
1195 const QuadList& contrib_delegated_quad_list = 1195 const QuadList& contrib_delegated_quad_list =
1196 frame.render_passes[0]->quad_list; 1196 frame.render_passes[0]->quad_list;
1197 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1197 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1198 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;
1199 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1199 ASSERT_EQ(5u, root_delegated_quad_list.size());
1200 const SharedQuadState* root_delegated_shared_quad_state = 1200 const SharedQuadState* root_delegated_shared_quad_state =
1201 root_delegated_quad_list[0]->shared_quad_state; 1201 root_delegated_quad_list[0]->shared_quad_state;
1202 1202
1203 // 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
1204 // 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
1205 // clip rect is ignored, and they are not set as clipped. 1205 // clip rect is ignored, and they are not set as clipped.
1206 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); 1206 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped);
1207 1207
1208 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 1208 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
1209 host_impl_->DidDrawAllLayers(frame); 1209 host_impl_->DidDrawAllLayers(frame);
1210 } 1210 }
1211 1211
1212 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { 1212 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) {
1213 root_delegated_render_pass_is_clipped_ = true; 1213 root_delegated_render_pass_is_clipped_ = true;
1214 clip_delegated_renderer_layer_ = true; 1214 clip_delegated_renderer_layer_ = true;
1215 SetUpTest(); 1215 SetUpTest();
1216 1216
1217 delegated_renderer_layer_->SetForceRenderSurface(true); 1217 delegated_renderer_layer_->SetForceRenderSurface(true);
1218 1218
1219 LayerTreeHostImpl::FrameData frame; 1219 LayerTreeHostImpl::FrameData frame;
1220 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); 1220 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
1221 1221
1222 ASSERT_EQ(3u, frame.render_passes.size()); 1222 ASSERT_EQ(3u, frame.render_passes.size());
1223 const QuadList& contrib_delegated_quad_list = 1223 const QuadList& contrib_delegated_quad_list =
1224 frame.render_passes[0]->quad_list; 1224 frame.render_passes[0]->quad_list;
1225 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1225 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1226 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1226 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1227 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1227 ASSERT_EQ(5u, root_delegated_quad_list.size());
1228 const SharedQuadState* root_delegated_shared_quad_state = 1228 const SharedQuadState* root_delegated_shared_quad_state =
1229 root_delegated_quad_list[0]->shared_quad_state; 1229 root_delegated_quad_list[0]->shared_quad_state;
1230 1230
1231 // When the quads have a clip of their own, it is used, but it is 1231 // When the quads have a clip of their own, it is used, but it is
1232 // combined with the clip rect of the delegated renderer layer. If the 1232 // combined with the clip rect of the delegated renderer layer. If the
1233 // layer owns a surface, then it does not have a clip rect of its own. 1233 // layer owns a surface, then it does not have a clip rect of its own.
1234 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), 1234 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(),
1235 root_delegated_shared_quad_state->clip_rect.ToString()); 1235 root_delegated_shared_quad_state->clip_rect.ToString());
1236 // Quads came with a clip rect. 1236 // Quads came with a clip rect.
1237 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1237 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1238 1238
1239 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 1239 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
1240 host_impl_->DidDrawAllLayers(frame); 1240 host_impl_->DidDrawAllLayers(frame);
1241 } 1241 }
1242 1242
1243 } // namespace 1243 } // namespace
1244 } // namespace cc 1244 } // namespace cc
OLDNEW
« no previous file with comments | « cc/cc_tests.gyp ('k') | cc/output/delegating_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698