OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 } | 172 } |
173 ); | 173 ); |
174 | 174 |
175 gpu::GPUInfo gpu_info; | 175 gpu::GPUInfo gpu_info; |
176 gpu_info.gpu.vendor_id = 0x10de; | 176 gpu_info.gpu.vendor_id = 0x10de; |
177 gpu_info.gpu.device_id = 0x0640; | 177 gpu_info.gpu.device_id = 0x0640; |
178 manager->InitializeForTesting(blacklist_json, gpu_info); | 178 manager->InitializeForTesting(blacklist_json, gpu_info); |
179 | 179 |
180 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); | 180 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); |
181 EXPECT_TRUE(reason.empty()); | 181 EXPECT_TRUE(reason.empty()); |
182 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | 182 if (manager->ShouldUseSwiftShader()) { |
183 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); | 183 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 184 EXPECT_FALSE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); |
| 185 } else { |
| 186 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); |
| 187 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); |
| 188 } |
184 | 189 |
185 gpu_info.gl_vendor = "NVIDIA"; | 190 gpu_info.gl_vendor = "NVIDIA"; |
186 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; | 191 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; |
187 manager->UpdateGpuInfo(gpu_info); | 192 manager->UpdateGpuInfo(gpu_info); |
188 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); | 193 if (manager->ShouldUseSwiftShader()) { |
189 EXPECT_FALSE(reason.empty()); | 194 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); |
| 195 EXPECT_TRUE(reason.empty()); |
| 196 } else { |
| 197 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); |
| 198 EXPECT_FALSE(reason.empty()); |
| 199 } |
190 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); | 200 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
191 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); | 201 if (manager->ShouldUseSwiftShader()) { |
| 202 EXPECT_FALSE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); |
| 203 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); |
| 204 } else { |
| 205 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); |
| 206 EXPECT_FALSE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); |
| 207 } |
192 EXPECT_TRUE(manager->IsFeatureBlacklisted( | 208 EXPECT_TRUE(manager->IsFeatureBlacklisted( |
193 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); | 209 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); |
194 } | 210 } |
195 | 211 |
196 TEST_F(GpuDataManagerImplPrivateTest, GpuSideBlacklistingWebGL) { | 212 TEST_F(GpuDataManagerImplPrivateTest, GpuSideBlacklistingWebGL) { |
197 // If a feature is allowed in preliminary step (browser side), but | 213 // If a feature is allowed in preliminary step (browser side), but |
198 // disabled when GPU process launches and collects full GPU info, | 214 // disabled when GPU process launches and collects full GPU info, |
199 // it's too late to let renderer know, so we basically block all GPU | 215 // it's too late to let renderer know, so we basically block all GPU |
200 // access, to be on the safe side. | 216 // access, to be on the safe side. |
201 ScopedGpuDataManagerImplPrivate manager; | 217 ScopedGpuDataManagerImplPrivate manager; |
(...skipping 25 matching lines...) Expand all Loading... |
227 } | 243 } |
228 ); | 244 ); |
229 | 245 |
230 gpu::GPUInfo gpu_info; | 246 gpu::GPUInfo gpu_info; |
231 gpu_info.gpu.vendor_id = 0x10de; | 247 gpu_info.gpu.vendor_id = 0x10de; |
232 gpu_info.gpu.device_id = 0x0640; | 248 gpu_info.gpu.device_id = 0x0640; |
233 manager->InitializeForTesting(blacklist_json, gpu_info); | 249 manager->InitializeForTesting(blacklist_json, gpu_info); |
234 | 250 |
235 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); | 251 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); |
236 EXPECT_TRUE(reason.empty()); | 252 EXPECT_TRUE(reason.empty()); |
237 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | 253 if (manager->ShouldUseSwiftShader()) { |
| 254 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 255 } else { |
| 256 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); |
| 257 } |
238 EXPECT_TRUE(manager->IsFeatureBlacklisted( | 258 EXPECT_TRUE(manager->IsFeatureBlacklisted( |
239 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); | 259 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); |
240 | 260 |
241 gpu_info.gl_vendor = "NVIDIA"; | 261 gpu_info.gl_vendor = "NVIDIA"; |
242 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; | 262 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; |
243 manager->UpdateGpuInfo(gpu_info); | 263 manager->UpdateGpuInfo(gpu_info); |
244 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); | 264 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); |
245 EXPECT_TRUE(reason.empty()); | 265 EXPECT_TRUE(reason.empty()); |
246 EXPECT_EQ(3u, manager->GetBlacklistedFeatureCount()); | 266 if (manager->ShouldUseSwiftShader()) { |
| 267 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 268 } else { |
| 269 EXPECT_EQ(3u, manager->GetBlacklistedFeatureCount()); |
| 270 } |
247 EXPECT_TRUE(manager->IsFeatureBlacklisted( | 271 EXPECT_TRUE(manager->IsFeatureBlacklisted( |
248 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); | 272 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); |
249 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); | 273 if (manager->ShouldUseSwiftShader()) { |
| 274 EXPECT_FALSE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); |
| 275 } else { |
| 276 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); |
| 277 } |
250 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); | 278 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); |
251 } | 279 } |
252 | 280 |
253 TEST_F(GpuDataManagerImplPrivateTest, GpuSideExceptions) { | 281 TEST_F(GpuDataManagerImplPrivateTest, GpuSideExceptions) { |
254 ScopedGpuDataManagerImplPrivate manager; | 282 ScopedGpuDataManagerImplPrivate manager; |
255 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | 283 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); |
256 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | 284 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
257 | 285 |
258 const std::string blacklist_json = LONG_STRING_CONST( | 286 const std::string blacklist_json = LONG_STRING_CONST( |
259 { | 287 { |
(...skipping 13 matching lines...) Expand all Loading... |
273 } | 301 } |
274 ] | 302 ] |
275 } | 303 } |
276 ); | 304 ); |
277 gpu::GPUInfo gpu_info; | 305 gpu::GPUInfo gpu_info; |
278 gpu_info.gpu.vendor_id = 0x10de; | 306 gpu_info.gpu.vendor_id = 0x10de; |
279 gpu_info.gpu.device_id = 0x0640; | 307 gpu_info.gpu.device_id = 0x0640; |
280 manager->InitializeForTesting(blacklist_json, gpu_info); | 308 manager->InitializeForTesting(blacklist_json, gpu_info); |
281 | 309 |
282 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | 310 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
283 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | 311 EXPECT_EQ(manager->ShouldUseSwiftShader() ? 2u : 1u, |
| 312 manager->GetBlacklistedFeatureCount()); |
284 | 313 |
285 // Now assume gpu process launches and full GPU info is collected. | 314 // Now assume gpu process launches and full GPU info is collected. |
286 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; | 315 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; |
287 manager->UpdateGpuInfo(gpu_info); | 316 manager->UpdateGpuInfo(gpu_info); |
288 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | 317 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
289 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | 318 // Since SwiftShader was enabled by first gpu_info, UpdateGpuInfo |
| 319 // should have failed and SwiftShader should still be active |
| 320 EXPECT_EQ(manager->ShouldUseSwiftShader() ? 2u : 0u, |
| 321 manager->GetBlacklistedFeatureCount()); |
290 } | 322 } |
291 | 323 |
292 TEST_F(GpuDataManagerImplPrivateTest, DisableHardwareAcceleration) { | 324 TEST_F(GpuDataManagerImplPrivateTest, DisableHardwareAcceleration) { |
293 ScopedGpuDataManagerImplPrivate manager; | 325 ScopedGpuDataManagerImplPrivate manager; |
294 manager->InitializeForTesting("", gpu::GPUInfo()); | 326 manager->InitializeForTesting("", gpu::GPUInfo()); |
295 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | 327 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); |
296 std::string reason; | 328 std::string reason; |
297 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); | 329 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); |
298 EXPECT_TRUE(reason.empty()); | 330 EXPECT_TRUE(reason.empty()); |
299 | 331 |
300 manager->DisableHardwareAcceleration(); | 332 manager->DisableHardwareAcceleration(); |
301 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); | 333 if (manager->ShouldUseSwiftShader()) { |
302 EXPECT_FALSE(reason.empty()); | 334 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); |
303 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), | 335 EXPECT_TRUE(reason.empty()); |
304 manager->GetBlacklistedFeatureCount()); | 336 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 337 } else { |
| 338 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); |
| 339 EXPECT_FALSE(reason.empty()); |
| 340 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), |
| 341 manager->GetBlacklistedFeatureCount()); |
| 342 } |
305 } | 343 } |
306 | 344 |
307 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering) { | 345 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering) { |
308 // Blacklist, then register SwiftShader. | 346 // Blacklist, then register SwiftShader. |
309 ScopedGpuDataManagerImplPrivate manager; | 347 ScopedGpuDataManagerImplPrivate manager; |
310 manager->InitializeForTesting("", gpu::GPUInfo()); | 348 manager->InitializeForTesting("", gpu::GPUInfo()); |
311 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | 349 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); |
312 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | 350 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
313 EXPECT_FALSE(manager->ShouldUseSwiftShader()); | 351 EXPECT_FALSE(manager->ShouldUseSwiftShader()); |
314 | 352 |
315 manager->DisableHardwareAcceleration(); | 353 manager->DisableHardwareAcceleration(); |
316 EXPECT_FALSE(manager->GpuAccessAllowed(NULL)); | 354 if (manager->ShouldUseSwiftShader()) { |
317 EXPECT_FALSE(manager->ShouldUseSwiftShader()); | 355 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
318 | 356 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
319 // If SwiftShader is enabled, even if we blacklist GPU, | 357 } else { |
320 // GPU process is still allowed. | 358 EXPECT_FALSE(manager->GpuAccessAllowed(NULL)); |
321 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath")); | 359 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), |
322 manager->RegisterSwiftShaderPath(test_path); | 360 manager->GetBlacklistedFeatureCount()); |
323 EXPECT_TRUE(manager->ShouldUseSwiftShader()); | 361 } |
324 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | |
325 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | |
326 EXPECT_TRUE(manager->IsFeatureBlacklisted( | 362 EXPECT_TRUE(manager->IsFeatureBlacklisted( |
327 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); | 363 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); |
| 364 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); |
328 } | 365 } |
329 | 366 |
330 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering2) { | 367 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering2) { |
331 // Register SwiftShader, then blacklist. | 368 // Register SwiftShader, then blacklist. |
332 ScopedGpuDataManagerImplPrivate manager; | 369 ScopedGpuDataManagerImplPrivate manager; |
333 manager->InitializeForTesting("", gpu::GPUInfo()); | 370 manager->InitializeForTesting("", gpu::GPUInfo()); |
334 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | 371 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); |
335 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | 372 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
336 EXPECT_FALSE(manager->ShouldUseSwiftShader()); | 373 EXPECT_FALSE(manager->ShouldUseSwiftShader()); |
337 | 374 |
338 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath")); | |
339 manager->RegisterSwiftShaderPath(test_path); | |
340 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | |
341 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | |
342 EXPECT_FALSE(manager->ShouldUseSwiftShader()); | |
343 | |
344 manager->DisableHardwareAcceleration(); | 375 manager->DisableHardwareAcceleration(); |
345 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | 376 if (manager->ShouldUseSwiftShader()) { |
346 EXPECT_TRUE(manager->ShouldUseSwiftShader()); | 377 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
347 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | 378 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 379 } else { |
| 380 EXPECT_FALSE(manager->GpuAccessAllowed(NULL)); |
| 381 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), |
| 382 manager->GetBlacklistedFeatureCount()); |
| 383 } |
348 EXPECT_TRUE(manager->IsFeatureBlacklisted( | 384 EXPECT_TRUE(manager->IsFeatureBlacklisted( |
349 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); | 385 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); |
| 386 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); |
350 } | 387 } |
351 | 388 |
352 TEST_F(GpuDataManagerImplPrivateTest, GpuInfoUpdate) { | 389 TEST_F(GpuDataManagerImplPrivateTest, GpuInfoUpdate) { |
353 ScopedGpuDataManagerImpl manager; | 390 ScopedGpuDataManagerImpl manager; |
354 | 391 |
355 TestObserver observer; | 392 TestObserver observer; |
356 manager->AddObserver(&observer); | 393 manager->AddObserver(&observer); |
357 | 394 |
358 { | 395 { |
359 base::RunLoop run_loop; | 396 base::RunLoop run_loop; |
360 run_loop.RunUntilIdle(); | 397 run_loop.RunUntilIdle(); |
361 } | 398 } |
362 EXPECT_FALSE(observer.gpu_info_updated()); | 399 EXPECT_FALSE(observer.gpu_info_updated()); |
363 | 400 |
364 gpu::GPUInfo gpu_info; | 401 gpu::GPUInfo gpu_info; |
365 manager->UpdateGpuInfo(gpu_info); | 402 manager->UpdateGpuInfo(gpu_info); |
366 { | 403 { |
367 base::RunLoop run_loop; | 404 base::RunLoop run_loop; |
368 run_loop.RunUntilIdle(); | 405 run_loop.RunUntilIdle(); |
369 } | 406 } |
370 EXPECT_TRUE(observer.gpu_info_updated()); | 407 EXPECT_TRUE(observer.gpu_info_updated()); |
371 } | 408 } |
372 | 409 |
373 TEST_F(GpuDataManagerImplPrivateTest, NoGpuInfoUpdateWithSwiftShader) { | 410 TEST_F(GpuDataManagerImplPrivateTest, NoGpuInfoUpdateWithSwiftShader) { |
374 ScopedGpuDataManagerImpl manager; | 411 ScopedGpuDataManagerImpl manager; |
375 manager->InitializeForTesting("", gpu::GPUInfo()); | 412 manager->InitializeForTesting("", gpu::GPUInfo()); |
376 | 413 |
377 manager->DisableHardwareAcceleration(); | 414 manager->DisableHardwareAcceleration(); |
378 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath")); | 415 if (manager->ShouldUseSwiftShader()) { |
379 manager->RegisterSwiftShaderPath(test_path); | 416 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); |
380 EXPECT_TRUE(manager->ShouldUseSwiftShader()); | 417 } else { |
381 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); | 418 EXPECT_FALSE(manager->GpuAccessAllowed(NULL)); |
| 419 } |
382 | 420 |
383 { | 421 { |
384 base::RunLoop run_loop; | 422 base::RunLoop run_loop; |
385 run_loop.RunUntilIdle(); | 423 run_loop.RunUntilIdle(); |
386 } | 424 } |
387 | 425 |
388 TestObserver observer; | 426 TestObserver observer; |
389 manager->AddObserver(&observer); | 427 manager->AddObserver(&observer); |
390 { | 428 { |
391 base::RunLoop run_loop; | 429 base::RunLoop run_loop; |
392 run_loop.RunUntilIdle(); | 430 run_loop.RunUntilIdle(); |
393 } | 431 } |
394 EXPECT_FALSE(observer.gpu_info_updated()); | 432 EXPECT_FALSE(observer.gpu_info_updated()); |
395 | 433 |
396 gpu::GPUInfo gpu_info; | 434 gpu::GPUInfo gpu_info; |
397 manager->UpdateGpuInfo(gpu_info); | 435 manager->UpdateGpuInfo(gpu_info); |
398 { | 436 { |
399 base::RunLoop run_loop; | 437 base::RunLoop run_loop; |
400 run_loop.RunUntilIdle(); | 438 run_loop.RunUntilIdle(); |
401 } | 439 } |
402 EXPECT_FALSE(observer.gpu_info_updated()); | 440 if (manager->ShouldUseSwiftShader()) { |
| 441 // Once SwiftShader is enabled, the gpu info can no longer be updated |
| 442 EXPECT_FALSE(observer.gpu_info_updated()); |
| 443 } else { |
| 444 EXPECT_TRUE(observer.gpu_info_updated()); |
| 445 } |
403 } | 446 } |
404 | 447 |
405 TEST_F(GpuDataManagerImplPrivateTest, GPUVideoMemoryUsageStatsUpdate) { | 448 TEST_F(GpuDataManagerImplPrivateTest, GPUVideoMemoryUsageStatsUpdate) { |
406 ScopedGpuDataManagerImpl manager; | 449 ScopedGpuDataManagerImpl manager; |
407 | 450 |
408 TestObserver observer; | 451 TestObserver observer; |
409 manager->AddObserver(&observer); | 452 manager->AddObserver(&observer); |
410 | 453 |
411 { | 454 { |
412 base::RunLoop run_loop; | 455 base::RunLoop run_loop; |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 } | 784 } |
742 ] | 785 ] |
743 } | 786 } |
744 ); | 787 ); |
745 | 788 |
746 gpu::GPUInfo gpu_info; | 789 gpu::GPUInfo gpu_info; |
747 gpu_info.gpu.vendor_id = 0x10de; | 790 gpu_info.gpu.vendor_id = 0x10de; |
748 gpu_info.gpu.device_id = 0x0640; | 791 gpu_info.gpu.device_id = 0x0640; |
749 manager->InitializeForTesting(blacklist_json, gpu_info); | 792 manager->InitializeForTesting(blacklist_json, gpu_info); |
750 | 793 |
751 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), | 794 if (manager->ShouldUseSwiftShader()) { |
752 manager->GetBlacklistedFeatureCount()); | 795 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
753 // TODO(zmo): remove the Linux specific behavior once we fix | 796 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); |
754 // crbug.com/238466. | 797 EXPECT_TRUE(reason.empty()); |
755 #if defined(OS_LINUX) | 798 } else { |
756 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); | 799 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), |
757 EXPECT_TRUE(reason.empty()); | 800 manager->GetBlacklistedFeatureCount()); |
758 #else | 801 } |
759 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); | |
760 EXPECT_FALSE(reason.empty()); | |
761 #endif | |
762 } | 802 } |
763 | 803 |
764 TEST_F(GpuDataManagerImplPrivateTest, UpdateActiveGpu) { | 804 TEST_F(GpuDataManagerImplPrivateTest, UpdateActiveGpu) { |
765 ScopedGpuDataManagerImpl manager; | 805 ScopedGpuDataManagerImpl manager; |
766 | 806 |
767 const std::string blacklist_json = LONG_STRING_CONST( | 807 const std::string blacklist_json = LONG_STRING_CONST( |
768 { | 808 { |
769 "name": "gpu blacklist", | 809 "name": "gpu blacklist", |
770 "version": "0.1", | 810 "version": "0.1", |
771 "entries": [ | 811 "entries": [ |
(...skipping 17 matching lines...) Expand all Loading... |
789 gpu::GPUInfo::GPUDevice intel_gpu; | 829 gpu::GPUInfo::GPUDevice intel_gpu; |
790 intel_gpu.vendor_id = 0x8086; | 830 intel_gpu.vendor_id = 0x8086; |
791 intel_gpu.device_id = 0x04a1; | 831 intel_gpu.device_id = 0x04a1; |
792 intel_gpu.active = true; | 832 intel_gpu.active = true; |
793 gpu_info.secondary_gpus.push_back(intel_gpu); | 833 gpu_info.secondary_gpus.push_back(intel_gpu); |
794 | 834 |
795 manager->InitializeForTesting(blacklist_json, gpu_info); | 835 manager->InitializeForTesting(blacklist_json, gpu_info); |
796 TestObserver observer; | 836 TestObserver observer; |
797 manager->AddObserver(&observer); | 837 manager->AddObserver(&observer); |
798 | 838 |
799 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | 839 if (manager->ShouldUseSwiftShader()) { |
| 840 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 841 } else { |
| 842 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); |
| 843 } |
800 | 844 |
801 // Update with the same Intel GPU active. | 845 // Update with the same Intel GPU active. |
802 EXPECT_FALSE(manager->UpdateActiveGpu(0x8086, 0x04a1)); | 846 EXPECT_FALSE(manager->UpdateActiveGpu(0x8086, 0x04a1)); |
803 { | 847 { |
804 base::RunLoop run_loop; | 848 base::RunLoop run_loop; |
805 run_loop.RunUntilIdle(); | 849 run_loop.RunUntilIdle(); |
806 } | 850 } |
807 EXPECT_FALSE(observer.gpu_info_updated()); | 851 EXPECT_FALSE(observer.gpu_info_updated()); |
808 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | 852 if (manager->ShouldUseSwiftShader()) { |
| 853 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 854 } else { |
| 855 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); |
| 856 } |
809 | 857 |
810 // Set NVIDIA GPU to be active. | 858 // Set NVIDIA GPU to be active. |
811 EXPECT_TRUE(manager->UpdateActiveGpu(0x10de, 0x0640)); | 859 EXPECT_TRUE(manager->UpdateActiveGpu(0x10de, 0x0640)); |
812 { | 860 { |
813 base::RunLoop run_loop; | 861 base::RunLoop run_loop; |
814 run_loop.RunUntilIdle(); | 862 run_loop.RunUntilIdle(); |
815 } | 863 } |
816 EXPECT_TRUE(observer.gpu_info_updated()); | 864 EXPECT_TRUE(observer.gpu_info_updated()); |
817 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | 865 if (manager->ShouldUseSwiftShader()) { |
| 866 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 867 } else { |
| 868 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); |
| 869 } |
818 | 870 |
819 observer.Reset(); | 871 observer.Reset(); |
820 EXPECT_FALSE(observer.gpu_info_updated()); | 872 EXPECT_FALSE(observer.gpu_info_updated()); |
821 | 873 |
822 // Update with the same NVIDIA GPU active. | 874 // Update with the same NVIDIA GPU active. |
823 EXPECT_FALSE(manager->UpdateActiveGpu(0x10de, 0x0640)); | 875 EXPECT_FALSE(manager->UpdateActiveGpu(0x10de, 0x0640)); |
824 { | 876 { |
825 base::RunLoop run_loop; | 877 base::RunLoop run_loop; |
826 run_loop.RunUntilIdle(); | 878 run_loop.RunUntilIdle(); |
827 } | 879 } |
828 EXPECT_FALSE(observer.gpu_info_updated()); | 880 EXPECT_FALSE(observer.gpu_info_updated()); |
829 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); | 881 if (manager->ShouldUseSwiftShader()) { |
| 882 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 883 } else { |
| 884 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); |
| 885 } |
830 | 886 |
831 // Set Intel GPU to be active. | 887 // Set Intel GPU to be active. |
832 EXPECT_TRUE(manager->UpdateActiveGpu(0x8086, 0x04a1)); | 888 EXPECT_TRUE(manager->UpdateActiveGpu(0x8086, 0x04a1)); |
833 { | 889 { |
834 base::RunLoop run_loop; | 890 base::RunLoop run_loop; |
835 run_loop.RunUntilIdle(); | 891 run_loop.RunUntilIdle(); |
836 } | 892 } |
837 EXPECT_TRUE(observer.gpu_info_updated()); | 893 EXPECT_TRUE(observer.gpu_info_updated()); |
838 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); | 894 if (manager->ShouldUseSwiftShader()) { |
| 895 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); |
| 896 } else { |
| 897 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); |
| 898 } |
839 } | 899 } |
840 | 900 |
841 } // namespace content | 901 } // namespace content |
OLD | NEW |