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 "base/json/json_reader.h" | 5 #include "base/json/json_reader.h" |
6 #include "gpu/config/gpu_control_list.h" | 6 #include "gpu/config/gpu_control_list.h" |
7 #include "gpu/config/gpu_info.h" | 7 #include "gpu/config/gpu_info.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 #define LONG_STRING_CONST(...) #__VA_ARGS__ | 10 #define LONG_STRING_CONST(...) #__VA_ARGS__ |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01"; | 463 gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01"; |
464 EXPECT_TRUE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); | 464 EXPECT_TRUE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); |
465 | 465 |
466 gpu_info.gl_version = "4.0 NVIDIA-8.24.11 310.90.9b01"; | 466 gpu_info.gl_version = "4.0 NVIDIA-8.24.11 310.90.9b01"; |
467 EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); | 467 EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); |
468 | 468 |
469 gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)"; | 469 gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)"; |
470 EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info)); | 470 EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info)); |
471 } | 471 } |
472 | 472 |
473 TEST_F(GpuControlListEntryTest, GlVendorEntry) { | 473 TEST_F(GpuControlListEntryTest, GlVendorEqual) { |
474 const std::string json = LONG_STRING_CONST( | 474 const std::string json = LONG_STRING_CONST( |
475 { | 475 { |
476 "id": 1, | 476 "id": 1, |
477 "gl_vendor": { | 477 "gl_vendor": "NVIDIA", |
478 "op": "beginwith", | |
479 "value": "NVIDIA" | |
480 }, | |
481 "features": [ | 478 "features": [ |
482 "test_feature_0" | 479 "test_feature_0" |
483 ] | 480 ] |
484 } | 481 } |
485 ); | 482 ); |
486 ScopedEntry entry(GetEntryFromString(json)); | 483 ScopedEntry entry(GetEntryFromString(json)); |
487 EXPECT_TRUE(entry.get() != NULL); | 484 EXPECT_TRUE(entry.get() != NULL); |
488 | 485 |
489 const GpuControlList::OsType os_type[] = { | 486 GPUInfo gpu_info; |
490 GpuControlList::kOsMacosx, | 487 gpu_info.gl_vendor = "NVIDIA"; |
491 GpuControlList::kOsWin, | 488 EXPECT_TRUE(entry->Contains( |
492 GpuControlList::kOsLinux, | 489 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
493 GpuControlList::kOsChromeOS, | 490 |
494 GpuControlList::kOsAndroid | 491 // Case insensitive. |
495 }; | 492 gpu_info.gl_vendor = "NVidia"; |
496 for (size_t i = 0; i < arraysize(os_type); ++i) | 493 EXPECT_TRUE(entry->Contains( |
497 EXPECT_TRUE(entry->Contains(os_type[i], "10.6", gpu_info())); | 494 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 495 |
| 496 gpu_info.gl_vendor = "NVIDIA-x"; |
| 497 EXPECT_FALSE(entry->Contains( |
| 498 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
498 } | 499 } |
499 | 500 |
500 TEST_F(GpuControlListEntryTest, GlRendererEntry) { | 501 TEST_F(GpuControlListEntryTest, GlVendorWithDot) { |
501 const std::string json = LONG_STRING_CONST( | 502 const std::string json = LONG_STRING_CONST( |
502 { | 503 { |
503 "id": 1, | 504 "id": 1, |
504 "gl_renderer": { | 505 "gl_vendor": "X\\.Org.*", |
505 "op": "contains", | |
506 "value": "GeForce" | |
507 }, | |
508 "features": [ | 506 "features": [ |
509 "test_feature_0" | 507 "test_feature_0" |
510 ] | 508 ] |
511 } | 509 } |
512 ); | 510 ); |
513 ScopedEntry entry(GetEntryFromString(json)); | 511 ScopedEntry entry(GetEntryFromString(json)); |
514 EXPECT_TRUE(entry.get() != NULL); | 512 EXPECT_TRUE(entry.get() != NULL); |
515 | 513 |
516 const GpuControlList::OsType os_type[] = { | 514 GPUInfo gpu_info; |
517 GpuControlList::kOsMacosx, | 515 gpu_info.gl_vendor = "X.Org R300 Project"; |
518 GpuControlList::kOsWin, | 516 EXPECT_TRUE(entry->Contains( |
519 GpuControlList::kOsLinux, | 517 GpuControlList::kOsLinux, "", gpu_info)); |
520 GpuControlList::kOsChromeOS, | 518 |
521 GpuControlList::kOsAndroid | 519 gpu_info.gl_vendor = "X.Org"; |
522 }; | 520 EXPECT_TRUE(entry->Contains( |
523 for (size_t i = 0; i < arraysize(os_type); ++i) | 521 GpuControlList::kOsLinux, "", gpu_info)); |
524 EXPECT_TRUE(entry->Contains(os_type[i], "10.6", gpu_info())); | 522 } |
| 523 |
| 524 TEST_F(GpuControlListEntryTest, GlRendererContains) { |
| 525 const std::string json = LONG_STRING_CONST( |
| 526 { |
| 527 "id": 1, |
| 528 "gl_renderer": ".*GeForce.*", |
| 529 "features": [ |
| 530 "test_feature_0" |
| 531 ] |
| 532 } |
| 533 ); |
| 534 ScopedEntry entry(GetEntryFromString(json)); |
| 535 EXPECT_TRUE(entry.get() != NULL); |
| 536 |
| 537 GPUInfo gpu_info; |
| 538 gpu_info.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine"; |
| 539 EXPECT_TRUE(entry->Contains( |
| 540 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 541 |
| 542 // Case insensitive. |
| 543 gpu_info.gl_renderer = "NVIDIA GEFORCE GT 120 OpenGL Engine"; |
| 544 EXPECT_TRUE(entry->Contains( |
| 545 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 546 |
| 547 gpu_info.gl_renderer = "GeForce GT 120 OpenGL Engine"; |
| 548 EXPECT_TRUE(entry->Contains( |
| 549 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 550 |
| 551 gpu_info.gl_renderer = "NVIDIA GeForce"; |
| 552 EXPECT_TRUE(entry->Contains( |
| 553 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 554 |
| 555 gpu_info.gl_renderer = "NVIDIA Ge Force"; |
| 556 EXPECT_FALSE(entry->Contains( |
| 557 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 558 } |
| 559 |
| 560 TEST_F(GpuControlListEntryTest, GlExtensionsEndWith) { |
| 561 const std::string json = LONG_STRING_CONST( |
| 562 { |
| 563 "id": 1, |
| 564 "gl_extensions": ".*GL_SUN_slice_accum", |
| 565 "features": [ |
| 566 "test_feature_0" |
| 567 ] |
| 568 } |
| 569 ); |
| 570 ScopedEntry entry(GetEntryFromString(json)); |
| 571 EXPECT_TRUE(entry.get() != NULL); |
| 572 |
| 573 GPUInfo gpu_info; |
| 574 gpu_info.gl_extensions = "GL_SGIS_generate_mipmap " |
| 575 "GL_SGIX_shadow " |
| 576 "GL_SUN_slice_accum"; |
| 577 EXPECT_TRUE(entry->Contains( |
| 578 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 579 |
| 580 gpu_info.gl_extensions = "GL_SGIS_generate_mipmap " |
| 581 "GL_SUN_slice_accum " |
| 582 "GL_SGIX_shadow"; |
| 583 EXPECT_FALSE(entry->Contains( |
| 584 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
525 } | 585 } |
526 | 586 |
527 TEST_F(GpuControlListEntryTest, PerfGraphicsEntry) { | 587 TEST_F(GpuControlListEntryTest, PerfGraphicsEntry) { |
528 const std::string json = LONG_STRING_CONST( | 588 const std::string json = LONG_STRING_CONST( |
529 { | 589 { |
530 "id": 1, | 590 "id": 1, |
531 "perf_graphics": { | 591 "perf_graphics": { |
532 "op": "<", | 592 "op": "<", |
533 "value": "6.0" | 593 "value": "6.0" |
534 }, | 594 }, |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 GPUInfo gpu_info; | 693 GPUInfo gpu_info; |
634 gpu_info.amd_switchable = true; | 694 gpu_info.amd_switchable = true; |
635 | 695 |
636 ScopedEntry entry(GetEntryFromString(json)); | 696 ScopedEntry entry(GetEntryFromString(json)); |
637 EXPECT_TRUE(entry.get() != NULL); | 697 EXPECT_TRUE(entry.get() != NULL); |
638 EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); | 698 EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); |
639 EXPECT_TRUE(entry->Contains( | 699 EXPECT_TRUE(entry->Contains( |
640 GpuControlList::kOsMacosx, "10.6", gpu_info)); | 700 GpuControlList::kOsMacosx, "10.6", gpu_info)); |
641 } | 701 } |
642 | 702 |
| 703 TEST_F(GpuControlListEntryTest, DriverVendorBeginWith) { |
| 704 const std::string json = LONG_STRING_CONST( |
| 705 { |
| 706 "id": 1, |
| 707 "driver_vendor": "NVIDIA.*", |
| 708 "features": [ |
| 709 "test_feature_0" |
| 710 ] |
| 711 } |
| 712 ); |
| 713 ScopedEntry entry(GetEntryFromString(json)); |
| 714 EXPECT_TRUE(entry.get() != NULL); |
| 715 |
| 716 GPUInfo gpu_info; |
| 717 gpu_info.driver_vendor = "NVIDIA Corporation"; |
| 718 EXPECT_TRUE(entry->Contains( |
| 719 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 720 |
| 721 // Case insensitive. |
| 722 gpu_info.driver_vendor = "NVidia Corporation"; |
| 723 EXPECT_TRUE(entry->Contains( |
| 724 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 725 |
| 726 gpu_info.driver_vendor = "NVIDIA"; |
| 727 EXPECT_TRUE(entry->Contains( |
| 728 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 729 |
| 730 gpu_info.driver_vendor = "USA NVIDIA"; |
| 731 EXPECT_FALSE(entry->Contains( |
| 732 GpuControlList::kOsMacosx, "10.9", gpu_info)); |
| 733 } |
| 734 |
643 TEST_F(GpuControlListEntryTest, LexicalDriverVersionEntry) { | 735 TEST_F(GpuControlListEntryTest, LexicalDriverVersionEntry) { |
644 const std::string json = LONG_STRING_CONST( | 736 const std::string json = LONG_STRING_CONST( |
645 { | 737 { |
646 "id": 1, | 738 "id": 1, |
647 "os": { | 739 "os": { |
648 "type": "linux" | 740 "type": "linux" |
649 }, | 741 }, |
650 "vendor_id": "0x1002", | 742 "vendor_id": "0x1002", |
651 "driver_version": { | 743 "driver_version": { |
652 "op": "=", | 744 "op": "=", |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
703 EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info)); | 795 EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info)); |
704 } | 796 } |
705 | 797 |
706 TEST_F(GpuControlListEntryTest, NeedsMoreInfoForExceptionsEntry) { | 798 TEST_F(GpuControlListEntryTest, NeedsMoreInfoForExceptionsEntry) { |
707 const std::string json = LONG_STRING_CONST( | 799 const std::string json = LONG_STRING_CONST( |
708 { | 800 { |
709 "id": 1, | 801 "id": 1, |
710 "vendor_id": "0x8086", | 802 "vendor_id": "0x8086", |
711 "exceptions": [ | 803 "exceptions": [ |
712 { | 804 { |
713 "gl_renderer": { | 805 "gl_renderer": ".*mesa.*" |
714 "op": "contains", | |
715 "value": "mesa" | |
716 } | |
717 } | 806 } |
718 ], | 807 ], |
719 "features": [ | 808 "features": [ |
720 "test_feature_1" | 809 "test_feature_1" |
721 ] | 810 ] |
722 } | 811 } |
723 ); | 812 ); |
724 ScopedEntry entry(GetEntryFromString(json)); | 813 ScopedEntry entry(GetEntryFromString(json)); |
725 EXPECT_TRUE(entry.get() != NULL); | 814 EXPECT_TRUE(entry.get() != NULL); |
726 | 815 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
800 GpuControlList::kOsMacosx, "10.6", gpu_info())); | 889 GpuControlList::kOsMacosx, "10.6", gpu_info())); |
801 } | 890 } |
802 | 891 |
803 TEST_F(GpuControlListEntryTest, MachineModelName) { | 892 TEST_F(GpuControlListEntryTest, MachineModelName) { |
804 const std::string json = LONG_STRING_CONST( | 893 const std::string json = LONG_STRING_CONST( |
805 { | 894 { |
806 "id": 1, | 895 "id": 1, |
807 "os": { | 896 "os": { |
808 "type": "android" | 897 "type": "android" |
809 }, | 898 }, |
810 "machine_model_name": ["Nexus 4", "XT1032"], | 899 "machine_model_name": [ |
| 900 "Nexus 4", "XT1032", "GT-.*", "SCH-.*" |
| 901 ], |
811 "features": [ | 902 "features": [ |
812 "test_feature_0" | 903 "test_feature_0" |
813 ] | 904 ] |
814 } | 905 } |
815 ); | 906 ); |
816 ScopedEntry entry(GetEntryFromString(json)); | 907 ScopedEntry entry(GetEntryFromString(json)); |
817 EXPECT_TRUE(entry.get() != NULL); | 908 EXPECT_TRUE(entry.get() != NULL); |
818 EXPECT_EQ(GpuControlList::kOsAndroid, entry->GetOsType()); | 909 EXPECT_EQ(GpuControlList::kOsAndroid, entry->GetOsType()); |
819 GPUInfo gpu_info; | 910 GPUInfo gpu_info; |
820 | 911 |
(...skipping 13 matching lines...) Expand all Loading... |
834 EXPECT_FALSE(entry->Contains( | 925 EXPECT_FALSE(entry->Contains( |
835 GpuControlList::kOsAndroid, "4.1", gpu_info)); | 926 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
836 | 927 |
837 gpu_info.machine_model_name = "Nexus"; | 928 gpu_info.machine_model_name = "Nexus"; |
838 EXPECT_FALSE(entry->Contains( | 929 EXPECT_FALSE(entry->Contains( |
839 GpuControlList::kOsAndroid, "4.1", gpu_info)); | 930 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
840 | 931 |
841 gpu_info.machine_model_name = ""; | 932 gpu_info.machine_model_name = ""; |
842 EXPECT_FALSE(entry->Contains( | 933 EXPECT_FALSE(entry->Contains( |
843 GpuControlList::kOsAndroid, "4.1", gpu_info)); | 934 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
| 935 |
| 936 gpu_info.machine_model_name = "GT-N7100"; |
| 937 EXPECT_TRUE(entry->Contains( |
| 938 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
| 939 |
| 940 gpu_info.machine_model_name = "GT-I9300"; |
| 941 EXPECT_TRUE(entry->Contains( |
| 942 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
| 943 |
| 944 gpu_info.machine_model_name = "SCH-I545"; |
| 945 EXPECT_TRUE(entry->Contains( |
| 946 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
844 } | 947 } |
845 | 948 |
846 TEST_F(GpuControlListEntryTest, MachineModelNameException) { | 949 TEST_F(GpuControlListEntryTest, MachineModelNameException) { |
847 const std::string json = LONG_STRING_CONST( | 950 const std::string json = LONG_STRING_CONST( |
848 { | 951 { |
849 "id": 1, | 952 "id": 1, |
850 "exceptions": [ | 953 "exceptions": [ |
851 { | 954 { |
852 "os": { | 955 "os": { |
853 "type": "android" | 956 "type": "android" |
854 }, | 957 }, |
855 "machine_model_name": ["Nexus 4"] | 958 "machine_model_name": ["Nexus.*"] |
856 } | 959 } |
857 ], | 960 ], |
858 "features": [ | 961 "features": [ |
859 "test_feature_0" | 962 "test_feature_0" |
860 ] | 963 ] |
861 } | 964 } |
862 ); | 965 ); |
863 ScopedEntry entry(GetEntryFromString(json)); | 966 ScopedEntry entry(GetEntryFromString(json)); |
864 EXPECT_TRUE(entry.get() != NULL); | 967 EXPECT_TRUE(entry.get() != NULL); |
865 EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType()); | 968 EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType()); |
866 GPUInfo gpu_info; | 969 GPUInfo gpu_info; |
867 | 970 |
868 gpu_info.machine_model_name = "Nexus 4"; | 971 gpu_info.machine_model_name = "Nexus 4"; |
869 EXPECT_FALSE(entry->Contains( | 972 EXPECT_FALSE(entry->Contains( |
870 GpuControlList::kOsAndroid, "4.1", gpu_info)); | 973 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
871 EXPECT_TRUE(entry->Contains( | 974 EXPECT_TRUE(entry->Contains( |
872 GpuControlList::kOsLinux, "4.1", gpu_info)); | 975 GpuControlList::kOsLinux, "4.1", gpu_info)); |
873 | 976 |
| 977 gpu_info.machine_model_name = "Nexus 7"; |
| 978 EXPECT_FALSE(entry->Contains( |
| 979 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
| 980 EXPECT_TRUE(entry->Contains( |
| 981 GpuControlList::kOsLinux, "4.1", gpu_info)); |
| 982 |
874 gpu_info.machine_model_name = ""; | 983 gpu_info.machine_model_name = ""; |
875 EXPECT_TRUE(entry->Contains( | 984 EXPECT_TRUE(entry->Contains( |
876 GpuControlList::kOsAndroid, "4.1", gpu_info)); | 985 GpuControlList::kOsAndroid, "4.1", gpu_info)); |
877 EXPECT_TRUE(entry->Contains( | 986 EXPECT_TRUE(entry->Contains( |
878 GpuControlList::kOsLinux, "4.1", gpu_info)); | 987 GpuControlList::kOsLinux, "4.1", gpu_info)); |
879 } | 988 } |
880 | 989 |
881 TEST_F(GpuControlListEntryTest, MachineModelVersion) { | 990 TEST_F(GpuControlListEntryTest, MachineModelVersion) { |
882 const std::string json = LONG_STRING_CONST( | 991 const std::string json = LONG_STRING_CONST( |
883 { | 992 { |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 ); | 1259 ); |
1151 // By default, secondary GPU is active. | 1260 // By default, secondary GPU is active. |
1152 EntryShouldNotApply(json); | 1261 EntryShouldNotApply(json); |
1153 | 1262 |
1154 ActivatePrimaryGPU(); | 1263 ActivatePrimaryGPU(); |
1155 EntryShouldApply(json); | 1264 EntryShouldApply(json); |
1156 } | 1265 } |
1157 | 1266 |
1158 } // namespace gpu | 1267 } // namespace gpu |
1159 | 1268 |
OLD | NEW |