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.
5 // Determines whether a certain driver bug exists in the current system.
6 // The format of a valid gpu_driver_bug_list.json file is defined in
7 // <gpu/config/gpu_control_list_format.txt>.
8 // The supported "features" can be found in
9 // <gpu/config/gpu_driver_bug_workaround_type.h>.
11 #include "gpu/config/gpu_control_list_jsons.h"
13 #define LONG_STRING_CONST(...) #__VA_ARGS__
17 const char kGpuDriverBugListJson
[] = LONG_STRING_CONST(
20 "name": "gpu driver bug list",
21 // Please update the version number whenever you change this file.
26 "description": "Imagination driver doesn't like uploading lots of buffer data constantly",
30 "gl_vendor": "Imagination.*",
32 "use_client_side_arrays_for_stream_buffers"
37 "description": "ARM driver doesn't like uploading lots of buffer data constantly",
43 "use_client_side_arrays_for_stream_buffers"
48 "description": "glGenerateMipmap leaks vram without setting texture filters on some Mac drivers",
49 "webkit_bugs": [48489],
59 "set_texture_filter_before_generating_mipmap"
64 "description": "glReadPixels incorrectly sets alpha to 0 on some drivers from a drawing buffer without alpha channel",
65 "webkit_bugs": [33416],
75 "clear_alpha_in_readpixels"
80 "description": "Always call glUseProgram after a successful link to avoid a driver bug",
82 "vendor_id": "0x10de",
95 "use_current_program_after_successful_link"
100 "description": "Restore scissor on FBO change with Qualcomm GPUs on older versions of Android",
101 "cr_bugs": [165493, 222018],
109 "gl_vendor": "Qualcomm.*",
111 "restore_scissor_on_fbo_change"
117 "description": "Work around a bug in offscreen buffers on NVIDIA GPUs on Macs",
121 "vendor_id": "0x10de",
123 "needs_offscreen_buffer_workaround"
128 "description": "A few built-in glsl functions on Mac behave incorrectly",
137 "vendor_id": "0x1002",
139 "needs_glsl_built_in_function_emulation"
144 "description": "AMD drivers get gl_PointCoord backward on OS X 10.8 or earlier",
153 "vendor_id": "0x1002",
155 "reverse_point_sprite_coord_origin"
160 "description": "Intel drivers get gl_PointCoord backward on OS X 10.8 or earlier",
169 "vendor_id": "0x8086",
171 "reverse_point_sprite_coord_origin"
176 "description": "Limit max texure size to 4096 on Macs with Intel GPUs",
184 "vendor_id": "0x8086",
186 "max_texture_size_limit_4096"
191 "description": "Limit max cube map texure size to 1024 on Macs with Intel GPUs",
195 "vendor_id": "0x8086",
197 "max_cube_map_texture_size_limit_1024"
202 "description": "Limit max cube map texure size to 512 on older Macs with Intel GPUs",
210 "vendor_id": "0x8086",
212 "max_cube_map_texture_size_limit_512"
217 "description": "Limit max texure size and cube map texture size to 4096 on Macs with AMD GPUs",
225 "vendor_id": "0x1002",
227 "max_texture_size_limit_4096",
228 "max_cube_map_texture_size_limit_4096"
233 "description": "EXT_occlusion_query appears to be buggy with Intel GPUs on Linux",
237 "vendor_id": "0x8086",
239 "disable_ext_occlusion_query"
244 "description": "Some drivers are unable to reset the D3D device in the GPU process sandbox",
249 "exit_on_context_lost"
254 "description": "Disable depth textures on Android with Qualcomm GPUs",
258 "gl_vendor": "Qualcomm.*",
260 "disable_depth_texture"
265 "description": "Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X due to driver bugs",
269 "vendor_id": "0x10de",
270 "device_id": ["0x0fd5"],
271 "multi_gpu_category": "any",
273 "disable_ext_draw_buffers"
278 "description": "Vivante GPUs are buggy with context switching",
279 "cr_bugs": [179250, 235935],
283 "gl_extensions": ".*GL_VIV_shader_binary.*",
285 "unbind_fbo_on_context_switch"
290 "description": "Imagination drivers are buggy with context switching",
295 "gl_vendor": "Imagination.*",
297 "unbind_fbo_on_context_switch"
303 "description": "Disable OES_standard_derivative on Intel Pineview M Gallium drivers",
307 "vendor_id": "0x8086",
308 "device_id": ["0xa011", "0xa012"],
310 "disable_oes_standard_derivatives"
316 "description": "Mali-400 drivers throw an error when a buffer object's size is set to 0",
320 "gl_vendor": "ARM.*",
321 "gl_renderer": ".*Mali-400.*",
323 "use_non_zero_size_for_client_side_stream_buffers"
329 "description": "PBO + Readpixels don't work on OS X 10.7",
338 "disable_async_readpixels"
343 "description": "Disable use of Direct3D 11 on Windows Vista and lower",
358 "description": "Async Readpixels with GL_BGRA format is broken on Haswell chipset on Macs",
362 "vendor_id": "0x8086",
363 "device_id": ["0x0402", "0x0406", "0x040a", "0x0412", "0x0416", "0x041a",
364 "0x0a04", "0x0a16", "0x0a22", "0x0a26", "0x0a2a"],
366 "swizzle_rgba_for_async_readpixels"
372 "description": "Multisampling is buggy on OSX when multiple monitors are connected",
377 "disable_multimonitor_multisampling"
382 "cr_bugs": [154715, 10068, 269829, 294779, 285292],
383 "description": "The Mali-Txxx driver does not guarantee flush ordering",
384 "gl_vendor": "ARM.*",
385 "gl_renderer": "Mali-T.*",
387 "use_virtualized_gl_contexts"
393 "description": "Share groups are not working on (older?) Broadcom drivers",
397 "gl_vendor": "Broadcom.*",
399 "use_virtualized_gl_contexts"
404 "description": "Share group-related crashes and poor context switching perf on Galaxy Nexus",
408 "gl_vendor": "Imagination.*",
410 "use_virtualized_gl_contexts"
415 "cr_bugs": [179250, 229643, 230896],
416 "description": "Share groups are not working on (older?) Vivante drivers",
420 "gl_extensions": ".*GL_VIV_shader_binary.*",
422 "use_virtualized_gl_contexts"
428 "description": "Share-group related crashes on older NVIDIA drivers",
436 "gl_vendor": "NVIDIA.*",
438 "use_virtualized_gl_contexts"
443 "cr_bugs": [163464, 233612],
444 "description": "Share-group related crashes on Qualcomm drivers",
452 "gl_vendor": "Qualcomm.*",
454 "use_virtualized_gl_contexts"
460 "description": "Program link fails in NVIDIA Linux if gl_Position is not set",
464 "vendor_id": "0x10de",
466 "init_gl_position_in_vertex_shader"
472 "description": "Non-virtual contexts on Qualcomm sometimes cause out-of-order frames",
476 "gl_vendor": "Qualcomm.*",
478 "use_virtualized_gl_contexts"
484 "description": "Multisampled renderbuffer allocation must be validated on some Macs",
489 "validate_multisample_buffer_allocation"
495 "description": "Framebuffer discarding causes flickering on old ARM drivers",
503 "gl_vendor": "ARM.*",
505 "disable_ext_discard_framebuffer"
511 "description": "Framebuffer discarding causes flickering on older IMG drivers",
515 "gl_vendor": "Imagination.*",
516 "gl_renderer": "PowerVR SGX 540",
518 "disable_ext_discard_framebuffer"
524 "description": "Framebuffer discarding doesn't accept trivial attachments on Vivante",
528 "gl_extensions": ".*GL_VIV_shader_binary.*",
530 "disable_ext_discard_framebuffer"
536 "description": "Framebuffer discarding causes jumpy scrolling on Mali drivers",
541 "disable_ext_discard_framebuffer"
547 "description": "Unfold short circuit on Mac OS X",
552 "unfold_short_circuit_as_ternary_operation"
557 "description": "Force to use discrete GPU on older MacBookPro models",
566 "machine_model_name": ["MacBookPro"],
567 "machine_model_version": {
582 "description": "The first draw operation from an idle state is slow",
586 "gl_vendor": "Qualcomm.*",
588 "wake_up_gpu_before_drawing"
593 "description": "TexSubImage2D() is faster for full uploads on ANGLE",
597 "gl_renderer": "ANGLE.*",
599 "texsubimage2d_faster_than_teximage2d"
604 "description": "ES3 MSAA is broken on Qualcomm",
608 "gl_vendor": "Qualcomm.*",
610 "disable_multisampling"
615 "cr_bugs": [124764, 349137],
616 "description": "Clear uniforms before first program use on all platforms",
629 "clear_uniforms_before_first_program_use"
635 "description": "Mesa drivers in Linux handle varyings without static use incorrectly",
639 "driver_vendor": "Mesa",
641 "count_all_in_varyings_packing"
647 "description": "Mesa drivers in ChromeOS handle varyings without static use incorrectly",
651 "driver_vendor": "Mesa",
653 "count_all_in_varyings_packing"
659 "description": "Mac drivers handle varyings without static use incorrectly",
664 "init_varyings_without_static_use"
669 "description": "Multisampling is buggy in ATI cards on older Mac OS X",
670 "cr_bugs": [67752, 83153],
678 "vendor_id": "0x1002",
680 "disable_multisampling"
685 "description": "Multisampling is buggy in Intel IvyBridge",
690 "vendor_id": "0x8086",
691 "device_id": ["0x0152", "0x0156", "0x015a", "0x0162", "0x0166"],
693 "disable_multisampling"
698 "description": "Multisampling is buggy on Mac OS X prior to 10.8.3",
699 "cr_bugs": [137303, 162466],
708 "disable_multisampling"
713 "description": "Shaders with sampler arrays indexing for-loop indices cause the GLSL compiler to crash on OS X",
714 "cr_bugs": [348198, 349137],
723 "unroll_for_loop_with_sampler_array_index"
728 "description": "Linux AMD drivers incorrectly return initial value of 1 for TEXTURE_MAX_ANISOTROPY",
733 "vendor_id": "0x1002",
735 "init_texture_max_anisotropy"
740 "description": "Linux NVIDIA drivers don't have the correct defaults for vertex attributes",
745 "vendor_id": "0x10de",
747 "init_vertex_attributes"
752 "description": "Force glFinish() after compositing on older OS X on Intel GPU",
761 "vendor_id": "0x8086",
762 "multi_gpu_category": "active",
764 "force_gl_finish_after_compositing"
769 "description": "Disable partial swaps on linux drivers",
774 "driver_vendor": "Mesa",
776 "disable_post_sub_buffers_for_onscreen_surfaces"
781 "description": "Some shaders in Skia need more than the min available vertex and fragment shader uniform vectors in case of OSMesa",
783 "driver_vendor": "osmesa",
785 "max_fragment_uniform_vectors_32",
786 "max_varying_vectors_16",
787 "max_vertex_uniform_vectors_256"
792 "description": "Disable D3D11 on older nVidia drivers",
797 "vendor_id": "0x10de",
800 "value": "8.17.12.6973"
808 "description": "Vivante's support of OES_standard_derivatives is buggy",
813 "gl_extensions": ".*GL_VIV_shader_binary.*",
815 "disable_oes_standard_derivatives"
820 "description": "Use virtual contexts on NVIDIA with GLES 3.1",
830 "gl_vendor": "NVIDIA.*",
832 "use_virtualized_gl_contexts"
835 ) // LONG_STRING_CONST macro
836 // Avoid C2026 (string too big) error on VisualStudio.
840 "cr_bugs": [278606, 382686],
841 "description": "Testing EGL sync fences was broken on most Qualcomm drivers",
849 "gl_vendor": "Qualcomm.*",
851 "disable_egl_khr_fence_sync"
856 "description": "Mali-400 support of EXT_multisampled_render_to_texture is buggy on Android < 4.3",
865 "gl_vendor": "ARM.*",
866 "gl_renderer": ".*Mali-400.*",
868 "disable_multisampling"
874 "description": "Testing EGL sync fences was broken on IMG",
882 "gl_vendor": "Imagination Technologies.*",
884 "disable_egl_khr_fence_sync"
889 "cr_bugs": [378691, 373360, 371530, 398964],
890 "description": "Testing fences was broken on Mali ES2 drivers",
898 "gl_vendor": "ARM.*",
899 "gl_renderer": "Mali.*",
906 "disable_egl_khr_fence_sync"
911 "cr_bugs": [378691, 373360, 371530],
912 "description": "Testing fences was broken on Broadcom drivers",
920 "gl_vendor": "Broadcom.*",
922 "disable_egl_khr_fence_sync"
927 "description": "PBO mappings segfault on certain older Qualcomm drivers",
936 "gl_vendor": "Qualcomm.*",
938 "disable_async_readpixels"
943 "description": "Disable use of Direct3D 11 on Matrox video cards",
948 "vendor_id": "0x102b",
955 "description": "Disable use of Direct3D 11 on older AMD drivers",
960 "vendor_id": "0x1002",
971 "description": "Always rewrite vec/mat constructors to be consistent",
974 "scalarize_vec_and_mat_constructor_args"
979 "description": "Mac drivers handle struct scopes incorrectly",
985 "regenerate_struct_names"
990 "description": "Linux AMD drivers handle struct scopes incorrectly",
995 "vendor_id": "0x1002",
997 "regenerate_struct_names"
1002 "cr_bugs": [150500, 414816],
1003 "description": "ETC1 non-power-of-two sized textures crash older IMG drivers",
1007 "gl_vendor": "Imagination.*",
1008 "gl_renderer": "PowerVR SGX 5.*",
1010 "etc1_power_of_two_only"
1015 "description": "Old Intel drivers cannot reliably support D3D11",
1016 "cr_bugs": [363721],
1020 "vendor_id": "0x8086",
1031 "description": "The GL implementation on the Android emulator has problems with PBOs.",
1032 "cr_bugs": [340882],
1036 "gl_vendor": "VMware.*",
1037 "gl_renderer": "Gallium.*",
1044 "disable_async_readpixels"
1049 "description": "Disable EGL_KHR_wait_sync on NVIDIA with GLES 3.1",
1050 "cr_bugs": [433057],
1058 "gl_vendor": "NVIDIA.*",
1065 "disable_egl_khr_wait_sync"
1070 "cr_bugs": [421271],
1071 "description": "glClear does not always work on these drivers",
1080 "gl_vendor": "Imagination.*",
1087 "description": "glBindFramebuffer sometimes requires a glBegin/End to take effect",
1088 "cr_bugs": [435786],
1093 "gl_begin_gl_end_on_fbo_change_to_backbuffer"
1098 "description": "Multisampling has poor performance in Intel BayTrail",
1099 "cr_bugs": [443517],
1103 "gl_vendor": "Intel",
1104 "gl_renderer": "Intel.*BayTrail",
1106 "disable_multisampling"
1111 "description": "PowerVR SGX 540 drivers throw GL_OUT_OF_MEMORY error when a buffer object's size is set to 0",
1112 "cr_bugs": [451501],
1116 "gl_vendor": "Imagination.*",
1117 "gl_renderer": "PowerVR SGX 540",
1119 "use_non_zero_size_for_client_side_stream_buffers"
1124 "description": "Qualcomm driver before Lollipop deletes egl sync objects after context destruction",
1125 "cr_bugs": [453857],
1133 "gl_vendor": "Qualcomm.*",
1135 "ignore_egl_sync_failures"
1140 "description": "Disable Direct3D11 on systems with AMD switchable graphics",
1141 "cr_bugs": [451420],
1145 "multi_gpu_style": "amd_switchable",
1152 "description": "The Mali-Txxx driver hangs when reading from currently displayed buffer",
1153 "cr_bugs": [457511],
1157 "gl_vendor": "ARM.*",
1158 "gl_renderer": "Mali-T.*",
1160 "disable_post_sub_buffers_for_onscreen_surfaces"
1165 "description": "Adreno 420 driver loses FBO attachment contents on bound FBO deletion",
1166 "cr_bugs": [457027],
1174 "gl_vendor": "Qualcomm.*",
1175 "gl_renderer": ".*420",
1177 "unbind_attachments_on_bound_render_fbo_delete"
1183 ); // LONG_STRING_CONST macro