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

Side by Side Diff: ui/ozone/platform/dri/test/mock_dri_wrapper.cc

Issue 908993003: [Ozone-Dri] Rename DriWrapper to DrmDevice (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@udl3-pass-drm-fd
Patch Set: rebased Created 5 years, 9 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/ozone/platform/dri/test/mock_dri_wrapper.h"
6
7 #include <xf86drm.h>
8 #include <xf86drmMode.h>
9
10 #include "base/logging.h"
11 #include "third_party/skia/include/core/SkCanvas.h"
12 #include "ui/ozone/platform/dri/hardware_display_plane_manager_legacy.h"
13
14 namespace ui {
15
16 namespace {
17
18 template<class Object> Object* DrmAllocator() {
19 return static_cast<Object*>(drmMalloc(sizeof(Object)));
20 }
21
22 class MockHardwareDisplayPlaneManager
23 : public HardwareDisplayPlaneManagerLegacy {
24 public:
25 MockHardwareDisplayPlaneManager(DriWrapper* drm,
26 std::vector<uint32_t> crtcs,
27 size_t planes_per_crtc) {
28 const int kPlaneBaseId = 50;
29 drm_ = drm;
30 crtcs_.swap(crtcs);
31 for (size_t crtc_idx = 0; crtc_idx < crtcs_.size(); crtc_idx++) {
32 for (size_t i = 0; i < planes_per_crtc; i++) {
33 planes_.push_back(
34 new HardwareDisplayPlane(kPlaneBaseId + i, 1 << crtc_idx));
35 }
36 }
37 }
38 };
39
40 } // namespace
41
42 MockDriWrapper::MockDriWrapper()
43 : DriWrapper(base::FilePath(), base::File()),
44 get_crtc_call_count_(0),
45 set_crtc_call_count_(0),
46 restore_crtc_call_count_(0),
47 add_framebuffer_call_count_(0),
48 remove_framebuffer_call_count_(0),
49 page_flip_call_count_(0),
50 overlay_flip_call_count_(0),
51 set_crtc_expectation_(true),
52 add_framebuffer_expectation_(true),
53 page_flip_expectation_(true),
54 create_dumb_buffer_expectation_(true),
55 current_framebuffer_(0) {
56 plane_manager_.reset(new HardwareDisplayPlaneManagerLegacy());
57 }
58
59 MockDriWrapper::MockDriWrapper(bool use_sync_flips,
60 std::vector<uint32_t> crtcs,
61 size_t planes_per_crtc)
62 : DriWrapper(base::FilePath(), base::File()),
63 get_crtc_call_count_(0),
64 set_crtc_call_count_(0),
65 restore_crtc_call_count_(0),
66 add_framebuffer_call_count_(0),
67 remove_framebuffer_call_count_(0),
68 page_flip_call_count_(0),
69 overlay_flip_call_count_(0),
70 overlay_clear_call_count_(0),
71 set_crtc_expectation_(true),
72 add_framebuffer_expectation_(true),
73 page_flip_expectation_(true),
74 create_dumb_buffer_expectation_(true),
75 use_sync_flips_(use_sync_flips),
76 current_framebuffer_(0) {
77 plane_manager_.reset(
78 new MockHardwareDisplayPlaneManager(this, crtcs, planes_per_crtc));
79 }
80
81 MockDriWrapper::~MockDriWrapper() {
82 }
83
84 ScopedDrmCrtcPtr MockDriWrapper::GetCrtc(uint32_t crtc_id) {
85 get_crtc_call_count_++;
86 return ScopedDrmCrtcPtr(DrmAllocator<drmModeCrtc>());
87 }
88
89 bool MockDriWrapper::SetCrtc(uint32_t crtc_id,
90 uint32_t framebuffer,
91 std::vector<uint32_t> connectors,
92 drmModeModeInfo* mode) {
93 current_framebuffer_ = framebuffer;
94 set_crtc_call_count_++;
95 return set_crtc_expectation_;
96 }
97
98 bool MockDriWrapper::SetCrtc(drmModeCrtc* crtc,
99 std::vector<uint32_t> connectors) {
100 restore_crtc_call_count_++;
101 return true;
102 }
103
104 bool MockDriWrapper::DisableCrtc(uint32_t crtc_id) {
105 current_framebuffer_ = 0;
106 return true;
107 }
108
109 ScopedDrmConnectorPtr MockDriWrapper::GetConnector(uint32_t connector_id) {
110 return ScopedDrmConnectorPtr(DrmAllocator<drmModeConnector>());
111 }
112
113 bool MockDriWrapper::AddFramebuffer(uint32_t width,
114 uint32_t height,
115 uint8_t depth,
116 uint8_t bpp,
117 uint32_t stride,
118 uint32_t handle,
119 uint32_t* framebuffer) {
120 add_framebuffer_call_count_++;
121 *framebuffer = add_framebuffer_call_count_;
122 return add_framebuffer_expectation_;
123 }
124
125 bool MockDriWrapper::RemoveFramebuffer(uint32_t framebuffer) {
126 remove_framebuffer_call_count_++;
127 return true;
128 }
129
130 ScopedDrmFramebufferPtr MockDriWrapper::GetFramebuffer(uint32_t framebuffer) {
131 return ScopedDrmFramebufferPtr();
132 }
133
134 bool MockDriWrapper::PageFlip(uint32_t crtc_id,
135 uint32_t framebuffer,
136 bool is_sync,
137 const PageFlipCallback& callback) {
138 page_flip_call_count_++;
139 current_framebuffer_ = framebuffer;
140 if (page_flip_expectation_) {
141 if (use_sync_flips_)
142 callback.Run(0, 0, 0);
143 else
144 callbacks_.push(callback);
145 }
146
147 return page_flip_expectation_;
148 }
149
150 bool MockDriWrapper::PageFlipOverlay(uint32_t crtc_id,
151 uint32_t framebuffer,
152 const gfx::Rect& location,
153 const gfx::Rect& source,
154 int overlay_plane) {
155 if (!framebuffer)
156 overlay_clear_call_count_++;
157 overlay_flip_call_count_++;
158 return true;
159 }
160
161 ScopedDrmPropertyPtr MockDriWrapper::GetProperty(drmModeConnector* connector,
162 const char* name) {
163 return ScopedDrmPropertyPtr(DrmAllocator<drmModePropertyRes>());
164 }
165
166 bool MockDriWrapper::SetProperty(uint32_t connector_id,
167 uint32_t property_id,
168 uint64_t value) {
169 return true;
170 }
171
172 bool MockDriWrapper::GetCapability(uint64_t capability, uint64_t* value) {
173 return true;
174 }
175
176 ScopedDrmPropertyBlobPtr MockDriWrapper::GetPropertyBlob(
177 drmModeConnector* connector,
178 const char* name) {
179 return ScopedDrmPropertyBlobPtr(DrmAllocator<drmModePropertyBlobRes>());
180 }
181
182 bool MockDriWrapper::SetCursor(uint32_t crtc_id,
183 uint32_t handle,
184 const gfx::Size& size) {
185 return true;
186 }
187
188 bool MockDriWrapper::MoveCursor(uint32_t crtc_id, const gfx::Point& point) {
189 return true;
190 }
191
192 bool MockDriWrapper::CreateDumbBuffer(const SkImageInfo& info,
193 uint32_t* handle,
194 uint32_t* stride,
195 void** pixels) {
196 if (!create_dumb_buffer_expectation_)
197 return false;
198
199 *handle = 0;
200 *stride = info.minRowBytes();
201 *pixels = new char[info.getSafeSize(*stride)];
202 buffers_.push_back(
203 skia::AdoptRef(SkSurface::NewRasterDirect(info, *pixels, *stride)));
204 buffers_.back()->getCanvas()->clear(SK_ColorBLACK);
205
206 return true;
207 }
208
209 void MockDriWrapper::DestroyDumbBuffer(const SkImageInfo& info,
210 uint32_t handle,
211 uint32_t stride,
212 void* pixels) {
213 delete[] static_cast<char*>(pixels);
214 }
215
216 void MockDriWrapper::RunCallbacks() {
217 while (!callbacks_.empty()) {
218 PageFlipCallback callback = callbacks_.front();
219 callbacks_.pop();
220 callback.Run(0, 0, 0);
221 }
222 }
223
224 } // namespace ui
OLDNEW
« no previous file with comments | « ui/ozone/platform/dri/test/mock_dri_wrapper.h ('k') | ui/ozone/platform/dri/test/mock_drm_device.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698