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

Side by Side Diff: content/browser/gpu/gpu_data_manager_impl_private_unittest.cc

Issue 2715563002: Moving SwiftShader from component to bundled library (Closed)
Patch Set: Specify x11 only support on Linux Created 3 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 (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"
11 #include "base/time/time.h" 11 #include "base/time/time.h"
12 #include "build/build_config.h" 12 #include "build/build_config.h"
13 #include "content/browser/gpu/gpu_data_manager_impl_private.h" 13 #include "content/browser/gpu/gpu_data_manager_impl_private.h"
14 #include "content/public/browser/gpu_data_manager_observer.h" 14 #include "content/public/browser/gpu_data_manager_observer.h"
15 #include "gpu/config/gpu_feature_type.h" 15 #include "gpu/config/gpu_feature_type.h"
16 #include "gpu/config/gpu_info.h" 16 #include "gpu/config/gpu_info.h"
17 #include "gpu/config/gpu_switches.h" 17 #include "gpu/config/gpu_switches.h"
18 #include "gpu/ipc/common/memory_stats.h" 18 #include "gpu/ipc/common/memory_stats.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 #include "ui/gl/gl_features.h"
20 #include "url/gurl.h" 21 #include "url/gurl.h"
21 22
22 #if defined(OS_WIN) 23 #if defined(OS_WIN)
23 #include "base/win/windows_version.h" 24 #include "base/win/windows_version.h"
24 #endif 25 #endif
25 26
26 #define LONG_STRING_CONST(...) #__VA_ARGS__ 27 #define LONG_STRING_CONST(...) #__VA_ARGS__
27 28
28 namespace content { 29 namespace content {
29 namespace { 30 namespace {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 173 }
173 ); 174 );
174 175
175 gpu::GPUInfo gpu_info; 176 gpu::GPUInfo gpu_info;
176 gpu_info.gpu.vendor_id = 0x10de; 177 gpu_info.gpu.vendor_id = 0x10de;
177 gpu_info.gpu.device_id = 0x0640; 178 gpu_info.gpu.device_id = 0x0640;
178 manager->InitializeForTesting(blacklist_json, gpu_info); 179 manager->InitializeForTesting(blacklist_json, gpu_info);
179 180
180 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 181 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
181 EXPECT_TRUE(reason.empty()); 182 EXPECT_TRUE(reason.empty());
183 #if BUILDFLAG(ENABLE_SWIFTSHADER)
184 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
185 EXPECT_FALSE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL));
186 #else
182 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 187 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
183 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 188 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL));
189 #endif
184 190
185 gpu_info.gl_vendor = "NVIDIA"; 191 gpu_info.gl_vendor = "NVIDIA";
186 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 192 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
187 manager->UpdateGpuInfo(gpu_info); 193 manager->UpdateGpuInfo(gpu_info);
194 #if BUILDFLAG(ENABLE_SWIFTSHADER)
195 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
196 EXPECT_TRUE(reason.empty());
197 #else
188 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 198 EXPECT_FALSE(manager->GpuAccessAllowed(&reason));
189 EXPECT_FALSE(reason.empty()); 199 EXPECT_FALSE(reason.empty());
200 #endif
190 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); 201 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
191 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 202 #if BUILDFLAG(ENABLE_SWIFTSHADER)
203 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2));
204 #else
205 EXPECT_FALSE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2));
206 #endif
192 EXPECT_TRUE(manager->IsFeatureBlacklisted( 207 EXPECT_TRUE(manager->IsFeatureBlacklisted(
193 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 208 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
194 } 209 }
195 210
196 TEST_F(GpuDataManagerImplPrivateTest, GpuSideBlacklistingWebGL) { 211 TEST_F(GpuDataManagerImplPrivateTest, GpuSideBlacklistingWebGL) {
197 // If a feature is allowed in preliminary step (browser side), but 212 // If a feature is allowed in preliminary step (browser side), but
198 // disabled when GPU process launches and collects full GPU info, 213 // 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 214 // it's too late to let renderer know, so we basically block all GPU
200 // access, to be on the safe side. 215 // access, to be on the safe side.
201 ScopedGpuDataManagerImplPrivate manager; 216 ScopedGpuDataManagerImplPrivate manager;
(...skipping 25 matching lines...) Expand all
227 } 242 }
228 ); 243 );
229 244
230 gpu::GPUInfo gpu_info; 245 gpu::GPUInfo gpu_info;
231 gpu_info.gpu.vendor_id = 0x10de; 246 gpu_info.gpu.vendor_id = 0x10de;
232 gpu_info.gpu.device_id = 0x0640; 247 gpu_info.gpu.device_id = 0x0640;
233 manager->InitializeForTesting(blacklist_json, gpu_info); 248 manager->InitializeForTesting(blacklist_json, gpu_info);
234 249
235 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 250 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
236 EXPECT_TRUE(reason.empty()); 251 EXPECT_TRUE(reason.empty());
252 #if BUILDFLAG(ENABLE_SWIFTSHADER)
253 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
254 #else
237 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 255 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
256 #endif
238 EXPECT_TRUE(manager->IsFeatureBlacklisted( 257 EXPECT_TRUE(manager->IsFeatureBlacklisted(
239 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 258 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
240 259
241 gpu_info.gl_vendor = "NVIDIA"; 260 gpu_info.gl_vendor = "NVIDIA";
242 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 261 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
243 manager->UpdateGpuInfo(gpu_info); 262 manager->UpdateGpuInfo(gpu_info);
244 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 263 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
245 EXPECT_TRUE(reason.empty()); 264 EXPECT_TRUE(reason.empty());
265 #if BUILDFLAG(ENABLE_SWIFTSHADER)
266 EXPECT_TRUE(manager->ShouldUseSwiftShader());
267 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
268 #else
269 EXPECT_FALSE(manager->ShouldUseSwiftShader());
246 EXPECT_EQ(3u, manager->GetBlacklistedFeatureCount()); 270 EXPECT_EQ(3u, manager->GetBlacklistedFeatureCount());
271 #endif
247 EXPECT_TRUE(manager->IsFeatureBlacklisted( 272 EXPECT_TRUE(manager->IsFeatureBlacklisted(
248 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 273 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
274 #if BUILDFLAG(ENABLE_SWIFTSHADER)
275 EXPECT_FALSE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL));
276 #else
249 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 277 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL));
278 #endif
250 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); 279 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2));
251 } 280 }
252 281
253 TEST_F(GpuDataManagerImplPrivateTest, GpuSideExceptions) { 282 TEST_F(GpuDataManagerImplPrivateTest, GpuSideExceptions) {
254 ScopedGpuDataManagerImplPrivate manager; 283 ScopedGpuDataManagerImplPrivate manager;
255 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 284 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
256 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 285 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
257 286
258 const std::string blacklist_json = LONG_STRING_CONST( 287 const std::string blacklist_json = LONG_STRING_CONST(
259 { 288 {
(...skipping 13 matching lines...) Expand all
273 } 302 }
274 ] 303 ]
275 } 304 }
276 ); 305 );
277 gpu::GPUInfo gpu_info; 306 gpu::GPUInfo gpu_info;
278 gpu_info.gpu.vendor_id = 0x10de; 307 gpu_info.gpu.vendor_id = 0x10de;
279 gpu_info.gpu.device_id = 0x0640; 308 gpu_info.gpu.device_id = 0x0640;
280 manager->InitializeForTesting(blacklist_json, gpu_info); 309 manager->InitializeForTesting(blacklist_json, gpu_info);
281 310
282 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 311 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
312 #if BUILDFLAG(ENABLE_SWIFTSHADER)
313 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
314 #else
283 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 315 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
316 #endif
284 317
285 // Now assume gpu process launches and full GPU info is collected. 318 // Now assume gpu process launches and full GPU info is collected.
286 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 319 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
287 manager->UpdateGpuInfo(gpu_info); 320 manager->UpdateGpuInfo(gpu_info);
288 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 321 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
289 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 322 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
290 } 323 }
291 324
292 TEST_F(GpuDataManagerImplPrivateTest, DisableHardwareAcceleration) { 325 TEST_F(GpuDataManagerImplPrivateTest, DisableHardwareAcceleration) {
293 ScopedGpuDataManagerImplPrivate manager; 326 ScopedGpuDataManagerImplPrivate manager;
294 manager->InitializeForTesting("", gpu::GPUInfo()); 327 manager->InitializeForTesting("", gpu::GPUInfo());
295 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 328 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
296 std::string reason; 329 std::string reason;
297 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 330 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
298 EXPECT_TRUE(reason.empty()); 331 EXPECT_TRUE(reason.empty());
299 332
300 manager->DisableHardwareAcceleration(); 333 manager->DisableHardwareAcceleration();
334 #if BUILDFLAG(ENABLE_SWIFTSHADER)
335 EXPECT_TRUE(manager->ShouldUseSwiftShader());
336 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
337 EXPECT_TRUE(reason.empty());
338 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
339 #else
340 EXPECT_FALSE(manager->ShouldUseSwiftShader());
301 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 341 EXPECT_FALSE(manager->GpuAccessAllowed(&reason));
302 EXPECT_FALSE(reason.empty()); 342 EXPECT_FALSE(reason.empty());
303 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), 343 EXPECT_EQ(12u, manager->GetBlacklistedFeatureCount());
304 manager->GetBlacklistedFeatureCount()); 344 #endif
305 } 345 }
306 346
307 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering) { 347 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering) {
308 // Blacklist, then register SwiftShader. 348 // Blacklist, then register SwiftShader.
309 ScopedGpuDataManagerImplPrivate manager; 349 ScopedGpuDataManagerImplPrivate manager;
310 manager->InitializeForTesting("", gpu::GPUInfo()); 350 manager->InitializeForTesting("", gpu::GPUInfo());
311 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 351 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
312 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 352 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
313 EXPECT_FALSE(manager->ShouldUseSwiftShader()); 353 EXPECT_FALSE(manager->ShouldUseSwiftShader());
314 354
315 manager->DisableHardwareAcceleration(); 355 manager->DisableHardwareAcceleration();
316 EXPECT_FALSE(manager->GpuAccessAllowed(NULL)); 356 #if BUILDFLAG(ENABLE_SWIFTSHADER)
317 EXPECT_FALSE(manager->ShouldUseSwiftShader());
318
319 // If SwiftShader is enabled, even if we blacklist GPU,
320 // GPU process is still allowed.
321 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath"));
322 manager->RegisterSwiftShaderPath(test_path);
323 EXPECT_TRUE(manager->ShouldUseSwiftShader()); 357 EXPECT_TRUE(manager->ShouldUseSwiftShader());
324 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 358 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
325 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 359 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
360 #else
361 EXPECT_FALSE(manager->ShouldUseSwiftShader());
362 EXPECT_FALSE(manager->GpuAccessAllowed(NULL));
363 EXPECT_EQ(12u, manager->GetBlacklistedFeatureCount());
364 #endif
326 EXPECT_TRUE(manager->IsFeatureBlacklisted( 365 EXPECT_TRUE(manager->IsFeatureBlacklisted(
327 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 366 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
367 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2));
328 } 368 }
329 369
330 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering2) { 370 TEST_F(GpuDataManagerImplPrivateTest, SwiftShaderRendering2) {
331 // Register SwiftShader, then blacklist. 371 // Register SwiftShader, then blacklist.
332 ScopedGpuDataManagerImplPrivate manager; 372 ScopedGpuDataManagerImplPrivate manager;
333 manager->InitializeForTesting("", gpu::GPUInfo()); 373 manager->InitializeForTesting("", gpu::GPUInfo());
334 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 374 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
335 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 375 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
336 EXPECT_FALSE(manager->ShouldUseSwiftShader()); 376 EXPECT_FALSE(manager->ShouldUseSwiftShader());
337 377
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(); 378 manager->DisableHardwareAcceleration();
379 #if BUILDFLAG(ENABLE_SWIFTSHADER)
345 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 380 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
346 EXPECT_TRUE(manager->ShouldUseSwiftShader()); 381 EXPECT_TRUE(manager->ShouldUseSwiftShader());
347 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 382 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
383 #else
384 EXPECT_FALSE(manager->GpuAccessAllowed(NULL));
385 EXPECT_FALSE(manager->ShouldUseSwiftShader());
386 EXPECT_EQ(12u, manager->GetBlacklistedFeatureCount());
387 #endif
348 EXPECT_TRUE(manager->IsFeatureBlacklisted( 388 EXPECT_TRUE(manager->IsFeatureBlacklisted(
349 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 389 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
390 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2));
350 } 391 }
351 392
352 TEST_F(GpuDataManagerImplPrivateTest, GpuInfoUpdate) { 393 TEST_F(GpuDataManagerImplPrivateTest, GpuInfoUpdate) {
353 ScopedGpuDataManagerImpl manager; 394 ScopedGpuDataManagerImpl manager;
354 395
355 TestObserver observer; 396 TestObserver observer;
356 manager->AddObserver(&observer); 397 manager->AddObserver(&observer);
357 398
358 { 399 {
359 base::RunLoop run_loop; 400 base::RunLoop run_loop;
360 run_loop.RunUntilIdle(); 401 run_loop.RunUntilIdle();
361 } 402 }
362 EXPECT_FALSE(observer.gpu_info_updated()); 403 EXPECT_FALSE(observer.gpu_info_updated());
363 404
364 gpu::GPUInfo gpu_info; 405 gpu::GPUInfo gpu_info;
365 manager->UpdateGpuInfo(gpu_info); 406 manager->UpdateGpuInfo(gpu_info);
366 { 407 {
367 base::RunLoop run_loop; 408 base::RunLoop run_loop;
368 run_loop.RunUntilIdle(); 409 run_loop.RunUntilIdle();
369 } 410 }
370 EXPECT_TRUE(observer.gpu_info_updated()); 411 EXPECT_TRUE(observer.gpu_info_updated());
371 } 412 }
372 413
373 TEST_F(GpuDataManagerImplPrivateTest, NoGpuInfoUpdateWithSwiftShader) { 414 TEST_F(GpuDataManagerImplPrivateTest, NoGpuInfoUpdateWithSwiftShader) {
374 ScopedGpuDataManagerImpl manager; 415 ScopedGpuDataManagerImpl manager;
375 manager->InitializeForTesting("", gpu::GPUInfo()); 416 manager->InitializeForTesting("", gpu::GPUInfo());
376 417
377 manager->DisableHardwareAcceleration(); 418 manager->DisableHardwareAcceleration();
378 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath")); 419 #if BUILDFLAG(ENABLE_SWIFTSHADER)
379 manager->RegisterSwiftShaderPath(test_path);
380 EXPECT_TRUE(manager->ShouldUseSwiftShader()); 420 EXPECT_TRUE(manager->ShouldUseSwiftShader());
381 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 421 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
422 #else
423 EXPECT_FALSE(manager->ShouldUseSwiftShader());
424 EXPECT_FALSE(manager->GpuAccessAllowed(NULL));
425 #endif
382 426
383 { 427 {
384 base::RunLoop run_loop; 428 base::RunLoop run_loop;
385 run_loop.RunUntilIdle(); 429 run_loop.RunUntilIdle();
386 } 430 }
387 431
388 TestObserver observer; 432 TestObserver observer;
389 manager->AddObserver(&observer); 433 manager->AddObserver(&observer);
390 { 434 {
391 base::RunLoop run_loop; 435 base::RunLoop run_loop;
392 run_loop.RunUntilIdle(); 436 run_loop.RunUntilIdle();
393 } 437 }
394 EXPECT_FALSE(observer.gpu_info_updated()); 438 EXPECT_FALSE(observer.gpu_info_updated());
395 439
396 gpu::GPUInfo gpu_info; 440 gpu::GPUInfo gpu_info;
397 manager->UpdateGpuInfo(gpu_info); 441 manager->UpdateGpuInfo(gpu_info);
398 { 442 {
399 base::RunLoop run_loop; 443 base::RunLoop run_loop;
400 run_loop.RunUntilIdle(); 444 run_loop.RunUntilIdle();
401 } 445 }
402 EXPECT_FALSE(observer.gpu_info_updated()); 446 EXPECT_TRUE(observer.gpu_info_updated());
403 } 447 }
404 448
405 TEST_F(GpuDataManagerImplPrivateTest, GPUVideoMemoryUsageStatsUpdate) { 449 TEST_F(GpuDataManagerImplPrivateTest, GPUVideoMemoryUsageStatsUpdate) {
406 ScopedGpuDataManagerImpl manager; 450 ScopedGpuDataManagerImpl manager;
407 451
408 TestObserver observer; 452 TestObserver observer;
409 manager->AddObserver(&observer); 453 manager->AddObserver(&observer);
410 454
411 { 455 {
412 base::RunLoop run_loop; 456 base::RunLoop run_loop;
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 } 785 }
742 ] 786 ]
743 } 787 }
744 ); 788 );
745 789
746 gpu::GPUInfo gpu_info; 790 gpu::GPUInfo gpu_info;
747 gpu_info.gpu.vendor_id = 0x10de; 791 gpu_info.gpu.vendor_id = 0x10de;
748 gpu_info.gpu.device_id = 0x0640; 792 gpu_info.gpu.device_id = 0x0640;
749 manager->InitializeForTesting(blacklist_json, gpu_info); 793 manager->InitializeForTesting(blacklist_json, gpu_info);
750 794
751 EXPECT_EQ(static_cast<size_t>(gpu::NUMBER_OF_GPU_FEATURE_TYPES), 795 #if BUILDFLAG(ENABLE_SWIFTSHADER)
752 manager->GetBlacklistedFeatureCount()); 796 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
753 // TODO(zmo): remove the Linux specific behavior once we fix
754 // crbug.com/238466.
755 #if defined(OS_LINUX)
756 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 797 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
757 EXPECT_TRUE(reason.empty()); 798 EXPECT_TRUE(reason.empty());
758 #else 799 #else
759 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 800 EXPECT_EQ(12u, manager->GetBlacklistedFeatureCount());
760 EXPECT_FALSE(reason.empty());
761 #endif 801 #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",
(...skipping 18 matching lines...) Expand all
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
839 #if BUILDFLAG(ENABLE_SWIFTSHADER)
840 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
841 #else
799 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 842 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
843 #endif
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());
852 #if BUILDFLAG(ENABLE_SWIFTSHADER)
853 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
854 #else
808 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 855 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
856 #endif
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 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
818 866
819 observer.Reset(); 867 observer.Reset();
820 EXPECT_FALSE(observer.gpu_info_updated()); 868 EXPECT_FALSE(observer.gpu_info_updated());
821 869
822 // Update with the same NVIDIA GPU active. 870 // Update with the same NVIDIA GPU active.
823 EXPECT_FALSE(manager->UpdateActiveGpu(0x10de, 0x0640)); 871 EXPECT_FALSE(manager->UpdateActiveGpu(0x10de, 0x0640));
824 { 872 {
825 base::RunLoop run_loop; 873 base::RunLoop run_loop;
826 run_loop.RunUntilIdle(); 874 run_loop.RunUntilIdle();
827 } 875 }
828 EXPECT_FALSE(observer.gpu_info_updated()); 876 EXPECT_FALSE(observer.gpu_info_updated());
829 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 877 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
830 878
831 // Set Intel GPU to be active. 879 // Set Intel GPU to be active.
832 EXPECT_TRUE(manager->UpdateActiveGpu(0x8086, 0x04a1)); 880 EXPECT_TRUE(manager->UpdateActiveGpu(0x8086, 0x04a1));
833 { 881 {
834 base::RunLoop run_loop; 882 base::RunLoop run_loop;
835 run_loop.RunUntilIdle(); 883 run_loop.RunUntilIdle();
836 } 884 }
837 EXPECT_TRUE(observer.gpu_info_updated()); 885 EXPECT_TRUE(observer.gpu_info_updated());
886 #if BUILDFLAG(ENABLE_SWIFTSHADER)
887 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
888 #else
838 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 889 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
890 #endif
839 } 891 }
840 892
841 } // namespace content 893 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698