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

Side by Side Diff: ui/ozone/platform/dri/hardware_display_controller_unittest.cc

Issue 960273003: ozone: dri: add synchronous SwapBuffers support on surfaceless (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update after dnicoara's review 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
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "testing/gtest/include/gtest/gtest.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 #include "third_party/skia/include/core/SkCanvas.h" 7 #include "third_party/skia/include/core/SkCanvas.h"
8 #include "ui/ozone/platform/dri/crtc_controller.h" 8 #include "ui/ozone/platform/dri/crtc_controller.h"
9 #include "ui/ozone/platform/dri/dri_buffer.h" 9 #include "ui/ozone/platform/dri/dri_buffer.h"
10 #include "ui/ozone/platform/dri/dri_wrapper.h" 10 #include "ui/ozone/platform/dri/dri_wrapper.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 TEST_F(HardwareDisplayControllerTest, CheckStateAfterPageFlip) { 96 TEST_F(HardwareDisplayControllerTest, CheckStateAfterPageFlip) {
97 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 97 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
98 new MockScanoutBuffer(kDefaultModeSize))); 98 new MockScanoutBuffer(kDefaultModeSize)));
99 99
100 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 100 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
101 101
102 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>( 102 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>(
103 new MockScanoutBuffer(kDefaultModeSize))); 103 new MockScanoutBuffer(kDefaultModeSize)));
104 controller_->QueueOverlayPlane(plane2); 104 controller_->QueueOverlayPlane(plane2);
105 EXPECT_TRUE(controller_->SchedulePageFlip( 105 EXPECT_TRUE(controller_->SchedulePageFlip(
106 false,
106 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 107 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
107 base::Unretained(this)))); 108 base::Unretained(this))));
108 drm_->RunCallbacks(); 109 drm_->RunCallbacks();
109 EXPECT_TRUE(plane1.buffer->HasOneRef()); 110 EXPECT_TRUE(plane1.buffer->HasOneRef());
110 EXPECT_FALSE(plane2.buffer->HasOneRef()); 111 EXPECT_FALSE(plane2.buffer->HasOneRef());
111 112
112 EXPECT_EQ(1, drm_->get_page_flip_call_count()); 113 EXPECT_EQ(1, drm_->get_page_flip_call_count());
113 EXPECT_EQ(0, drm_->get_overlay_flip_call_count()); 114 EXPECT_EQ(0, drm_->get_overlay_flip_call_count());
114 } 115 }
115 116
(...skipping 11 matching lines...) Expand all
127 128
128 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 129 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
129 new MockScanoutBuffer(kDefaultModeSize))); 130 new MockScanoutBuffer(kDefaultModeSize)));
130 131
131 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 132 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
132 133
133 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>( 134 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>(
134 new MockScanoutBuffer(kDefaultModeSize))); 135 new MockScanoutBuffer(kDefaultModeSize)));
135 controller_->QueueOverlayPlane(plane2); 136 controller_->QueueOverlayPlane(plane2);
136 EXPECT_FALSE(controller_->SchedulePageFlip( 137 EXPECT_FALSE(controller_->SchedulePageFlip(
138 false,
137 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 139 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
138 base::Unretained(this)))); 140 base::Unretained(this))));
139 drm_->RunCallbacks(); 141 drm_->RunCallbacks();
140 142
141 EXPECT_FALSE(plane1.buffer->HasOneRef()); 143 EXPECT_FALSE(plane1.buffer->HasOneRef());
142 EXPECT_TRUE(plane2.buffer->HasOneRef()); 144 EXPECT_TRUE(plane2.buffer->HasOneRef());
143 } 145 }
144 146
145 TEST_F(HardwareDisplayControllerTest, VerifyNoDRMCallsWhenDisabled) { 147 TEST_F(HardwareDisplayControllerTest, VerifyNoDRMCallsWhenDisabled) {
146 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 148 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
147 new MockScanoutBuffer(kDefaultModeSize))); 149 new MockScanoutBuffer(kDefaultModeSize)));
148 150
149 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 151 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
150 controller_->Disable(); 152 controller_->Disable();
151 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>( 153 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>(
152 new MockScanoutBuffer(kDefaultModeSize))); 154 new MockScanoutBuffer(kDefaultModeSize)));
153 controller_->QueueOverlayPlane(plane2); 155 controller_->QueueOverlayPlane(plane2);
154 EXPECT_TRUE(controller_->SchedulePageFlip( 156 EXPECT_TRUE(controller_->SchedulePageFlip(
157 false,
155 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 158 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
156 base::Unretained(this)))); 159 base::Unretained(this))));
157 drm_->RunCallbacks(); 160 drm_->RunCallbacks();
158 EXPECT_EQ(0, drm_->get_page_flip_call_count()); 161 EXPECT_EQ(0, drm_->get_page_flip_call_count());
159 162
160 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 163 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
161 controller_->QueueOverlayPlane(plane2); 164 controller_->QueueOverlayPlane(plane2);
162 EXPECT_TRUE(controller_->SchedulePageFlip( 165 EXPECT_TRUE(controller_->SchedulePageFlip(
166 false,
163 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 167 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
164 base::Unretained(this)))); 168 base::Unretained(this))));
165 drm_->RunCallbacks(); 169 drm_->RunCallbacks();
166 EXPECT_EQ(1, drm_->get_page_flip_call_count()); 170 EXPECT_EQ(1, drm_->get_page_flip_call_count());
167 } 171 }
168 172
169 TEST_F(HardwareDisplayControllerTest, CheckOverlayPresent) { 173 TEST_F(HardwareDisplayControllerTest, CheckOverlayPresent) {
170 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 174 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
171 new MockScanoutBuffer(kDefaultModeSize))); 175 new MockScanoutBuffer(kDefaultModeSize)));
172 ui::OverlayPlane plane2( 176 ui::OverlayPlane plane2(
173 scoped_refptr<ui::ScanoutBuffer>(new MockScanoutBuffer(kDefaultModeSize)), 177 scoped_refptr<ui::ScanoutBuffer>(new MockScanoutBuffer(kDefaultModeSize)),
174 1, 178 1,
175 gfx::OVERLAY_TRANSFORM_NONE, 179 gfx::OVERLAY_TRANSFORM_NONE,
176 gfx::Rect(kDefaultModeSize), 180 gfx::Rect(kDefaultModeSize),
177 gfx::RectF(kDefaultModeSizeF)); 181 gfx::RectF(kDefaultModeSizeF));
178 182
179 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 183 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
180 184
181 controller_->QueueOverlayPlane(plane1); 185 controller_->QueueOverlayPlane(plane1);
182 controller_->QueueOverlayPlane(plane2); 186 controller_->QueueOverlayPlane(plane2);
183 187
184 EXPECT_TRUE(controller_->SchedulePageFlip( 188 EXPECT_TRUE(controller_->SchedulePageFlip(
189 false,
185 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 190 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
186 base::Unretained(this)))); 191 base::Unretained(this))));
187 drm_->RunCallbacks(); 192 drm_->RunCallbacks();
188 EXPECT_EQ(1, drm_->get_page_flip_call_count()); 193 EXPECT_EQ(1, drm_->get_page_flip_call_count());
189 EXPECT_EQ(1, drm_->get_overlay_flip_call_count()); 194 EXPECT_EQ(1, drm_->get_overlay_flip_call_count());
190 } 195 }
191 196
192 TEST_F(HardwareDisplayControllerTest, PageflipMirroredControllers) { 197 TEST_F(HardwareDisplayControllerTest, PageflipMirroredControllers) {
193 controller_->AddCrtc(scoped_ptr<ui::CrtcController>( 198 controller_->AddCrtc(scoped_ptr<ui::CrtcController>(
194 new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector))); 199 new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector)));
195 200
196 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 201 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
197 new MockScanoutBuffer(kDefaultModeSize))); 202 new MockScanoutBuffer(kDefaultModeSize)));
198 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 203 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
199 EXPECT_EQ(2, drm_->get_set_crtc_call_count()); 204 EXPECT_EQ(2, drm_->get_set_crtc_call_count());
200 205
201 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>( 206 ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>(
202 new MockScanoutBuffer(kDefaultModeSize))); 207 new MockScanoutBuffer(kDefaultModeSize)));
203 controller_->QueueOverlayPlane(plane2); 208 controller_->QueueOverlayPlane(plane2);
204 EXPECT_TRUE(controller_->SchedulePageFlip( 209 EXPECT_TRUE(controller_->SchedulePageFlip(
210 false,
205 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 211 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
206 base::Unretained(this)))); 212 base::Unretained(this))));
207 drm_->RunCallbacks(); 213 drm_->RunCallbacks();
208 EXPECT_EQ(2, drm_->get_page_flip_call_count()); 214 EXPECT_EQ(2, drm_->get_page_flip_call_count());
209 EXPECT_EQ(1, page_flips_); 215 EXPECT_EQ(1, page_flips_);
210 } 216 }
211 217
212 TEST_F(HardwareDisplayControllerTest, PlaneStateAfterRemoveCrtc) { 218 TEST_F(HardwareDisplayControllerTest, PlaneStateAfterRemoveCrtc) {
213 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 219 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
214 new MockScanoutBuffer(kDefaultModeSize))); 220 new MockScanoutBuffer(kDefaultModeSize)));
215 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 221 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
216 controller_->QueueOverlayPlane(plane1); 222 controller_->QueueOverlayPlane(plane1);
217 EXPECT_TRUE(controller_->SchedulePageFlip( 223 EXPECT_TRUE(controller_->SchedulePageFlip(
224 false,
218 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 225 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
219 base::Unretained(this)))); 226 base::Unretained(this))));
220 drm_->RunCallbacks(); 227 drm_->RunCallbacks();
221 228
222 const ui::HardwareDisplayPlane* owned_plane = nullptr; 229 const ui::HardwareDisplayPlane* owned_plane = nullptr;
223 for (const auto& plane : drm_->plane_manager()->planes()) 230 for (const auto& plane : drm_->plane_manager()->planes())
224 if (plane->in_use()) 231 if (plane->in_use())
225 owned_plane = plane; 232 owned_plane = plane;
226 ASSERT_TRUE(owned_plane != nullptr); 233 ASSERT_TRUE(owned_plane != nullptr);
227 EXPECT_EQ(kPrimaryCrtc, owned_plane->owning_crtc()); 234 EXPECT_EQ(kPrimaryCrtc, owned_plane->owning_crtc());
228 // Removing the crtc should free the plane. 235 // Removing the crtc should free the plane.
229 scoped_ptr<ui::CrtcController> crtc = 236 scoped_ptr<ui::CrtcController> crtc =
230 controller_->RemoveCrtc(drm_, kPrimaryCrtc); 237 controller_->RemoveCrtc(drm_, kPrimaryCrtc);
231 EXPECT_FALSE(owned_plane->in_use()); 238 EXPECT_FALSE(owned_plane->in_use());
232 } 239 }
233 240
234 TEST_F(HardwareDisplayControllerTest, ModesetWhilePageFlipping) { 241 TEST_F(HardwareDisplayControllerTest, ModesetWhilePageFlipping) {
235 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 242 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
236 new MockScanoutBuffer(kDefaultModeSize))); 243 new MockScanoutBuffer(kDefaultModeSize)));
237 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 244 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
238 controller_->QueueOverlayPlane(plane1); 245 controller_->QueueOverlayPlane(plane1);
239 EXPECT_TRUE(controller_->SchedulePageFlip( 246 EXPECT_TRUE(controller_->SchedulePageFlip(
247 false,
240 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 248 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
241 base::Unretained(this)))); 249 base::Unretained(this))));
242 250
243 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 251 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
244 drm_->RunCallbacks(); 252 drm_->RunCallbacks();
245 EXPECT_EQ(1, page_flips_); 253 EXPECT_EQ(1, page_flips_);
246 } 254 }
247 255
248 TEST_F(HardwareDisplayControllerTest, AddCrtcMidPageFlip) { 256 TEST_F(HardwareDisplayControllerTest, AddCrtcMidPageFlip) {
249 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 257 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
250 new MockScanoutBuffer(kDefaultModeSize))); 258 new MockScanoutBuffer(kDefaultModeSize)));
251 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 259 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
252 controller_->QueueOverlayPlane(plane1); 260 controller_->QueueOverlayPlane(plane1);
253 EXPECT_TRUE(controller_->SchedulePageFlip( 261 EXPECT_TRUE(controller_->SchedulePageFlip(
262 false,
254 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 263 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
255 base::Unretained(this)))); 264 base::Unretained(this))));
256 265
257 controller_->AddCrtc(scoped_ptr<ui::CrtcController>( 266 controller_->AddCrtc(scoped_ptr<ui::CrtcController>(
258 new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector))); 267 new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector)));
259 268
260 drm_->RunCallbacks(); 269 drm_->RunCallbacks();
261 EXPECT_EQ(1, page_flips_); 270 EXPECT_EQ(1, page_flips_);
262 } 271 }
263 272
264 TEST_F(HardwareDisplayControllerTest, RemoveCrtcMidPageFlip) { 273 TEST_F(HardwareDisplayControllerTest, RemoveCrtcMidPageFlip) {
265 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>( 274 ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
266 new MockScanoutBuffer(kDefaultModeSize))); 275 new MockScanoutBuffer(kDefaultModeSize)));
267 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); 276 EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
268 controller_->QueueOverlayPlane(plane1); 277 controller_->QueueOverlayPlane(plane1);
269 EXPECT_TRUE(controller_->SchedulePageFlip( 278 EXPECT_TRUE(controller_->SchedulePageFlip(
279 false,
270 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback, 280 base::Bind(&HardwareDisplayControllerTest::PageFlipCallback,
271 base::Unretained(this)))); 281 base::Unretained(this))));
272 282
273 controller_->RemoveCrtc(drm_, kPrimaryCrtc); 283 controller_->RemoveCrtc(drm_, kPrimaryCrtc);
274 284
275 EXPECT_EQ(1, page_flips_); 285 EXPECT_EQ(1, page_flips_);
276 drm_->RunCallbacks(); 286 drm_->RunCallbacks();
277 EXPECT_EQ(1, page_flips_); 287 EXPECT_EQ(1, page_flips_);
278 } 288 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698