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