OLD | NEW |
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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 #include "ui/ozone/platform/drm/gpu/crtc_controller.h" | 6 #include "ui/ozone/platform/drm/gpu/crtc_controller.h" |
7 #include "ui/ozone/platform/drm/gpu/drm_device_generator.h" | 7 #include "ui/ozone/platform/drm/gpu/drm_device_generator.h" |
8 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h" | 8 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h" |
9 #include "ui/ozone/platform/drm/gpu/drm_window.h" | 9 #include "ui/ozone/platform/drm/gpu/drm_window.h" |
10 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h" | 10 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h" |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 EXPECT_NE(controller1, controller2); | 368 EXPECT_NE(controller1, controller2); |
369 EXPECT_EQ(drm_, controller1->crtc_controllers()[0]->drm()); | 369 EXPECT_EQ(drm_, controller1->crtc_controllers()[0]->drm()); |
370 EXPECT_EQ(drm2, controller2->crtc_controllers()[0]->drm()); | 370 EXPECT_EQ(drm2, controller2->crtc_controllers()[0]->drm()); |
371 } | 371 } |
372 | 372 |
373 TEST_F(ScreenManagerTest, CheckControllerToWindowMappingWithSameBounds) { | 373 TEST_F(ScreenManagerTest, CheckControllerToWindowMappingWithSameBounds) { |
374 scoped_ptr<ui::DrmWindow> window( | 374 scoped_ptr<ui::DrmWindow> window( |
375 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); | 375 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); |
376 window->Initialize(); | 376 window->Initialize(); |
377 window->SetBounds(GetPrimaryBounds()); | 377 window->SetBounds(GetPrimaryBounds()); |
378 screen_manager_->AddWindow(1, window.Pass()); | 378 screen_manager_->AddWindow(1, std::move(window)); |
379 | 379 |
380 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); | 380 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
381 screen_manager_->ConfigureDisplayController( | 381 screen_manager_->ConfigureDisplayController( |
382 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 382 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
383 kDefaultMode); | 383 kDefaultMode); |
384 | 384 |
385 EXPECT_TRUE(screen_manager_->GetWindow(1)->GetController()); | 385 EXPECT_TRUE(screen_manager_->GetWindow(1)->GetController()); |
386 | 386 |
387 window = screen_manager_->RemoveWindow(1); | 387 window = screen_manager_->RemoveWindow(1); |
388 window->Shutdown(); | 388 window->Shutdown(); |
389 } | 389 } |
390 | 390 |
391 TEST_F(ScreenManagerTest, CheckControllerToWindowMappingWithDifferentBounds) { | 391 TEST_F(ScreenManagerTest, CheckControllerToWindowMappingWithDifferentBounds) { |
392 scoped_ptr<ui::DrmWindow> window( | 392 scoped_ptr<ui::DrmWindow> window( |
393 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); | 393 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); |
394 window->Initialize(); | 394 window->Initialize(); |
395 gfx::Rect new_bounds = GetPrimaryBounds(); | 395 gfx::Rect new_bounds = GetPrimaryBounds(); |
396 new_bounds.Inset(0, 0, 1, 1); | 396 new_bounds.Inset(0, 0, 1, 1); |
397 window->SetBounds(new_bounds); | 397 window->SetBounds(new_bounds); |
398 screen_manager_->AddWindow(1, window.Pass()); | 398 screen_manager_->AddWindow(1, std::move(window)); |
399 | 399 |
400 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); | 400 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
401 screen_manager_->ConfigureDisplayController( | 401 screen_manager_->ConfigureDisplayController( |
402 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 402 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
403 kDefaultMode); | 403 kDefaultMode); |
404 | 404 |
405 EXPECT_FALSE(screen_manager_->GetWindow(1)->GetController()); | 405 EXPECT_FALSE(screen_manager_->GetWindow(1)->GetController()); |
406 | 406 |
407 window = screen_manager_->RemoveWindow(1); | 407 window = screen_manager_->RemoveWindow(1); |
408 window->Shutdown(); | 408 window->Shutdown(); |
409 } | 409 } |
410 | 410 |
411 TEST_F(ScreenManagerTest, | 411 TEST_F(ScreenManagerTest, |
412 CheckControllerToWindowMappingWithOverlappingWindows) { | 412 CheckControllerToWindowMappingWithOverlappingWindows) { |
413 const size_t kWindowCount = 2; | 413 const size_t kWindowCount = 2; |
414 for (size_t i = 1; i < kWindowCount + 1; ++i) { | 414 for (size_t i = 1; i < kWindowCount + 1; ++i) { |
415 scoped_ptr<ui::DrmWindow> window( | 415 scoped_ptr<ui::DrmWindow> window( |
416 new ui::DrmWindow(i, device_manager_.get(), screen_manager_.get())); | 416 new ui::DrmWindow(i, device_manager_.get(), screen_manager_.get())); |
417 window->Initialize(); | 417 window->Initialize(); |
418 window->SetBounds(GetPrimaryBounds()); | 418 window->SetBounds(GetPrimaryBounds()); |
419 screen_manager_->AddWindow(i, window.Pass()); | 419 screen_manager_->AddWindow(i, std::move(window)); |
420 } | 420 } |
421 | 421 |
422 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); | 422 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
423 screen_manager_->ConfigureDisplayController( | 423 screen_manager_->ConfigureDisplayController( |
424 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 424 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
425 kDefaultMode); | 425 kDefaultMode); |
426 | 426 |
427 bool window1_has_controller = screen_manager_->GetWindow(1)->GetController(); | 427 bool window1_has_controller = screen_manager_->GetWindow(1)->GetController(); |
428 bool window2_has_controller = screen_manager_->GetWindow(2)->GetController(); | 428 bool window2_has_controller = screen_manager_->GetWindow(2)->GetController(); |
429 // Only one of the windows can have a controller. | 429 // Only one of the windows can have a controller. |
430 EXPECT_TRUE(window1_has_controller ^ window2_has_controller); | 430 EXPECT_TRUE(window1_has_controller ^ window2_has_controller); |
431 | 431 |
432 for (size_t i = 1; i < kWindowCount + 1; ++i) { | 432 for (size_t i = 1; i < kWindowCount + 1; ++i) { |
433 scoped_ptr<ui::DrmWindow> window = screen_manager_->RemoveWindow(i); | 433 scoped_ptr<ui::DrmWindow> window = screen_manager_->RemoveWindow(i); |
434 window->Shutdown(); | 434 window->Shutdown(); |
435 } | 435 } |
436 } | 436 } |
437 | 437 |
438 TEST_F(ScreenManagerTest, ShouldDissociateWindowOnControllerRemoval) { | 438 TEST_F(ScreenManagerTest, ShouldDissociateWindowOnControllerRemoval) { |
439 gfx::AcceleratedWidget window_id = 1; | 439 gfx::AcceleratedWidget window_id = 1; |
440 scoped_ptr<ui::DrmWindow> window(new ui::DrmWindow( | 440 scoped_ptr<ui::DrmWindow> window(new ui::DrmWindow( |
441 window_id, device_manager_.get(), screen_manager_.get())); | 441 window_id, device_manager_.get(), screen_manager_.get())); |
442 window->Initialize(); | 442 window->Initialize(); |
443 window->SetBounds(GetPrimaryBounds()); | 443 window->SetBounds(GetPrimaryBounds()); |
444 screen_manager_->AddWindow(window_id, window.Pass()); | 444 screen_manager_->AddWindow(window_id, std::move(window)); |
445 | 445 |
446 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); | 446 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
447 screen_manager_->ConfigureDisplayController( | 447 screen_manager_->ConfigureDisplayController( |
448 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 448 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
449 kDefaultMode); | 449 kDefaultMode); |
450 | 450 |
451 EXPECT_TRUE(screen_manager_->GetWindow(window_id)->GetController()); | 451 EXPECT_TRUE(screen_manager_->GetWindow(window_id)->GetController()); |
452 | 452 |
453 screen_manager_->RemoveDisplayController(drm_, kPrimaryCrtc); | 453 screen_manager_->RemoveDisplayController(drm_, kPrimaryCrtc); |
454 | 454 |
455 EXPECT_FALSE(screen_manager_->GetWindow(window_id)->GetController()); | 455 EXPECT_FALSE(screen_manager_->GetWindow(window_id)->GetController()); |
456 | 456 |
457 window = screen_manager_->RemoveWindow(1); | 457 window = screen_manager_->RemoveWindow(1); |
458 window->Shutdown(); | 458 window->Shutdown(); |
459 } | 459 } |
460 | 460 |
461 TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasNoBuffer) { | 461 TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasNoBuffer) { |
462 scoped_ptr<ui::DrmWindow> window( | 462 scoped_ptr<ui::DrmWindow> window( |
463 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); | 463 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); |
464 window->Initialize(); | 464 window->Initialize(); |
465 window->SetBounds(GetPrimaryBounds()); | 465 window->SetBounds(GetPrimaryBounds()); |
466 screen_manager_->AddWindow(1, window.Pass()); | 466 screen_manager_->AddWindow(1, std::move(window)); |
467 | 467 |
468 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); | 468 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
469 screen_manager_->ConfigureDisplayController( | 469 screen_manager_->ConfigureDisplayController( |
470 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 470 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
471 kDefaultMode); | 471 kDefaultMode); |
472 | 472 |
473 EXPECT_TRUE(screen_manager_->GetWindow(1)->GetController()); | 473 EXPECT_TRUE(screen_manager_->GetWindow(1)->GetController()); |
474 // There is a buffer after initial config. | 474 // There is a buffer after initial config. |
475 uint32_t framebuffer = drm_->current_framebuffer(); | 475 uint32_t framebuffer = drm_->current_framebuffer(); |
476 EXPECT_NE(0U, framebuffer); | 476 EXPECT_NE(0U, framebuffer); |
(...skipping 13 matching lines...) Expand all Loading... |
490 TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasBuffer) { | 490 TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasBuffer) { |
491 scoped_ptr<ui::DrmWindow> window( | 491 scoped_ptr<ui::DrmWindow> window( |
492 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); | 492 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); |
493 window->Initialize(); | 493 window->Initialize(); |
494 window->SetBounds(GetPrimaryBounds()); | 494 window->SetBounds(GetPrimaryBounds()); |
495 scoped_refptr<ui::ScanoutBuffer> buffer = buffer_generator_->Create( | 495 scoped_refptr<ui::ScanoutBuffer> buffer = buffer_generator_->Create( |
496 drm_, gfx::BufferFormat::BGRA_8888, GetPrimaryBounds().size()); | 496 drm_, gfx::BufferFormat::BGRA_8888, GetPrimaryBounds().size()); |
497 window->SchedulePageFlip( | 497 window->SchedulePageFlip( |
498 std::vector<ui::OverlayPlane>(1, ui::OverlayPlane(buffer)), | 498 std::vector<ui::OverlayPlane>(1, ui::OverlayPlane(buffer)), |
499 base::Bind(&EmptySwapCallback)); | 499 base::Bind(&EmptySwapCallback)); |
500 screen_manager_->AddWindow(1, window.Pass()); | 500 screen_manager_->AddWindow(1, std::move(window)); |
501 | 501 |
502 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); | 502 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
503 screen_manager_->ConfigureDisplayController( | 503 screen_manager_->ConfigureDisplayController( |
504 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 504 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
505 kDefaultMode); | 505 kDefaultMode); |
506 | 506 |
507 EXPECT_EQ(buffer->GetFramebufferId(), drm_->current_framebuffer()); | 507 EXPECT_EQ(buffer->GetFramebufferId(), drm_->current_framebuffer()); |
508 | 508 |
509 window = screen_manager_->RemoveWindow(1); | 509 window = screen_manager_->RemoveWindow(1); |
510 window->Shutdown(); | 510 window->Shutdown(); |
511 } | 511 } |
OLD | NEW |