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

Side by Side Diff: ui/gfx/ozone/impl/dri_surface_factory_unittest.cc

Issue 49303002: [Ozone] Rename software implementation files to use Dri prefix (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix ifdef Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « ui/gfx/ozone/impl/dri_surface_factory.cc ('k') | ui/gfx/ozone/impl/dri_surface_unittest.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/gfx/ozone/impl/drm_skbitmap_ozone.h" 8 #include "ui/gfx/ozone/impl/dri_skbitmap.h"
9 #include "ui/gfx/ozone/impl/drm_wrapper_ozone.h" 9 #include "ui/gfx/ozone/impl/dri_surface.h"
10 #include "ui/gfx/ozone/impl/hardware_display_controller_ozone.h" 10 #include "ui/gfx/ozone/impl/dri_surface_factory.h"
11 #include "ui/gfx/ozone/impl/software_surface_factory_ozone.h" 11 #include "ui/gfx/ozone/impl/dri_wrapper.h"
12 #include "ui/gfx/ozone/impl/software_surface_ozone.h" 12 #include "ui/gfx/ozone/impl/hardware_display_controller.h"
13 #include "ui/gfx/ozone/surface_factory_ozone.h" 13 #include "ui/gfx/ozone/surface_factory_ozone.h"
14 14
15 namespace { 15 namespace {
16 16
17 const drmModeModeInfo kDefaultMode = 17 const drmModeModeInfo kDefaultMode =
18 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}}; 18 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}};
19 19
20 // Mock file descriptor ID. 20 // Mock file descriptor ID.
21 const int kFd = 3; 21 const int kFd = 3;
22 22
23 // Mock connector ID. 23 // Mock connector ID.
24 const uint32_t kConnectorId = 1; 24 const uint32_t kConnectorId = 1;
25 25
26 // Mock CRTC ID. 26 // Mock CRTC ID.
27 const uint32_t kCrtcId = 1; 27 const uint32_t kCrtcId = 1;
28 28
29 const uint32_t kDPMSPropertyId = 1; 29 const uint32_t kDPMSPropertyId = 1;
30 30
31 const gfx::AcceleratedWidget kDefaultWidgetHandle = 1; 31 const gfx::AcceleratedWidget kDefaultWidgetHandle = 1;
32 32
33 // The real DrmWrapper makes actual DRM calls which we can't use in unit tests. 33 // The real DriWrapper makes actual DRM calls which we can't use in unit tests.
34 class MockDrmWrapperOzone : public gfx::DrmWrapperOzone { 34 class MockDriWrapper : public gfx::DriWrapper {
35 public: 35 public:
36 MockDrmWrapperOzone(int fd) : DrmWrapperOzone(""), 36 MockDriWrapper(int fd) : DriWrapper(""),
37 add_framebuffer_expectation_(true), 37 add_framebuffer_expectation_(true),
38 page_flip_expectation_(true) { 38 page_flip_expectation_(true) {
39 fd_ = fd; 39 fd_ = fd;
40 } 40 }
41 41
42 virtual ~MockDrmWrapperOzone() { fd_ = -1; } 42 virtual ~MockDriWrapper() { fd_ = -1; }
43 43
44 virtual drmModeCrtc* GetCrtc(uint32_t crtc_id) OVERRIDE { 44 virtual drmModeCrtc* GetCrtc(uint32_t crtc_id) OVERRIDE {
45 return new drmModeCrtc; 45 return new drmModeCrtc;
46 } 46 }
47 47
48 virtual void FreeCrtc(drmModeCrtc* crtc) OVERRIDE { 48 virtual void FreeCrtc(drmModeCrtc* crtc) OVERRIDE {
49 delete crtc; 49 delete crtc;
50 } 50 }
51 51
52 virtual bool SetCrtc(uint32_t crtc_id, 52 virtual bool SetCrtc(uint32_t crtc_id,
(...skipping 14 matching lines...) Expand all
67 uint32_t handle, 67 uint32_t handle,
68 uint32_t* framebuffer) OVERRIDE { 68 uint32_t* framebuffer) OVERRIDE {
69 return add_framebuffer_expectation_; 69 return add_framebuffer_expectation_;
70 } 70 }
71 71
72 virtual bool RemoveFramebuffer(uint32_t framebuffer) OVERRIDE { return true; } 72 virtual bool RemoveFramebuffer(uint32_t framebuffer) OVERRIDE { return true; }
73 73
74 virtual bool PageFlip(uint32_t crtc_id, 74 virtual bool PageFlip(uint32_t crtc_id,
75 uint32_t framebuffer, 75 uint32_t framebuffer,
76 void* data) OVERRIDE { 76 void* data) OVERRIDE {
77 static_cast<gfx::HardwareDisplayControllerOzone*>(data)->get_surface() 77 static_cast<gfx::HardwareDisplayController*>(data)->get_surface()
78 ->SwapBuffers(); 78 ->SwapBuffers();
79 return page_flip_expectation_; 79 return page_flip_expectation_;
80 } 80 }
81 81
82 virtual bool ConnectorSetProperty(uint32_t connector_id, 82 virtual bool ConnectorSetProperty(uint32_t connector_id,
83 uint32_t property_id, 83 uint32_t property_id,
84 uint64_t value) OVERRIDE { return true; } 84 uint64_t value) OVERRIDE { return true; }
85 85
86 void set_add_framebuffer_expectation(bool state) { 86 void set_add_framebuffer_expectation(bool state) {
87 add_framebuffer_expectation_ = state; 87 add_framebuffer_expectation_ = state;
88 } 88 }
89 89
90 void set_page_flip_expectation(bool state) { 90 void set_page_flip_expectation(bool state) {
91 page_flip_expectation_ = state; 91 page_flip_expectation_ = state;
92 } 92 }
93 93
94 private: 94 private:
95 bool add_framebuffer_expectation_; 95 bool add_framebuffer_expectation_;
96 bool page_flip_expectation_; 96 bool page_flip_expectation_;
97 97
98 DISALLOW_COPY_AND_ASSIGN(MockDrmWrapperOzone); 98 DISALLOW_COPY_AND_ASSIGN(MockDriWrapper);
99 }; 99 };
100 100
101 class MockDrmSkBitmapOzone : public gfx::DrmSkBitmapOzone { 101 class MockDriSkBitmap : public gfx::DriSkBitmap {
102 public: 102 public:
103 MockDrmSkBitmapOzone() : DrmSkBitmapOzone(kFd) {} 103 MockDriSkBitmap() : DriSkBitmap(kFd) {}
104 virtual ~MockDrmSkBitmapOzone() {} 104 virtual ~MockDriSkBitmap() {}
105 105
106 virtual bool Initialize() OVERRIDE { 106 virtual bool Initialize() OVERRIDE {
107 allocPixels(); 107 allocPixels();
108 eraseColor(SK_ColorBLACK); 108 eraseColor(SK_ColorBLACK);
109 return true; 109 return true;
110 } 110 }
111 111
112 private: 112 private:
113 DISALLOW_COPY_AND_ASSIGN(MockDrmSkBitmapOzone); 113 DISALLOW_COPY_AND_ASSIGN(MockDriSkBitmap);
114 }; 114 };
115 115
116 class MockSoftwareSurfaceOzone : public gfx::SoftwareSurfaceOzone { 116 class MockDriSurface : public gfx::DriSurface {
117 public: 117 public:
118 MockSoftwareSurfaceOzone(gfx::HardwareDisplayControllerOzone* controller) 118 MockDriSurface(gfx::HardwareDisplayController* controller)
119 : SoftwareSurfaceOzone(controller) {} 119 : DriSurface(controller) {}
120 virtual ~MockSoftwareSurfaceOzone() {} 120 virtual ~MockDriSurface() {}
121 121
122 private: 122 private:
123 virtual gfx::DrmSkBitmapOzone* CreateBuffer() OVERRIDE { 123 virtual gfx::DriSkBitmap* CreateBuffer() OVERRIDE {
124 return new MockDrmSkBitmapOzone(); 124 return new MockDriSkBitmap();
125 } 125 }
126 126
127 DISALLOW_COPY_AND_ASSIGN(MockSoftwareSurfaceOzone); 127 DISALLOW_COPY_AND_ASSIGN(MockDriSurface);
128 }; 128 };
129 129
130 // SSFO would normally allocate DRM resources. We can't rely on having a DRM 130 // SSFO would normally allocate DRM resources. We can't rely on having a DRM
131 // backend to allocate and display our buffers. Thus, we replace these 131 // backend to allocate and display our buffers. Thus, we replace these
132 // resources with stubs. For DRM calls, we simply use stubs that do nothing and 132 // resources with stubs. For DRM calls, we simply use stubs that do nothing and
133 // for buffers we use the default SkBitmap allocator. 133 // for buffers we use the default SkBitmap allocator.
134 class MockSoftwareSurfaceFactoryOzone 134 class MockDriSurfaceFactory
135 : public gfx::SoftwareSurfaceFactoryOzone { 135 : public gfx::DriSurfaceFactory {
136 public: 136 public:
137 MockSoftwareSurfaceFactoryOzone() 137 MockDriSurfaceFactory()
138 : SoftwareSurfaceFactoryOzone(), 138 : DriSurfaceFactory(),
139 mock_drm_(NULL), 139 mock_drm_(NULL),
140 drm_wrapper_expectation_(true), 140 drm_wrapper_expectation_(true),
141 initialize_controller_expectation_(true) {} 141 initialize_controller_expectation_(true) {}
142 virtual ~MockSoftwareSurfaceFactoryOzone() {}; 142 virtual ~MockDriSurfaceFactory() {};
143 143
144 void set_drm_wrapper_expectation(bool state) { 144 void set_drm_wrapper_expectation(bool state) {
145 drm_wrapper_expectation_ = state; 145 drm_wrapper_expectation_ = state;
146 } 146 }
147 147
148 void set_initialize_controller_expectation(bool state) { 148 void set_initialize_controller_expectation(bool state) {
149 initialize_controller_expectation_ = state; 149 initialize_controller_expectation_ = state;
150 } 150 }
151 151
152 MockDrmWrapperOzone* get_drm() const { 152 MockDriWrapper* get_drm() const {
153 return mock_drm_; 153 return mock_drm_;
154 } 154 }
155 155
156 private: 156 private:
157 virtual gfx::SoftwareSurfaceOzone* CreateSurface( 157 virtual gfx::DriSurface* CreateSurface(
158 gfx::HardwareDisplayControllerOzone* controller) OVERRIDE { 158 gfx::HardwareDisplayController* controller) OVERRIDE {
159 return new MockSoftwareSurfaceOzone(controller); 159 return new MockDriSurface(controller);
160 } 160 }
161 161
162 virtual gfx::DrmWrapperOzone* CreateWrapper() OVERRIDE { 162 virtual gfx::DriWrapper* CreateWrapper() OVERRIDE {
163 if (drm_wrapper_expectation_) 163 if (drm_wrapper_expectation_)
164 mock_drm_ = new MockDrmWrapperOzone(kFd); 164 mock_drm_ = new MockDriWrapper(kFd);
165 else 165 else
166 mock_drm_ = new MockDrmWrapperOzone(-1); 166 mock_drm_ = new MockDriWrapper(-1);
167 167
168 return mock_drm_; 168 return mock_drm_;
169 } 169 }
170 170
171 // Normally we'd use DRM to figure out the controller configuration. But we 171 // Normally we'd use DRM to figure out the controller configuration. But we
172 // can't use DRM in unit tests, so we just create a fake configuration. 172 // can't use DRM in unit tests, so we just create a fake configuration.
173 virtual bool InitializeControllerForPrimaryDisplay( 173 virtual bool InitializeControllerForPrimaryDisplay(
174 gfx::DrmWrapperOzone* drm, 174 gfx::DriWrapper* drm,
175 gfx::HardwareDisplayControllerOzone* controller) OVERRIDE { 175 gfx::HardwareDisplayController* controller) OVERRIDE {
176 if (initialize_controller_expectation_) { 176 if (initialize_controller_expectation_) {
177 controller->SetControllerInfo(drm, 177 controller->SetControllerInfo(drm,
178 kConnectorId, 178 kConnectorId,
179 kCrtcId, 179 kCrtcId,
180 kDPMSPropertyId, 180 kDPMSPropertyId,
181 kDefaultMode); 181 kDefaultMode);
182 return true; 182 return true;
183 } else { 183 } else {
184 return false; 184 return false;
185 } 185 }
186 } 186 }
187 187
188 virtual void WaitForPageFlipEvent(int fd) OVERRIDE {} 188 virtual void WaitForPageFlipEvent(int fd) OVERRIDE {}
189 189
190 MockDrmWrapperOzone* mock_drm_; 190 MockDriWrapper* mock_drm_;
191 bool drm_wrapper_expectation_; 191 bool drm_wrapper_expectation_;
192 bool initialize_controller_expectation_; 192 bool initialize_controller_expectation_;
193 193
194 DISALLOW_COPY_AND_ASSIGN(MockSoftwareSurfaceFactoryOzone); 194 DISALLOW_COPY_AND_ASSIGN(MockDriSurfaceFactory);
195 }; 195 };
196 196
197 } // namespace 197 } // namespace
198 198
199 class SoftwareSurfaceFactoryOzoneTest : public testing::Test { 199 class DriSurfaceFactoryTest : public testing::Test {
200 public: 200 public:
201 SoftwareSurfaceFactoryOzoneTest() {} 201 DriSurfaceFactoryTest() {}
202 202
203 virtual void SetUp() OVERRIDE; 203 virtual void SetUp() OVERRIDE;
204 virtual void TearDown() OVERRIDE; 204 virtual void TearDown() OVERRIDE;
205 protected: 205 protected:
206 scoped_ptr<base::MessageLoop> message_loop_; 206 scoped_ptr<base::MessageLoop> message_loop_;
207 scoped_ptr<MockSoftwareSurfaceFactoryOzone> factory_; 207 scoped_ptr<MockDriSurfaceFactory> factory_;
208 208
209 private: 209 private:
210 DISALLOW_COPY_AND_ASSIGN(SoftwareSurfaceFactoryOzoneTest); 210 DISALLOW_COPY_AND_ASSIGN(DriSurfaceFactoryTest);
211 }; 211 };
212 212
213 void SoftwareSurfaceFactoryOzoneTest::SetUp() { 213 void DriSurfaceFactoryTest::SetUp() {
214 message_loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_UI)); 214 message_loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_UI));
215 factory_.reset(new MockSoftwareSurfaceFactoryOzone()); 215 factory_.reset(new MockDriSurfaceFactory());
216 } 216 }
217 217
218 void SoftwareSurfaceFactoryOzoneTest::TearDown() { 218 void DriSurfaceFactoryTest::TearDown() {
219 factory_.reset(); 219 factory_.reset();
220 message_loop_.reset(); 220 message_loop_.reset();
221 } 221 }
222 222
223 TEST_F(SoftwareSurfaceFactoryOzoneTest, FailInitialization) { 223 TEST_F(DriSurfaceFactoryTest, FailInitialization) {
224 factory_->set_drm_wrapper_expectation(false); 224 factory_->set_drm_wrapper_expectation(false);
225 225
226 EXPECT_EQ(gfx::SurfaceFactoryOzone::FAILED, factory_->InitializeHardware()); 226 EXPECT_EQ(gfx::SurfaceFactoryOzone::FAILED, factory_->InitializeHardware());
227 } 227 }
228 228
229 TEST_F(SoftwareSurfaceFactoryOzoneTest, SuccessfulInitialization) { 229 TEST_F(DriSurfaceFactoryTest, SuccessfulInitialization) {
230 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, 230 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED,
231 factory_->InitializeHardware()); 231 factory_->InitializeHardware());
232 } 232 }
233 233
234 TEST_F(SoftwareSurfaceFactoryOzoneTest, FailSurfaceInitialization) { 234 TEST_F(DriSurfaceFactoryTest, FailSurfaceInitialization) {
235 factory_->set_initialize_controller_expectation(false); 235 factory_->set_initialize_controller_expectation(false);
236 236
237 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, 237 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED,
238 factory_->InitializeHardware()); 238 factory_->InitializeHardware());
239 239
240 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); 240 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget();
241 EXPECT_EQ(kDefaultWidgetHandle, w); 241 EXPECT_EQ(kDefaultWidgetHandle, w);
242 242
243 EXPECT_EQ(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); 243 EXPECT_EQ(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w));
244 } 244 }
245 245
246 TEST_F(SoftwareSurfaceFactoryOzoneTest, FailBindingSurfaceToController) { 246 TEST_F(DriSurfaceFactoryTest, FailBindingSurfaceToController) {
247 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, 247 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED,
248 factory_->InitializeHardware()); 248 factory_->InitializeHardware());
249 249
250 factory_->get_drm()->set_add_framebuffer_expectation(false); 250 factory_->get_drm()->set_add_framebuffer_expectation(false);
251 251
252 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); 252 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget();
253 EXPECT_EQ(kDefaultWidgetHandle, w); 253 EXPECT_EQ(kDefaultWidgetHandle, w);
254 254
255 EXPECT_EQ(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); 255 EXPECT_EQ(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w));
256 } 256 }
257 257
258 TEST_F(SoftwareSurfaceFactoryOzoneTest, SuccessfulWidgetRealization) { 258 TEST_F(DriSurfaceFactoryTest, SuccessfulWidgetRealization) {
259 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, 259 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED,
260 factory_->InitializeHardware()); 260 factory_->InitializeHardware());
261 261
262 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); 262 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget();
263 EXPECT_EQ(kDefaultWidgetHandle, w); 263 EXPECT_EQ(kDefaultWidgetHandle, w);
264 264
265 EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); 265 EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w));
266 } 266 }
267 267
268 TEST_F(SoftwareSurfaceFactoryOzoneTest, FailSchedulePageFlip) { 268 TEST_F(DriSurfaceFactoryTest, FailSchedulePageFlip) {
269 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, 269 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED,
270 factory_->InitializeHardware()); 270 factory_->InitializeHardware());
271 271
272 factory_->get_drm()->set_page_flip_expectation(false); 272 factory_->get_drm()->set_page_flip_expectation(false);
273 273
274 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); 274 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget();
275 EXPECT_EQ(kDefaultWidgetHandle, w); 275 EXPECT_EQ(kDefaultWidgetHandle, w);
276 276
277 EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); 277 EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w));
278 278
279 EXPECT_FALSE(factory_->SchedulePageFlip(w)); 279 EXPECT_FALSE(factory_->SchedulePageFlip(w));
280 } 280 }
281 281
282 TEST_F(SoftwareSurfaceFactoryOzoneTest, SuccessfulSchedulePageFlip) { 282 TEST_F(DriSurfaceFactoryTest, SuccessfulSchedulePageFlip) {
283 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, 283 EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED,
284 factory_->InitializeHardware()); 284 factory_->InitializeHardware());
285 285
286 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); 286 gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget();
287 EXPECT_EQ(kDefaultWidgetHandle, w); 287 EXPECT_EQ(kDefaultWidgetHandle, w);
288 288
289 EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); 289 EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w));
290 290
291 EXPECT_TRUE(factory_->SchedulePageFlip(w)); 291 EXPECT_TRUE(factory_->SchedulePageFlip(w));
292 } 292 }
OLDNEW
« no previous file with comments | « ui/gfx/ozone/impl/dri_surface_factory.cc ('k') | ui/gfx/ozone/impl/dri_surface_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698