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

Side by Side Diff: cc/output/overlay_unittest.cc

Issue 368403003: Use RenderPass to create DrawQuad in unittests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@layerrawptrDQ
Patch Set: address review comments Created 6 years, 5 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
« no previous file with comments | « cc/layers/delegated_frame_provider_unittest.cc ('k') | cc/output/renderer_pixeltest.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/base/scoped_ptr_vector.h" 5 #include "cc/base/scoped_ptr_vector.h"
6 #include "cc/output/gl_renderer.h" 6 #include "cc/output/gl_renderer.h"
7 #include "cc/output/output_surface.h" 7 #include "cc/output/output_surface.h"
8 #include "cc/output/output_surface_client.h" 8 #include "cc/output/output_surface_client.h"
9 #include "cc/output/overlay_candidate_validator.h" 9 #include "cc/output/overlay_candidate_validator.h"
10 #include "cc/output/overlay_processor.h" 10 #include "cc/output/overlay_processor.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 TextureMailbox mailbox = 122 TextureMailbox mailbox =
123 TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); 123 TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point);
124 mailbox.set_allow_overlay(true); 124 mailbox.set_allow_overlay(true);
125 scoped_ptr<SingleReleaseCallback> release_callback = 125 scoped_ptr<SingleReleaseCallback> release_callback =
126 SingleReleaseCallback::Create(base::Bind(&MailboxReleased)); 126 SingleReleaseCallback::Create(base::Bind(&MailboxReleased));
127 127
128 return resource_provider->CreateResourceFromTextureMailbox( 128 return resource_provider->CreateResourceFromTextureMailbox(
129 mailbox, release_callback.Pass()); 129 mailbox, release_callback.Pass());
130 } 130 }
131 131
132 scoped_ptr<TextureDrawQuad> CreateCandidateQuad( 132 TextureDrawQuad* CreateCandidateQuad(ResourceProvider* resource_provider,
133 ResourceProvider* resource_provider, 133 const SharedQuadState* shared_quad_state,
134 const SharedQuadState* shared_quad_state) { 134 RenderPass* render_pass) {
135 ResourceProvider::ResourceId resource_id = CreateResource(resource_provider); 135 ResourceProvider::ResourceId resource_id = CreateResource(resource_provider);
136 bool premultiplied_alpha = false; 136 bool premultiplied_alpha = false;
137 bool flipped = false; 137 bool flipped = false;
138 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 138 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
139 139
140 scoped_ptr<TextureDrawQuad> overlay_quad = TextureDrawQuad::Create(); 140 TextureDrawQuad* overlay_quad =
141 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
141 overlay_quad->SetNew(shared_quad_state, 142 overlay_quad->SetNew(shared_quad_state,
142 kOverlayRect, 143 kOverlayRect,
143 kOverlayRect, 144 kOverlayRect,
144 kOverlayRect, 145 kOverlayRect,
145 resource_id, 146 resource_id,
146 premultiplied_alpha, 147 premultiplied_alpha,
147 kUVTopLeft, 148 kUVTopLeft,
148 kUVBottomRight, 149 kUVBottomRight,
149 SK_ColorTRANSPARENT, 150 SK_ColorTRANSPARENT,
150 vertex_opacity, 151 vertex_opacity,
151 flipped); 152 flipped);
152 153
153 return overlay_quad.Pass(); 154 return overlay_quad;
154 } 155 }
155 156
156 scoped_ptr<DrawQuad> CreateCheckeredQuad( 157 void CreateCheckeredQuad(ResourceProvider* resource_provider,
157 ResourceProvider* resource_provider, 158 const SharedQuadState* shared_quad_state,
158 const SharedQuadState* shared_quad_state) { 159 RenderPass* render_pass) {
159 scoped_ptr<CheckerboardDrawQuad> checkerboard_quad = 160 CheckerboardDrawQuad* checkerboard_quad =
160 CheckerboardDrawQuad::Create(); 161 render_pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>();
161 checkerboard_quad->SetNew( 162 checkerboard_quad->SetNew(
162 shared_quad_state, kOverlayRect, kOverlayRect, SkColor()); 163 shared_quad_state, kOverlayRect, kOverlayRect, SkColor());
163 return checkerboard_quad.PassAs<DrawQuad>();
164 } 164 }
165 165
166 static void CompareRenderPassLists(const RenderPassList& expected_list, 166 static void CompareRenderPassLists(const RenderPassList& expected_list,
167 const RenderPassList& actual_list) { 167 const RenderPassList& actual_list) {
168 EXPECT_EQ(expected_list.size(), actual_list.size()); 168 EXPECT_EQ(expected_list.size(), actual_list.size());
169 for (size_t i = 0; i < actual_list.size(); ++i) { 169 for (size_t i = 0; i < actual_list.size(); ++i) {
170 RenderPass* expected = expected_list[i]; 170 RenderPass* expected = expected_list[i];
171 RenderPass* actual = actual_list[i]; 171 RenderPass* actual = actual_list[i];
172 172
173 EXPECT_EQ(expected->id, actual->id); 173 EXPECT_EQ(expected->id, actual->id);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 scoped_refptr<TestContextProvider> provider_; 242 scoped_refptr<TestContextProvider> provider_;
243 scoped_ptr<OverlayOutputSurface> output_surface_; 243 scoped_ptr<OverlayOutputSurface> output_surface_;
244 FakeOutputSurfaceClient client_; 244 FakeOutputSurfaceClient client_;
245 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; 245 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
246 scoped_ptr<ResourceProvider> resource_provider_; 246 scoped_ptr<ResourceProvider> resource_provider_;
247 scoped_ptr<SingleOverlayProcessor> overlay_processor_; 247 scoped_ptr<SingleOverlayProcessor> overlay_processor_;
248 }; 248 };
249 249
250 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { 250 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) {
251 scoped_ptr<RenderPass> pass = CreateRenderPass(); 251 scoped_ptr<RenderPass> pass = CreateRenderPass();
252 scoped_ptr<TextureDrawQuad> original_quad = CreateCandidateQuad( 252 TextureDrawQuad* original_quad =
253 resource_provider_.get(), pass->shared_quad_state_list.back()); 253 CreateCandidateQuad(resource_provider_.get(),
254 pass->shared_quad_state_list.back(),
255 pass.get());
256 unsigned original_resource_id = original_quad->resource_id;
254 257
255 pass->quad_list.push_back(
256 original_quad->Copy(pass->shared_quad_state_list.back()));
257 // Add something behind it. 258 // Add something behind it.
258 pass->quad_list.push_back(CreateCheckeredQuad( 259 CreateCheckeredQuad(resource_provider_.get(),
259 resource_provider_.get(), pass->shared_quad_state_list.back())); 260 pass->shared_quad_state_list.back(),
260 pass->quad_list.push_back(CreateCheckeredQuad( 261 pass.get());
261 resource_provider_.get(), pass->shared_quad_state_list.back())); 262 CreateCheckeredQuad(resource_provider_.get(),
263 pass->shared_quad_state_list.back(),
264 pass.get());
262 265
263 RenderPassList pass_list; 266 RenderPassList pass_list;
264 pass_list.push_back(pass.Pass()); 267 pass_list.push_back(pass.Pass());
265 268
266 // Check for potential candidates. 269 // Check for potential candidates.
267 OverlayCandidateList candidate_list; 270 OverlayCandidateList candidate_list;
268 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 271 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
269 272
270 ASSERT_EQ(1U, pass_list.size()); 273 ASSERT_EQ(1U, pass_list.size());
271 ASSERT_EQ(2U, candidate_list.size()); 274 ASSERT_EQ(2U, candidate_list.size());
272 275
273 RenderPass* main_pass = pass_list.back(); 276 RenderPass* main_pass = pass_list.back();
274 // Check that the quad is gone. 277 // Check that the quad is gone.
275 EXPECT_EQ(2U, main_pass->quad_list.size()); 278 EXPECT_EQ(2U, main_pass->quad_list.size());
276 const QuadList& quad_list = main_pass->quad_list; 279 const QuadList& quad_list = main_pass->quad_list;
277 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); 280 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin();
278 it != quad_list.BackToFrontEnd(); 281 it != quad_list.BackToFrontEnd();
279 ++it) { 282 ++it) {
280 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, (*it)->material); 283 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, (*it)->material);
281 } 284 }
282 285
283 // Check that the right resource id got extracted. 286 // Check that the right resource id got extracted.
284 EXPECT_EQ(original_quad->resource_id, candidate_list.back().resource_id); 287 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id);
285 } 288 }
286 289
287 TEST_F(SingleOverlayOnTopTest, NoCandidates) { 290 TEST_F(SingleOverlayOnTopTest, NoCandidates) {
288 scoped_ptr<RenderPass> pass = CreateRenderPass(); 291 scoped_ptr<RenderPass> pass = CreateRenderPass();
289 pass->quad_list.push_back(CreateCheckeredQuad( 292 CreateCheckeredQuad(resource_provider_.get(),
290 resource_provider_.get(), pass->shared_quad_state_list.back())); 293 pass->shared_quad_state_list.back(),
291 pass->quad_list.push_back(CreateCheckeredQuad( 294 pass.get());
292 resource_provider_.get(), pass->shared_quad_state_list.back())); 295 CreateCheckeredQuad(resource_provider_.get(),
296 pass->shared_quad_state_list.back(),
297 pass.get());
293 298
294 RenderPassList pass_list; 299 RenderPassList pass_list;
295 pass_list.push_back(pass.Pass()); 300 pass_list.push_back(pass.Pass());
296 301
297 RenderPassList original_pass_list; 302 RenderPassList original_pass_list;
298 RenderPass::CopyAll(pass_list, &original_pass_list); 303 RenderPass::CopyAll(pass_list, &original_pass_list);
299 304
300 OverlayCandidateList candidate_list; 305 OverlayCandidateList candidate_list;
301 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 306 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
302 EXPECT_EQ(0U, candidate_list.size()); 307 EXPECT_EQ(0U, candidate_list.size());
303 // There should be nothing new here. 308 // There should be nothing new here.
304 CompareRenderPassLists(pass_list, original_pass_list); 309 CompareRenderPassLists(pass_list, original_pass_list);
305 } 310 }
306 311
307 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { 312 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
308 scoped_ptr<RenderPass> pass = CreateRenderPass(); 313 scoped_ptr<RenderPass> pass = CreateRenderPass();
309 pass->quad_list.push_back(CreateCheckeredQuad( 314 CreateCheckeredQuad(resource_provider_.get(),
310 resource_provider_.get(), pass->shared_quad_state_list.back())); 315 pass->shared_quad_state_list.back(),
311 pass->quad_list.push_back(CreateCheckeredQuad( 316 pass.get());
312 resource_provider_.get(), pass->shared_quad_state_list.back())); 317 CreateCheckeredQuad(resource_provider_.get(),
318 pass->shared_quad_state_list.back(),
319 pass.get());
313 320
314 pass->quad_list.push_back( 321 CreateCandidateQuad(resource_provider_.get(),
315 CreateCandidateQuad(resource_provider_.get(), 322 pass->shared_quad_state_list.back(),
316 pass->shared_quad_state_list.back()) 323 pass.get());
317 .PassAs<DrawQuad>());
318 324
319 RenderPassList pass_list; 325 RenderPassList pass_list;
320 pass_list.push_back(pass.Pass()); 326 pass_list.push_back(pass.Pass());
321 327
322 RenderPassList original_pass_list; 328 RenderPassList original_pass_list;
323 RenderPass::CopyAll(pass_list, &original_pass_list); 329 RenderPass::CopyAll(pass_list, &original_pass_list);
324 330
325 OverlayCandidateList candidate_list; 331 OverlayCandidateList candidate_list;
326 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 332 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
327 EXPECT_EQ(0U, candidate_list.size()); 333 EXPECT_EQ(0U, candidate_list.size());
328 // There should be nothing new here. 334 // There should be nothing new here.
329 CompareRenderPassLists(pass_list, original_pass_list); 335 CompareRenderPassLists(pass_list, original_pass_list);
330 } 336 }
331 337
332 // Test with multiple render passes. 338 // Test with multiple render passes.
333 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { 339 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
334 RenderPassList pass_list; 340 RenderPassList pass_list;
335 pass_list.push_back(CreateRenderPass()); 341 pass_list.push_back(CreateRenderPass());
336 342
337 scoped_ptr<RenderPass> pass = CreateRenderPass(); 343 scoped_ptr<RenderPass> pass = CreateRenderPass();
338 scoped_ptr<TextureDrawQuad> original_quad = CreateCandidateQuad( 344 CreateCandidateQuad(resource_provider_.get(),
339 resource_provider_.get(), pass->shared_quad_state_list.back()); 345 pass->shared_quad_state_list.back(),
346 pass.get());
340 347
341 pass->quad_list.push_back(
342 original_quad->Copy(pass->shared_quad_state_list.back()));
343 // Add something behind it. 348 // Add something behind it.
344 pass->quad_list.push_back(CreateCheckeredQuad( 349 CreateCheckeredQuad(resource_provider_.get(),
345 resource_provider_.get(), pass->shared_quad_state_list.back())); 350 pass->shared_quad_state_list.back(),
346 pass->quad_list.push_back(CreateCheckeredQuad( 351 pass.get());
347 resource_provider_.get(), pass->shared_quad_state_list.back())); 352 CreateCheckeredQuad(resource_provider_.get(),
353 pass->shared_quad_state_list.back(),
354 pass.get());
348 355
349 pass_list.push_back(pass.Pass()); 356 pass_list.push_back(pass.Pass());
350 357
351 RenderPassList original_pass_list; 358 RenderPassList original_pass_list;
352 RenderPass::CopyAll(pass_list, &original_pass_list); 359 RenderPass::CopyAll(pass_list, &original_pass_list);
353 360
354 // Check for potential candidates. 361 // Check for potential candidates.
355 OverlayCandidateList candidate_list; 362 OverlayCandidateList candidate_list;
356 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 363 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
357 EXPECT_EQ(2U, candidate_list.size()); 364 EXPECT_EQ(2U, candidate_list.size());
358 365
359 // This should be the same. 366 // This should be the same.
360 ASSERT_EQ(2U, pass_list.size()); 367 ASSERT_EQ(2U, pass_list.size());
361 } 368 }
362 369
363 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { 370 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) {
364 scoped_ptr<RenderPass> pass = CreateRenderPass(); 371 scoped_ptr<RenderPass> pass = CreateRenderPass();
365 scoped_ptr<TextureDrawQuad> quad = CreateCandidateQuad( 372 TextureDrawQuad* quad =
366 resource_provider_.get(), pass->shared_quad_state_list.back()); 373 CreateCandidateQuad(resource_provider_.get(),
374 pass->shared_quad_state_list.back(),
375 pass.get());
367 quad->premultiplied_alpha = true; 376 quad->premultiplied_alpha = true;
368 377
369 pass->quad_list.push_back(quad.PassAs<DrawQuad>());
370 RenderPassList pass_list; 378 RenderPassList pass_list;
371 pass_list.push_back(pass.Pass()); 379 pass_list.push_back(pass.Pass());
372 OverlayCandidateList candidate_list; 380 OverlayCandidateList candidate_list;
373 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 381 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
374 EXPECT_EQ(1U, pass_list.size()); 382 EXPECT_EQ(1U, pass_list.size());
375 EXPECT_EQ(0U, candidate_list.size()); 383 EXPECT_EQ(0U, candidate_list.size());
376 } 384 }
377 385
378 TEST_F(SingleOverlayOnTopTest, RejectBlending) { 386 TEST_F(SingleOverlayOnTopTest, RejectBlending) {
379 scoped_ptr<RenderPass> pass = CreateRenderPass(); 387 scoped_ptr<RenderPass> pass = CreateRenderPass();
380 scoped_ptr<TextureDrawQuad> quad = CreateCandidateQuad( 388 TextureDrawQuad* quad =
381 resource_provider_.get(), pass->shared_quad_state_list.back()); 389 CreateCandidateQuad(resource_provider_.get(),
390 pass->shared_quad_state_list.back(),
391 pass.get());
382 quad->needs_blending = true; 392 quad->needs_blending = true;
383 393
384 pass->quad_list.push_back(quad.PassAs<DrawQuad>());
385 RenderPassList pass_list; 394 RenderPassList pass_list;
386 pass_list.push_back(pass.Pass()); 395 pass_list.push_back(pass.Pass());
387 OverlayCandidateList candidate_list; 396 OverlayCandidateList candidate_list;
388 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 397 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
389 ASSERT_EQ(1U, pass_list.size()); 398 ASSERT_EQ(1U, pass_list.size());
390 EXPECT_EQ(0U, candidate_list.size()); 399 EXPECT_EQ(0U, candidate_list.size());
391 } 400 }
392 401
393 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { 402 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
394 scoped_ptr<RenderPass> pass = CreateRenderPass(); 403 scoped_ptr<RenderPass> pass = CreateRenderPass();
395 scoped_ptr<TextureDrawQuad> quad = CreateCandidateQuad( 404 TextureDrawQuad* quad =
396 resource_provider_.get(), pass->shared_quad_state_list.back()); 405 CreateCandidateQuad(resource_provider_.get(),
406 pass->shared_quad_state_list.back(),
407 pass.get());
397 quad->background_color = SK_ColorBLACK; 408 quad->background_color = SK_ColorBLACK;
398 409
399 pass->quad_list.push_back(quad.PassAs<DrawQuad>());
400 RenderPassList pass_list; 410 RenderPassList pass_list;
401 pass_list.push_back(pass.Pass()); 411 pass_list.push_back(pass.Pass());
402 OverlayCandidateList candidate_list; 412 OverlayCandidateList candidate_list;
403 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 413 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
404 ASSERT_EQ(1U, pass_list.size()); 414 ASSERT_EQ(1U, pass_list.size());
405 EXPECT_EQ(0U, candidate_list.size()); 415 EXPECT_EQ(0U, candidate_list.size());
406 } 416 }
407 417
408 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { 418 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
409 scoped_ptr<RenderPass> pass = CreateRenderPass(); 419 scoped_ptr<RenderPass> pass = CreateRenderPass();
410 scoped_ptr<TextureDrawQuad> quad = CreateCandidateQuad( 420 CreateCandidateQuad(resource_provider_.get(),
411 resource_provider_.get(), pass->shared_quad_state_list.back()); 421 pass->shared_quad_state_list.back(),
422 pass.get());
412 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; 423 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode;
413 424
414 pass->quad_list.push_back(quad.PassAs<DrawQuad>());
415 RenderPassList pass_list; 425 RenderPassList pass_list;
416 pass_list.push_back(pass.Pass()); 426 pass_list.push_back(pass.Pass());
417 OverlayCandidateList candidate_list; 427 OverlayCandidateList candidate_list;
418 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 428 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
419 ASSERT_EQ(1U, pass_list.size()); 429 ASSERT_EQ(1U, pass_list.size());
420 EXPECT_EQ(0U, candidate_list.size()); 430 EXPECT_EQ(0U, candidate_list.size());
421 } 431 }
422 432
423 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { 433 TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
424 scoped_ptr<RenderPass> pass = CreateRenderPass(); 434 scoped_ptr<RenderPass> pass = CreateRenderPass();
425 scoped_ptr<TextureDrawQuad> quad = CreateCandidateQuad( 435 CreateCandidateQuad(resource_provider_.get(),
426 resource_provider_.get(), pass->shared_quad_state_list.back()); 436 pass->shared_quad_state_list.back(),
437 pass.get());
427 pass->shared_quad_state_list.back()->opacity = 0.5f; 438 pass->shared_quad_state_list.back()->opacity = 0.5f;
428 439
429 pass->quad_list.push_back(quad.PassAs<DrawQuad>());
430 RenderPassList pass_list; 440 RenderPassList pass_list;
431 pass_list.push_back(pass.Pass()); 441 pass_list.push_back(pass.Pass());
432 OverlayCandidateList candidate_list; 442 OverlayCandidateList candidate_list;
433 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 443 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
434 ASSERT_EQ(1U, pass_list.size()); 444 ASSERT_EQ(1U, pass_list.size());
435 EXPECT_EQ(0U, candidate_list.size()); 445 EXPECT_EQ(0U, candidate_list.size());
436 } 446 }
437 447
438 TEST_F(SingleOverlayOnTopTest, RejectTransform) { 448 TEST_F(SingleOverlayOnTopTest, RejectTransform) {
439 scoped_ptr<RenderPass> pass = CreateRenderPass(); 449 scoped_ptr<RenderPass> pass = CreateRenderPass();
440 scoped_ptr<TextureDrawQuad> quad = CreateCandidateQuad( 450 CreateCandidateQuad(resource_provider_.get(),
441 resource_provider_.get(), pass->shared_quad_state_list.back()); 451 pass->shared_quad_state_list.back(),
452 pass.get());
442 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(2.f, 453 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(2.f,
443 2.f); 454 2.f);
444 455
445 pass->quad_list.push_back(quad.PassAs<DrawQuad>());
446 RenderPassList pass_list; 456 RenderPassList pass_list;
447 pass_list.push_back(pass.Pass()); 457 pass_list.push_back(pass.Pass());
448 OverlayCandidateList candidate_list; 458 OverlayCandidateList candidate_list;
449 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 459 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
450 ASSERT_EQ(1U, pass_list.size()); 460 ASSERT_EQ(1U, pass_list.size());
451 EXPECT_EQ(0U, candidate_list.size()); 461 EXPECT_EQ(0U, candidate_list.size());
452 } 462 }
453 463
454 class OverlayInfoRendererGL : public GLRenderer { 464 class OverlayInfoRendererGL : public GLRenderer {
455 public: 465 public:
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 }; 552 };
543 553
544 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { 554 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) {
545 bool use_validator = true; 555 bool use_validator = true;
546 Init(use_validator); 556 Init(use_validator);
547 renderer_->set_expect_overlays(true); 557 renderer_->set_expect_overlays(true);
548 gfx::Rect viewport_rect(16, 16); 558 gfx::Rect viewport_rect(16, 16);
549 559
550 scoped_ptr<RenderPass> pass = CreateRenderPass(); 560 scoped_ptr<RenderPass> pass = CreateRenderPass();
551 561
552 pass->quad_list.push_back( 562 CreateCandidateQuad(resource_provider_.get(),
553 CreateCandidateQuad(resource_provider_.get(), 563 pass->shared_quad_state_list.back(),
554 pass->shared_quad_state_list.back()) 564 pass.get());
555 .PassAs<DrawQuad>());
556 565
557 pass->quad_list.push_back(CreateCheckeredQuad( 566 CreateCheckeredQuad(resource_provider_.get(),
558 resource_provider_.get(), pass->shared_quad_state_list.back())); 567 pass->shared_quad_state_list.back(),
559 pass->quad_list.push_back(CreateCheckeredQuad( 568 pass.get());
560 resource_provider_.get(), pass->shared_quad_state_list.back())); 569 CreateCheckeredQuad(resource_provider_.get(),
570 pass->shared_quad_state_list.back(),
571 pass.get());
561 572
562 RenderPassList pass_list; 573 RenderPassList pass_list;
563 pass_list.push_back(pass.Pass()); 574 pass_list.push_back(pass.Pass());
564 575
565 // Candidate pass was taken out and extra skipped pass added, 576 // Candidate pass was taken out and extra skipped pass added,
566 // so only draw 2 quads. 577 // so only draw 2 quads.
567 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(2); 578 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(2);
568 EXPECT_CALL(scheduler_, 579 EXPECT_CALL(scheduler_,
569 Schedule(1, 580 Schedule(1,
570 gfx::OVERLAY_TRANSFORM_NONE, 581 gfx::OVERLAY_TRANSFORM_NONE,
571 _, 582 _,
572 kOverlayRect, 583 kOverlayRect,
573 BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1); 584 BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1);
574 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 585 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
575 586
576 SwapBuffers(); 587 SwapBuffers();
577 588
578 Mock::VerifyAndClearExpectations(renderer_.get()); 589 Mock::VerifyAndClearExpectations(renderer_.get());
579 Mock::VerifyAndClearExpectations(&scheduler_); 590 Mock::VerifyAndClearExpectations(&scheduler_);
580 } 591 }
581 592
582 TEST_F(GLRendererWithOverlaysTest, OccludedQuadDrawn) { 593 TEST_F(GLRendererWithOverlaysTest, OccludedQuadDrawn) {
583 bool use_validator = true; 594 bool use_validator = true;
584 Init(use_validator); 595 Init(use_validator);
585 renderer_->set_expect_overlays(false); 596 renderer_->set_expect_overlays(false);
586 gfx::Rect viewport_rect(16, 16); 597 gfx::Rect viewport_rect(16, 16);
587 598
588 scoped_ptr<RenderPass> pass = CreateRenderPass(); 599 scoped_ptr<RenderPass> pass = CreateRenderPass();
589 600
590 pass->quad_list.push_back(CreateCheckeredQuad( 601 CreateCheckeredQuad(resource_provider_.get(),
591 resource_provider_.get(), pass->shared_quad_state_list.back())); 602 pass->shared_quad_state_list.back(),
592 pass->quad_list.push_back(CreateCheckeredQuad( 603 pass.get());
593 resource_provider_.get(), pass->shared_quad_state_list.back())); 604 CreateCheckeredQuad(resource_provider_.get(),
605 pass->shared_quad_state_list.back(),
606 pass.get());
594 607
595 pass->quad_list.push_back( 608 CreateCandidateQuad(resource_provider_.get(),
596 CreateCandidateQuad(resource_provider_.get(), 609 pass->shared_quad_state_list.back(),
597 pass->shared_quad_state_list.back()) 610 pass.get());
598 .PassAs<DrawQuad>());
599 611
600 RenderPassList pass_list; 612 RenderPassList pass_list;
601 pass_list.push_back(pass.Pass()); 613 pass_list.push_back(pass.Pass());
602 614
603 // 3 quads in the pass, all should draw. 615 // 3 quads in the pass, all should draw.
604 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(3); 616 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(3);
605 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 617 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
606 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 618 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
607 619
608 SwapBuffers(); 620 SwapBuffers();
609 621
610 Mock::VerifyAndClearExpectations(renderer_.get()); 622 Mock::VerifyAndClearExpectations(renderer_.get());
611 Mock::VerifyAndClearExpectations(&scheduler_); 623 Mock::VerifyAndClearExpectations(&scheduler_);
612 } 624 }
613 625
614 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) { 626 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) {
615 bool use_validator = false; 627 bool use_validator = false;
616 Init(use_validator); 628 Init(use_validator);
617 renderer_->set_expect_overlays(false); 629 renderer_->set_expect_overlays(false);
618 gfx::Rect viewport_rect(16, 16); 630 gfx::Rect viewport_rect(16, 16);
619 631
620 scoped_ptr<RenderPass> pass = CreateRenderPass(); 632 scoped_ptr<RenderPass> pass = CreateRenderPass();
621 633
622 pass->quad_list.push_back( 634 CreateCandidateQuad(resource_provider_.get(),
623 CreateCandidateQuad(resource_provider_.get(), 635 pass->shared_quad_state_list.back(),
624 pass->shared_quad_state_list.back()) 636 pass.get());
625 .PassAs<DrawQuad>());
626 637
627 pass->quad_list.push_back(CreateCheckeredQuad( 638 CreateCheckeredQuad(resource_provider_.get(),
628 resource_provider_.get(), pass->shared_quad_state_list.back())); 639 pass->shared_quad_state_list.back(),
629 pass->quad_list.push_back(CreateCheckeredQuad( 640 pass.get());
630 resource_provider_.get(), pass->shared_quad_state_list.back())); 641 CreateCheckeredQuad(resource_provider_.get(),
642 pass->shared_quad_state_list.back(),
643 pass.get());
631 644
632 RenderPassList pass_list; 645 RenderPassList pass_list;
633 pass_list.push_back(pass.Pass()); 646 pass_list.push_back(pass.Pass());
634 647
635 // Should see no overlays. 648 // Should see no overlays.
636 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(3); 649 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(3);
637 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 650 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
638 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 651 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
639 652
640 SwapBuffers(); 653 SwapBuffers();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 renderer_->set_expect_overlays(false); 731 renderer_->set_expect_overlays(false);
719 renderer_->FinishDrawingFrame(&frame3); 732 renderer_->FinishDrawingFrame(&frame3);
720 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 733 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
721 SwapBuffers(); 734 SwapBuffers();
722 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 735 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
723 Mock::VerifyAndClearExpectations(&scheduler_); 736 Mock::VerifyAndClearExpectations(&scheduler_);
724 } 737 }
725 738
726 } // namespace 739 } // namespace
727 } // namespace cc 740 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/delegated_frame_provider_unittest.cc ('k') | cc/output/renderer_pixeltest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698