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

Side by Side Diff: ui/ozone/platform/drm/gpu/screen_manager_unittest.cc

Issue 2948513003: Revert of ozone/drm: Only reuse ScanoutBuffers with compatible modifiers (Closed)
Patch Set: Created 3 years, 6 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 | « ui/ozone/platform/drm/gpu/screen_manager.cc ('k') | no next file » | 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 <drm_fourcc.h> 5 #include <drm_fourcc.h>
6 #include <stddef.h> 6 #include <stddef.h>
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "ui/ozone/platform/drm/gpu/crtc_controller.h" 13 #include "ui/ozone/platform/drm/gpu/crtc_controller.h"
14 #include "ui/ozone/platform/drm/gpu/drm_device_generator.h" 14 #include "ui/ozone/platform/drm/gpu/drm_device_generator.h"
15 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h" 15 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h"
16 #include "ui/ozone/platform/drm/gpu/drm_window.h" 16 #include "ui/ozone/platform/drm/gpu/drm_window.h"
17 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h" 17 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h"
18 #include "ui/ozone/platform/drm/gpu/mock_drm_device.h" 18 #include "ui/ozone/platform/drm/gpu/mock_drm_device.h"
19 #include "ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h" 19 #include "ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h"
20 #include "ui/ozone/platform/drm/gpu/screen_manager.h" 20 #include "ui/ozone/platform/drm/gpu/screen_manager.h"
21 21
22 namespace { 22 namespace {
23 23
24 void EmptySwapCallback(gfx::SwapResult) { 24 void EmptySwapCallback(gfx::SwapResult) {
25 } 25 }
26 26
27 // Create a basic mode for a 6x4 screen. 27 // Create a basic mode for a 6x4 screen.
28 const drmModeModeInfo kDefaultMode = 28 const drmModeModeInfo kDefaultMode =
29 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}}; 29 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}};
(...skipping 14 matching lines...) Expand all
44 return gfx::Rect(0, 0, kDefaultMode.hdisplay, kDefaultMode.vdisplay); 44 return gfx::Rect(0, 0, kDefaultMode.hdisplay, kDefaultMode.vdisplay);
45 } 45 }
46 46
47 // Secondary is in extended mode, right-of primary. 47 // Secondary is in extended mode, right-of primary.
48 gfx::Rect GetSecondaryBounds() const { 48 gfx::Rect GetSecondaryBounds() const {
49 return gfx::Rect(kDefaultMode.hdisplay, 0, kDefaultMode.hdisplay, 49 return gfx::Rect(kDefaultMode.hdisplay, 0, kDefaultMode.hdisplay,
50 kDefaultMode.vdisplay); 50 kDefaultMode.vdisplay);
51 } 51 }
52 52
53 void SetUp() override { 53 void SetUp() override {
54 drm_ = new ui::MockDrmDevice(false, std::vector<uint32_t>(1, kPrimaryCrtc), 54 drm_ = new ui::MockDrmDevice();
55 4 /* planes per crtc */);
56 device_manager_.reset(new ui::DrmDeviceManager(nullptr)); 55 device_manager_.reset(new ui::DrmDeviceManager(nullptr));
57 buffer_generator_.reset(new ui::MockScanoutBufferGenerator()); 56 buffer_generator_.reset(new ui::MockDumbBufferGenerator());
58 screen_manager_.reset(new ui::ScreenManager(buffer_generator_.get())); 57 screen_manager_.reset(new ui::ScreenManager(buffer_generator_.get()));
59 } 58 }
60 void TearDown() override { 59 void TearDown() override {
61 screen_manager_.reset(); 60 screen_manager_.reset();
62 drm_ = nullptr; 61 drm_ = nullptr;
63 } 62 }
64 63
65 protected: 64 protected:
66 scoped_refptr<ui::MockDrmDevice> drm_; 65 scoped_refptr<ui::MockDrmDevice> drm_;
67 std::unique_ptr<ui::DrmDeviceManager> device_manager_; 66 std::unique_ptr<ui::DrmDeviceManager> device_manager_;
68 std::unique_ptr<ui::MockScanoutBufferGenerator> buffer_generator_; 67 std::unique_ptr<ui::MockDumbBufferGenerator> buffer_generator_;
69 std::unique_ptr<ui::ScreenManager> screen_manager_; 68 std::unique_ptr<ui::ScreenManager> screen_manager_;
70 69
71 private: 70 private:
72 DISALLOW_COPY_AND_ASSIGN(ScreenManagerTest); 71 DISALLOW_COPY_AND_ASSIGN(ScreenManagerTest);
73 }; 72 };
74 73
75 TEST_F(ScreenManagerTest, CheckWithNoControllers) { 74 TEST_F(ScreenManagerTest, CheckWithNoControllers) {
76 EXPECT_FALSE(screen_manager_->GetDisplayController(GetPrimaryBounds())); 75 EXPECT_FALSE(screen_manager_->GetDisplayController(GetPrimaryBounds()));
77 } 76 }
78 77
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); 509 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
511 screen_manager_->ConfigureDisplayController( 510 screen_manager_->ConfigureDisplayController(
512 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), 511 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(),
513 kDefaultMode); 512 kDefaultMode);
514 513
515 EXPECT_EQ(buffer->GetFramebufferId(), drm_->current_framebuffer()); 514 EXPECT_EQ(buffer->GetFramebufferId(), drm_->current_framebuffer());
516 515
517 window = screen_manager_->RemoveWindow(1); 516 window = screen_manager_->RemoveWindow(1);
518 window->Shutdown(); 517 window->Shutdown();
519 } 518 }
520
521 TEST_F(ScreenManagerTest, RejectBufferWithIncompatibleModifiers) {
522 std::unique_ptr<ui::DrmWindow> window(
523 new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get()));
524 window->Initialize(buffer_generator_.get());
525 window->SetBounds(GetPrimaryBounds());
526 scoped_refptr<ui::ScanoutBuffer> buffer =
527 buffer_generator_->CreateWithModifier(drm_, DRM_FORMAT_XRGB8888,
528 I915_FORMAT_MOD_X_TILED,
529 GetPrimaryBounds().size());
530
531 window->SchedulePageFlip(
532 std::vector<ui::OverlayPlane>(1, ui::OverlayPlane(buffer)),
533 base::Bind(&EmptySwapCallback));
534 screen_manager_->AddWindow(1, std::move(window));
535
536 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
537 screen_manager_->ConfigureDisplayController(
538 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(),
539 kDefaultMode);
540
541 // ScreenManager::GetModesetBuffer (called to get a buffer to
542 // modeset the new controller) should reject the buffer with
543 // I915_FORMAT_MOD_X_TILED modifier we created above and the two
544 // framebuffer IDs should be different.
545 EXPECT_NE(buffer->GetFramebufferId(), drm_->current_framebuffer());
546
547 window = screen_manager_->RemoveWindow(1);
548 window->Shutdown();
549 }
OLDNEW
« no previous file with comments | « ui/ozone/platform/drm/gpu/screen_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698