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

Side by Side Diff: chrome/browser/gpu_blacklist_unittest.cc

Issue 5612002: Blacklist bad GPU drivers: currenly we disable all gpu related features if th... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/gpu_blacklist.cc ('k') | chrome/browser/gpu_process_host.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/version.h"
6 #include "chrome/browser/gpu_blacklist.h"
7 #include "chrome/common/gpu_info.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 TEST(GpuBlacklistTest, BlacklistLogic) {
11 GPUInfo gpu_info;
12 gpu_info.SetGraphicsInfo(0x10de, // Vendor ID
13 0x0640, // Device ID
14 L"1.6.18", // Driver Version
15 0x0114, // Pixel Shader Version
16 0x0114, // Vertex Shader Version
17 0x0201, // GL version,
18 true); // can_lose_context
19 gpu_info.SetProgress(GPUInfo::kComplete);
20 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4"));
21
22 GpuBlacklist blacklist;
23
24 // Default blacklist settings: all feature are allowed.
25 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags(
26 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info);
27 EXPECT_EQ(flags.flags(), 0u);
28
29 // Empty list: all features are allowed.
30 const std::string empty_list_json =
31 "{\n"
32 " \"name\": \"gpu blacklist\",\n"
33 " \"version\": \"0.0\",\n"
34 " \"entries\": [\n"
35 " ]\n"
36 "}";
37 EXPECT_TRUE(blacklist.LoadGpuBlacklist(empty_list_json, false));
38 flags = blacklist.DetermineGpuFeatureFlags(
39 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info);
40 EXPECT_EQ(flags.flags(), 0u);
41
42 // Blacklist accelerated_compositing with exact setting.
43 const std::string exact_list_json =
44 "{\n"
45 " \"name\": \"gpu blacklist\",\n"
46 " \"version\": \"0.1\",\n"
47 " \"entries\": [\n"
48 " {\n"
49 " \"os\": {\n"
50 " \"type\": \"macosx\",\n"
51 " \"version\": {\n"
52 " \"op\": \"=\",\n"
53 " \"number\": \"10.6.4\"\n"
54 " }\n"
55 " },\n"
56 " \"vendor_id\": \"0x10de\",\n"
57 " \"device_id\": \"0x0640\",\n"
58 " \"driver_version\": {\n"
59 " \"op\": \"=\",\n"
60 " \"number\": \"1.6.18\"\n"
61 " },\n"
62 " \"blacklist\": [\n"
63 " \"accelerated_compositing\"\n"
64 " ]\n"
65 " }\n"
66 " ]\n"
67 "}";
68 EXPECT_TRUE(blacklist.LoadGpuBlacklist(exact_list_json, false));
69 flags = blacklist.DetermineGpuFeatureFlags(
70 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info);
71 EXPECT_EQ(
72 flags.flags(),
73 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureAcceleratedCompositing));
74
75 // Invalid json input should not change the current blacklist settings.
76 const std::string invalid_json = "invalid";
77 EXPECT_FALSE(blacklist.LoadGpuBlacklist(invalid_json, false));
78 flags = blacklist.DetermineGpuFeatureFlags(
79 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info);
80 EXPECT_EQ(
81 flags.flags(),
82 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureAcceleratedCompositing));
83
84 // Blacklist a vendor on all OS.
85 const std::string vendor_json =
86 "{\n"
87 " \"name\": \"gpu blacklist\",\n"
88 " \"version\": \"0.1\",\n"
89 " \"entries\": [\n"
90 " {\n"
91 " \"vendor_id\": \"0x10de\",\n"
92 " \"blacklist\": [\n"
93 " \"webgl\"\n"
94 " ]\n"
95 " }\n"
96 " ]\n"
97 "}";
98 EXPECT_TRUE(blacklist.LoadGpuBlacklist(vendor_json, false));
99 flags = blacklist.DetermineGpuFeatureFlags(
100 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info);
101 EXPECT_EQ(flags.flags(),
102 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl));
103 flags = blacklist.DetermineGpuFeatureFlags(
104 GpuBlacklist::kOsWin, os_version.get(), gpu_info);
105 EXPECT_EQ(flags.flags(),
106 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl));
107 flags = blacklist.DetermineGpuFeatureFlags(
108 GpuBlacklist::kOsLinux, os_version.get(), gpu_info);
109 EXPECT_EQ(flags.flags(),
110 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl));
111
112 // Blacklist a vendor on Linux only.
113 const std::string vendor_linux_json =
114 "{\n"
115 " \"name\": \"gpu blacklist\",\n"
116 " \"version\": \"0.1\",\n"
117 " \"entries\": [\n"
118 " {\n"
119 " \"os\": {\n"
120 " \"type\": \"linux\"\n"
121 " },\n"
122 " \"vendor_id\": \"0x10de\",\n"
123 " \"blacklist\": [\n"
124 " \"accelerated_2d_canvas\"\n"
125 " ]\n"
126 " }\n"
127 " ]\n"
128 "}";
129 EXPECT_TRUE(blacklist.LoadGpuBlacklist(vendor_linux_json, false));
130 flags = blacklist.DetermineGpuFeatureFlags(
131 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info);
132 EXPECT_EQ(flags.flags(), 0u);
133 flags = blacklist.DetermineGpuFeatureFlags(
134 GpuBlacklist::kOsWin, os_version.get(), gpu_info);
135 EXPECT_EQ(flags.flags(), 0u);
136 flags = blacklist.DetermineGpuFeatureFlags(
137 GpuBlacklist::kOsLinux, os_version.get(), gpu_info);
138 EXPECT_EQ(
139 flags.flags(),
140 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureAccelerated2dCanvas));
141 }
142
OLDNEW
« no previous file with comments | « chrome/browser/gpu_blacklist.cc ('k') | chrome/browser/gpu_process_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698