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

Side by Side Diff: cc/surfaces/display_unittest.cc

Issue 2905523003: Revert of Enforce constant size and device scale factor for surfaces (Closed)
Patch Set: Created 3 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
« no previous file with comments | « cc/surfaces/direct_compositor_frame_sink_unittest.cc ('k') | cc/surfaces/surface.h » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/surfaces/display.h" 5 #include "cc/surfaces/display.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/test/null_task_runner.h" 10 #include "base/test/null_task_runner.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 EXPECT_FALSE(scheduler_->swapped); 200 EXPECT_FALSE(scheduler_->swapped);
201 EXPECT_EQ(0u, output_surface_->num_sent_frames()); 201 EXPECT_EQ(0u, output_surface_->num_sent_frames());
202 EXPECT_EQ(gfx::ColorSpace(), output_surface_->last_reshape_color_space()); 202 EXPECT_EQ(gfx::ColorSpace(), output_surface_->last_reshape_color_space());
203 display_->DrawAndSwap(); 203 display_->DrawAndSwap();
204 EXPECT_EQ(color_space_1, output_surface_->last_reshape_color_space()); 204 EXPECT_EQ(color_space_1, output_surface_->last_reshape_color_space());
205 EXPECT_TRUE(scheduler_->swapped); 205 EXPECT_TRUE(scheduler_->swapped);
206 EXPECT_EQ(1u, output_surface_->num_sent_frames()); 206 EXPECT_EQ(1u, output_surface_->num_sent_frames());
207 EXPECT_EQ(gfx::Size(100, 100), 207 EXPECT_EQ(gfx::Size(100, 100),
208 software_output_device_->viewport_pixel_size()); 208 software_output_device_->viewport_pixel_size());
209 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), software_output_device_->damage_rect()); 209 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), software_output_device_->damage_rect());
210
210 { 211 {
211 // Only damaged portion should be swapped. 212 // Only damaged portion should be swapped.
212 pass = RenderPass::Create(); 213 pass = RenderPass::Create();
213 pass->output_rect = gfx::Rect(0, 0, 100, 100); 214 pass->output_rect = gfx::Rect(0, 0, 100, 100);
214 pass->damage_rect = gfx::Rect(10, 10, 1, 1); 215 pass->damage_rect = gfx::Rect(10, 10, 1, 1);
215 pass->id = 1; 216 pass->id = 1;
216 217
217 pass_list.push_back(std::move(pass)); 218 pass_list.push_back(std::move(pass));
218 scheduler_->ResetDamageForTest(); 219 scheduler_->ResetDamageForTest();
219 SubmitCompositorFrame(&pass_list, local_surface_id); 220 SubmitCompositorFrame(&pass_list, local_surface_id);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 EXPECT_EQ(2u, output_surface_->num_sent_frames()); 254 EXPECT_EQ(2u, output_surface_->num_sent_frames());
254 } 255 }
255 256
256 { 257 {
257 // Pass is wrong size so shouldn't be swapped. 258 // Pass is wrong size so shouldn't be swapped.
258 pass = RenderPass::Create(); 259 pass = RenderPass::Create();
259 pass->output_rect = gfx::Rect(0, 0, 99, 99); 260 pass->output_rect = gfx::Rect(0, 0, 99, 99);
260 pass->damage_rect = gfx::Rect(10, 10, 10, 10); 261 pass->damage_rect = gfx::Rect(10, 10, 10, 10);
261 pass->id = 1; 262 pass->id = 1;
262 263
263 local_surface_id = id_allocator_.GenerateId();
264 display_->SetLocalSurfaceId(local_surface_id, 1.f);
265
266 pass_list.push_back(std::move(pass)); 264 pass_list.push_back(std::move(pass));
267 scheduler_->ResetDamageForTest(); 265 scheduler_->ResetDamageForTest();
268 SubmitCompositorFrame(&pass_list, local_surface_id); 266 SubmitCompositorFrame(&pass_list, local_surface_id);
269 EXPECT_TRUE(scheduler_->damaged); 267 EXPECT_TRUE(scheduler_->damaged);
270 EXPECT_FALSE(scheduler_->display_resized_); 268 EXPECT_FALSE(scheduler_->display_resized_);
271 EXPECT_FALSE(scheduler_->has_new_root_surface); 269 EXPECT_FALSE(scheduler_->has_new_root_surface);
272 270
273 scheduler_->swapped = false; 271 scheduler_->swapped = false;
274 display_->DrawAndSwap(); 272 display_->DrawAndSwap();
275 EXPECT_TRUE(scheduler_->swapped); 273 EXPECT_TRUE(scheduler_->swapped);
276 EXPECT_EQ(2u, output_surface_->num_sent_frames()); 274 EXPECT_EQ(2u, output_surface_->num_sent_frames());
277 } 275 }
278 276
279 { 277 {
280 // Previous frame wasn't swapped, so next swap should have full damage. 278 // Previous frame wasn't swapped, so next swap should have full damage.
281 pass = RenderPass::Create(); 279 pass = RenderPass::Create();
282 pass->output_rect = gfx::Rect(0, 0, 100, 100); 280 pass->output_rect = gfx::Rect(0, 0, 100, 100);
283 pass->damage_rect = gfx::Rect(10, 10, 0, 0); 281 pass->damage_rect = gfx::Rect(10, 10, 0, 0);
284 pass->id = 1; 282 pass->id = 1;
285 283
286 local_surface_id = id_allocator_.GenerateId();
287 display_->SetLocalSurfaceId(local_surface_id, 1.f);
288
289 pass_list.push_back(std::move(pass)); 284 pass_list.push_back(std::move(pass));
290 scheduler_->ResetDamageForTest(); 285 scheduler_->ResetDamageForTest();
291 SubmitCompositorFrame(&pass_list, local_surface_id); 286 SubmitCompositorFrame(&pass_list, local_surface_id);
292 EXPECT_TRUE(scheduler_->damaged); 287 EXPECT_TRUE(scheduler_->damaged);
293 EXPECT_FALSE(scheduler_->display_resized_); 288 EXPECT_FALSE(scheduler_->display_resized_);
294 EXPECT_FALSE(scheduler_->has_new_root_surface); 289 EXPECT_FALSE(scheduler_->has_new_root_surface);
295 290
296 scheduler_->swapped = false; 291 scheduler_->swapped = false;
297 display_->DrawAndSwap(); 292 display_->DrawAndSwap();
298 EXPECT_TRUE(scheduler_->swapped); 293 EXPECT_TRUE(scheduler_->swapped);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 EXPECT_FALSE(scheduler_->has_new_root_surface); 341 EXPECT_FALSE(scheduler_->has_new_root_surface);
347 342
348 scheduler_->swapped = false; 343 scheduler_->swapped = false;
349 display_->DrawAndSwap(); 344 display_->DrawAndSwap();
350 EXPECT_TRUE(scheduler_->swapped); 345 EXPECT_TRUE(scheduler_->swapped);
351 EXPECT_EQ(4u, output_surface_->num_sent_frames()); 346 EXPECT_EQ(4u, output_surface_->num_sent_frames());
352 } 347 }
353 348
354 // Resize should cause a swap if no frame was swapped at the previous size. 349 // Resize should cause a swap if no frame was swapped at the previous size.
355 { 350 {
356 local_surface_id = id_allocator_.GenerateId();
357 display_->SetLocalSurfaceId(local_surface_id, 1.f);
358 scheduler_->swapped = false; 351 scheduler_->swapped = false;
359 display_->Resize(gfx::Size(200, 200)); 352 display_->Resize(gfx::Size(200, 200));
360 EXPECT_FALSE(scheduler_->swapped); 353 EXPECT_FALSE(scheduler_->swapped);
361 EXPECT_EQ(4u, output_surface_->num_sent_frames()); 354 EXPECT_EQ(4u, output_surface_->num_sent_frames());
362 355
363 pass = RenderPass::Create(); 356 pass = RenderPass::Create();
364 pass->output_rect = gfx::Rect(0, 0, 200, 200); 357 pass->output_rect = gfx::Rect(0, 0, 200, 200);
365 pass->damage_rect = gfx::Rect(10, 10, 10, 10); 358 pass->damage_rect = gfx::Rect(10, 10, 10, 10);
366 pass->id = 1; 359 pass->id = 1;
367 360
(...skipping 11 matching lines...) Expand all
379 scheduler_->swapped = false; 372 scheduler_->swapped = false;
380 display_->Resize(gfx::Size(100, 100)); 373 display_->Resize(gfx::Size(100, 100));
381 EXPECT_TRUE(scheduler_->swapped); 374 EXPECT_TRUE(scheduler_->swapped);
382 EXPECT_EQ(5u, output_surface_->num_sent_frames()); 375 EXPECT_EQ(5u, output_surface_->num_sent_frames());
383 376
384 // Latency info from previous frame should be sent now. 377 // Latency info from previous frame should be sent now.
385 EXPECT_EQ(1u, output_surface_->last_sent_frame()->latency_info.size()); 378 EXPECT_EQ(1u, output_surface_->last_sent_frame()->latency_info.size());
386 } 379 }
387 380
388 { 381 {
389 local_surface_id = id_allocator_.GenerateId();
390 display_->SetLocalSurfaceId(local_surface_id, 1.0f);
391 // Surface that's damaged completely should be resized and swapped. 382 // Surface that's damaged completely should be resized and swapped.
392 pass = RenderPass::Create(); 383 pass = RenderPass::Create();
393 pass->output_rect = gfx::Rect(0, 0, 99, 99); 384 pass->output_rect = gfx::Rect(0, 0, 99, 99);
394 pass->damage_rect = gfx::Rect(0, 0, 99, 99); 385 pass->damage_rect = gfx::Rect(0, 0, 99, 99);
395 pass->id = 1; 386 pass->id = 1;
396 387
397 pass_list.push_back(std::move(pass)); 388 pass_list.push_back(std::move(pass));
398 scheduler_->ResetDamageForTest(); 389 scheduler_->ResetDamageForTest();
399 SubmitCompositorFrame(&pass_list, local_surface_id); 390 SubmitCompositorFrame(&pass_list, local_surface_id);
400 EXPECT_TRUE(scheduler_->damaged); 391 EXPECT_TRUE(scheduler_->damaged);
(...skipping 11 matching lines...) Expand all
412 EXPECT_EQ(0u, output_surface_->last_sent_frame()->latency_info.size()); 403 EXPECT_EQ(0u, output_surface_->last_sent_frame()->latency_info.size());
413 } 404 }
414 } 405 }
415 406
416 class MockedContext : public TestWebGraphicsContext3D { 407 class MockedContext : public TestWebGraphicsContext3D {
417 public: 408 public:
418 MOCK_METHOD0(shallowFinishCHROMIUM, void()); 409 MOCK_METHOD0(shallowFinishCHROMIUM, void());
419 }; 410 };
420 411
421 TEST_F(DisplayTest, Finish) { 412 TEST_F(DisplayTest, Finish) {
422 LocalSurfaceId local_surface_id1(id_allocator_.GenerateId()); 413 LocalSurfaceId local_surface_id(id_allocator_.GenerateId());
423 LocalSurfaceId local_surface_id2(id_allocator_.GenerateId());
424 414
425 RendererSettings settings; 415 RendererSettings settings;
426 settings.partial_swap_enabled = true; 416 settings.partial_swap_enabled = true;
427 settings.finish_rendering_on_resize = true; 417 settings.finish_rendering_on_resize = true;
428 418
429 std::unique_ptr<MockedContext> context(new MockedContext()); 419 std::unique_ptr<MockedContext> context(new MockedContext());
430 MockedContext* context_ptr = context.get(); 420 MockedContext* context_ptr = context.get();
431 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); 421 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0);
432 422
433 SetUpDisplay(settings, std::move(context)); 423 SetUpDisplay(settings, std::move(context));
434 424
435 StubDisplayClient client; 425 StubDisplayClient client;
436 display_->Initialize(&client, &manager_); 426 display_->Initialize(&client, &manager_);
437 427
438 display_->SetLocalSurfaceId(local_surface_id1, 1.f); 428 display_->SetLocalSurfaceId(local_surface_id, 1.f);
439 429
440 display_->Resize(gfx::Size(100, 100)); 430 display_->Resize(gfx::Size(100, 100));
441 431
442 { 432 {
443 RenderPassList pass_list; 433 RenderPassList pass_list;
444 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 434 std::unique_ptr<RenderPass> pass = RenderPass::Create();
445 pass->output_rect = gfx::Rect(0, 0, 100, 100); 435 pass->output_rect = gfx::Rect(0, 0, 100, 100);
446 pass->damage_rect = gfx::Rect(10, 10, 1, 1); 436 pass->damage_rect = gfx::Rect(10, 10, 1, 1);
447 pass->id = 1; 437 pass->id = 1;
448 pass_list.push_back(std::move(pass)); 438 pass_list.push_back(std::move(pass));
449 439
450 SubmitCompositorFrame(&pass_list, local_surface_id1); 440 SubmitCompositorFrame(&pass_list, local_surface_id);
451 } 441 }
452 442
453 display_->DrawAndSwap(); 443 display_->DrawAndSwap();
454 444
455 // First resize and draw shouldn't finish. 445 // First resize and draw shouldn't finish.
456 testing::Mock::VerifyAndClearExpectations(context_ptr); 446 testing::Mock::VerifyAndClearExpectations(context_ptr);
457 447
458 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); 448 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM());
459 display_->Resize(gfx::Size(150, 150)); 449 display_->Resize(gfx::Size(150, 150));
460 testing::Mock::VerifyAndClearExpectations(context_ptr); 450 testing::Mock::VerifyAndClearExpectations(context_ptr);
461 451
462 // Another resize without a swap doesn't need to finish. 452 // Another resize without a swap doesn't need to finish.
463 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); 453 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0);
464 display_->SetLocalSurfaceId(local_surface_id2, 1.f);
465 display_->Resize(gfx::Size(200, 200)); 454 display_->Resize(gfx::Size(200, 200));
466 testing::Mock::VerifyAndClearExpectations(context_ptr); 455 testing::Mock::VerifyAndClearExpectations(context_ptr);
467 456
468 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); 457 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0);
469 { 458 {
470 RenderPassList pass_list; 459 RenderPassList pass_list;
471 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 460 std::unique_ptr<RenderPass> pass = RenderPass::Create();
472 pass->output_rect = gfx::Rect(0, 0, 200, 200); 461 pass->output_rect = gfx::Rect(0, 0, 200, 200);
473 pass->damage_rect = gfx::Rect(10, 10, 1, 1); 462 pass->damage_rect = gfx::Rect(10, 10, 1, 1);
474 pass->id = 1; 463 pass->id = 1;
475 pass_list.push_back(std::move(pass)); 464 pass_list.push_back(std::move(pass));
476 465
477 SubmitCompositorFrame(&pass_list, local_surface_id2); 466 SubmitCompositorFrame(&pass_list, local_surface_id);
478 } 467 }
479 468
480 display_->DrawAndSwap(); 469 display_->DrawAndSwap();
481 470
482 testing::Mock::VerifyAndClearExpectations(context_ptr); 471 testing::Mock::VerifyAndClearExpectations(context_ptr);
483 472
484 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); 473 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM());
485 display_->Resize(gfx::Size(250, 250)); 474 display_->Resize(gfx::Size(250, 250));
486 testing::Mock::VerifyAndClearExpectations(context_ptr); 475 testing::Mock::VerifyAndClearExpectations(context_ptr);
487 } 476 }
(...skipping 19 matching lines...) Expand all
507 // Verify DidLoseOutputSurface callback is hooked up correctly. 496 // Verify DidLoseOutputSurface callback is hooked up correctly.
508 EXPECT_EQ(0, client.loss_count()); 497 EXPECT_EQ(0, client.loss_count());
509 output_surface_->context_provider()->ContextGL()->LoseContextCHROMIUM( 498 output_surface_->context_provider()->ContextGL()->LoseContextCHROMIUM(
510 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); 499 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB);
511 output_surface_->context_provider()->ContextGL()->Flush(); 500 output_surface_->context_provider()->ContextGL()->Flush();
512 EXPECT_EQ(1, client.loss_count()); 501 EXPECT_EQ(1, client.loss_count());
513 } 502 }
514 503
515 } // namespace 504 } // namespace
516 } // namespace cc 505 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/direct_compositor_frame_sink_unittest.cc ('k') | cc/surfaces/surface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698