OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 // Determines whether a certain driver bug exists in the current system. | |
6 // A valid gpu_driver_bug_list.json file are in the format of | |
7 // { | |
8 // "version": "x.y", | |
9 // "entries": [ | |
10 // { // entry 1 | |
11 // }, | |
12 // ... | |
13 // { // entry n | |
14 // } | |
15 // ] | |
16 // } | |
17 // | |
18 // Each entry contains the following fields (fields are optional unless | |
19 // specifically described as mandatory below): | |
20 // 1. "id" is an integer. 0 is reserved. This field is mandatory. | |
21 // 2. "os" contains "type" and an optional "version". "type" could be "macosx", | |
22 // "linux", "win", "chromeos", or "any". "any" is the same as not specifying | |
23 // "os". | |
24 // "version" is a VERSION structure (defined below). | |
25 // 3. "vendor_id" is a string. 0 is reserved. | |
26 // 4. "device_id" is an array of strings. 0 is reserved. | |
27 // 5. "multi_gpu_style" is a string, valid values include "optimus", and | |
28 // "amd_switchable". | |
29 // 6. "multi_gpu_category" is a string, valid values include "any", "primary", | |
30 // and "secondary". If unspecified, the default value is "primary". | |
31 // 7. "driver_vendor" is a STRING structure (defined below). | |
32 // 8. "driver_version" is a VERSION structure (defined below). | |
33 // 9. "driver_date" is a VERSION structure (defined below). | |
34 // The version is interpreted as "year.month.day". | |
35 // 10. "gl_vendor" is a STRING structure (defined below). | |
36 // 11. "gl_renderer" is a STRING structure (defined below). | |
37 // 12. "gl_extensions" is a STRING structure (defined below). | |
38 // 13. "perf_graphics" is a FLOAT structure (defined below). | |
39 // 14. "perf_gaming" is a FLOAT structure (defined below). | |
40 // 15. "perf_overall" is a FLOAT structure (defined below). | |
41 // 16. "machine_model" contais "name" and an optional "version". "name" is a | |
42 // STRING structure and "version" is a VERSION structure (defined below). | |
43 // 17. "gpu_count" is a INT structure (defined below). | |
44 // 18 "cpu_info" is a STRING structure (defined below). | |
45 // 19. "exceptions" is a list of entries. | |
46 // 20. "features" is a list of driver bug types. For a list of supported types, | |
47 // see src/gpu/command_buffer/service/gpu_driver_bug_workaround_type.h | |
48 // This field is mandatory. | |
49 // 21. "description" has the description of the entry. | |
50 // 22. "webkit_bugs" is an array of associated webkit bug numbers. | |
51 // 23. "cr_bugs" is an array of associated chromium bug numbers. | |
52 // 24. "browser_version" is a VERSION structure (defined below). If this | |
53 // condition is not satisfied, the entry will be ignored. If it is not | |
54 // present, then the entry applies to all versions of the browser. | |
55 // 25. "disabled" is a boolean. If it is present, the entry will be skipped. | |
56 // This can not be used in exceptions. | |
57 // | |
58 // VERSION includes "op", "style", "number", and "number2". "op" can be any of | |
59 // the following values: "=", "<", "<=", ">", ">=", "any", "between". "style" | |
60 // is optional and can be "lexical" or "numerical"; if it's not specified, it | |
61 // defaults to "numerical". "number2" is only used if "op" is "between". | |
62 // "between" is "number <= * <= number2". | |
63 // "number" is used for all "op" values except "any". "number" and "number2" | |
64 // are in the format of x, x.x, x.x.x, etc. | |
65 // Only "driver_version" supports lexical style if the format is major.minor; | |
66 // in that case, major is still numerical, but minor is lexical. | |
67 // | |
68 // STRING includes "op" and "value". "op" can be any of the following values: | |
69 // "contains", "beginwith", "endwith", "=". "value" is a string. | |
70 // | |
71 // FLOAT includes "op" "value", and "value2". "op" can be any of the | |
72 // following values: "=", "<", "<=", ">", ">=", "any", "between". "value2" is | |
73 // only used if "op" is "between". "value" is used for all "op" values except | |
74 // "any". "value" and "value2" are valid float numbers. | |
75 // INT is very much like FLOAT, except that the values need to be integers. | |
76 | |
77 #include "content/browser/gpu/gpu_control_list_jsons.h" | |
78 | |
79 #define LONG_STRING_CONST(...) #__VA_ARGS__ | |
80 | |
81 namespace content { | |
82 | |
83 const char kGpuDriverBugListJson[] = LONG_STRING_CONST( | |
84 | |
85 { | |
86 "name": "gpu driver bug list", | |
87 // Please update the version number whenever you change this file. | |
88 "version": "2.0", | |
89 "entries": [ | |
90 { | |
91 "id": 1, | |
92 "description": "Imagination driver doesn't like uploading lots of buffer d
ata constantly", | |
93 "os": { | |
94 "type": "android" | |
95 }, | |
96 "gl_vendor": { | |
97 "op": "beginwith", | |
98 "value": "Imagination" | |
99 }, | |
100 "features": [ | |
101 "use_client_side_arrays_for_stream_buffers" | |
102 ] | |
103 }, | |
104 { | |
105 "id": 2, | |
106 "description": "ARM driver doesn't like uploading lots of buffer data cons
tantly", | |
107 "os": { | |
108 "type": "android" | |
109 }, | |
110 "gl_vendor": { | |
111 "op": "beginwith", | |
112 "value": "ARM" | |
113 }, | |
114 "features": [ | |
115 "use_client_side_arrays_for_stream_buffers" | |
116 ] | |
117 }, | |
118 { | |
119 "id": 3, | |
120 "features": [ | |
121 "set_texture_filter_before_generating_mipmap" | |
122 ] | |
123 }, | |
124 { | |
125 "id": 4, | |
126 "description": "Need to set the alpha to 255", | |
127 "features": [ | |
128 "clear_alpha_in_readpixels" | |
129 ] | |
130 }, | |
131 { | |
132 "id": 5, | |
133 "vendor_id": "0x10de", | |
134 "features": [ | |
135 "use_current_program_after_successful_link" | |
136 ] | |
137 }, | |
138 { | |
139 "id": 6, | |
140 "os": { | |
141 "type": "android" | |
142 }, | |
143 "gl_vendor": { | |
144 "op": "beginwith", | |
145 "value": "Qualcomm" | |
146 }, | |
147 "features": [ | |
148 "restore_scissor_on_fbo_change", | |
149 "flush_on_context_switch", | |
150 "delete_instead_of_resize_fbo" // Only need this on the ICS driver. | |
151 ] | |
152 }, | |
153 { | |
154 "id": 7, | |
155 "cr_bugs": [89557], | |
156 "os": { | |
157 "type": "macosx" | |
158 }, | |
159 "vendor_id": "0x10de", | |
160 "features": [ | |
161 "needs_offscreen_buffer_workaround" | |
162 ] | |
163 }, | |
164 { | |
165 "id": 8, | |
166 "os": { | |
167 "type": "macosx" | |
168 }, | |
169 "vendor_id": "0x1002", | |
170 "features": [ | |
171 "needs_glsl_built_in_function_emulation" | |
172 ] | |
173 }, | |
174 { | |
175 "id": 9, | |
176 "description": "Mac AMD drivers get gl_PointCoord backward, rdar://problem
/11883495", | |
177 "os": { | |
178 "type": "macosx" | |
179 }, | |
180 "vendor_id": "0x1002", | |
181 "features": [ | |
182 "reverse_point_sprite_coord_origin" | |
183 ] | |
184 }, | |
185 { | |
186 "id": 10, | |
187 "description": "Mac Intel drivers get gl_PointCoord backward, rdar://probl
em/11883495", | |
188 "os": { | |
189 "type": "macosx" | |
190 }, | |
191 "vendor_id": "0x8086", | |
192 "features": [ | |
193 "reverse_point_sprite_coord_origin" | |
194 ] | |
195 }, | |
196 { | |
197 "id": 11, | |
198 "os": { | |
199 "type": "macosx" | |
200 }, | |
201 "vendor_id": "0x8086", | |
202 "features": [ | |
203 "max_texture_size_limit_4096" | |
204 ] | |
205 }, | |
206 { | |
207 "id": 12, | |
208 "os": { | |
209 "type": "macosx" | |
210 }, | |
211 "vendor_id": "0x8086", | |
212 "features": [ | |
213 "max_cube_map_texture_size_limit_1024" | |
214 ] | |
215 }, | |
216 { | |
217 "id": 13, | |
218 "os": { | |
219 "type": "macosx", | |
220 "version": { | |
221 "op": "<", | |
222 "number": "10.7.3" | |
223 } | |
224 }, | |
225 "vendor_id": "0x8086", | |
226 "features": [ | |
227 "max_cube_map_texture_size_limit_512" | |
228 ] | |
229 }, | |
230 { | |
231 "id": 14, | |
232 "os": { | |
233 "type": "macosx" | |
234 }, | |
235 "vendor_id": "0x1002", | |
236 "features": [ | |
237 "max_texture_size_limit_4096", | |
238 "max_cube_map_texture_size_limit_4096" | |
239 ] | |
240 }, | |
241 { | |
242 "id": 15, | |
243 "description": "Some Android Qualcomm drivers falsely report GL_ANGLE_fram
ebuffer_multisample", | |
244 "cr_bugs": [165736], | |
245 "os": { | |
246 "type": "android" | |
247 }, | |
248 "gl_vendor": { | |
249 "op": "beginwith", | |
250 "value": "Qualcomm" | |
251 }, | |
252 "features": [ | |
253 "disable_angle_framebuffer_multisample" | |
254 ] | |
255 }, | |
256 { | |
257 "id": 16, | |
258 "description": "Intel drivers on Linux appear to be buggy", | |
259 "os": { | |
260 "type": "linux" | |
261 }, | |
262 "vendor_id": "0x8086", | |
263 "features": [ | |
264 "disable_ext_occlusion_query" | |
265 ] | |
266 }, | |
267 { | |
268 "id": 17, | |
269 "description": "Some drivers are unable to reset the D3D device in the GPU
process sandbox", | |
270 "os": { | |
271 "type": "win" | |
272 }, | |
273 "features": [ | |
274 "exit_on_context_lost" | |
275 ] | |
276 }, | |
277 { | |
278 "id": 18, | |
279 "description": "Everything except async + NPOT + multiple-of-8 textures ar
e brutally slow for Imagination drivers", | |
280 "os": { | |
281 "type": "android" | |
282 }, | |
283 "gl_vendor": { | |
284 "op": "beginwith", | |
285 "value": "Imagination" | |
286 }, | |
287 "features": [ | |
288 "enable_chromium_fast_npot_mo8_textures" | |
289 ] | |
290 }, | |
291 { | |
292 "id": 19, | |
293 "os": { | |
294 "type": "android" | |
295 }, | |
296 "gl_vendor": { | |
297 "op": "beginwith", | |
298 "value": "Qualcomm" | |
299 }, | |
300 "features": [ | |
301 "disable_depth_texture" | |
302 ] | |
303 }, | |
304 { | |
305 "id": 20, | |
306 "description": "Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X du
e to driver bugs.", | |
307 "os": { | |
308 "type": "macosx" | |
309 }, | |
310 "vendor_id": "0x10de", | |
311 "device_id": ["0x0fd5"], | |
312 "multi_gpu_category": "any", | |
313 "features": [ | |
314 "disable_ext_draw_buffers" | |
315 ] | |
316 }, | |
317 { | |
318 "id": 21, | |
319 "description": "Vivante GPUs are buggy with context switching.", | |
320 "cr_bugs": [179250, 235935], | |
321 "os": { | |
322 "type": "android" | |
323 }, | |
324 "gl_extensions": { | |
325 "op": "contains", | |
326 "value": "GL_VIV_shader_binary" | |
327 }, | |
328 "features": [ | |
329 "unbind_fbo_on_context_switch" | |
330 ] | |
331 }, | |
332 { | |
333 "id": 22, | |
334 "description": "Imagination drivers are buggy with context switching.", | |
335 "cr_bugs": [230896], | |
336 "os": { | |
337 "type": "android" | |
338 }, | |
339 "gl_vendor": { | |
340 "op": "beginwith", | |
341 "value": "Imagination" | |
342 }, | |
343 "features": [ | |
344 "unbind_fbo_on_context_switch" | |
345 ] | |
346 } | |
347 ] | |
348 } | |
349 | |
350 ); // LONG_STRING_CONST macro | |
351 | |
352 } // namespace content | |
353 | |
OLD | NEW |