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 driver prior to Lollipop",
612 "gl_vendor": "Qualcomm.*",
614 "disable_multisampling"
619 "cr_bugs": [124764, 349137],
620 "description": "Clear uniforms before first program use on all platforms",
633 "clear_uniforms_before_first_program_use"
639 "description": "Mesa drivers in Linux handle varyings without static use incorrectly",
643 "driver_vendor": "Mesa",
645 "count_all_in_varyings_packing"
651 "description": "Mesa drivers in ChromeOS handle varyings without static use incorrectly",
655 "driver_vendor": "Mesa",
657 "count_all_in_varyings_packing"
663 "description": "Mac drivers handle varyings without static use incorrectly",
668 "init_varyings_without_static_use"
673 "description": "Multisampling is buggy in ATI cards on older Mac OS X",
674 "cr_bugs": [67752, 83153],
682 "vendor_id": "0x1002",
684 "disable_multisampling"
689 "description": "Multisampling is buggy in Intel IvyBridge",
694 "vendor_id": "0x8086",
695 "device_id": ["0x0152", "0x0156", "0x015a", "0x0162", "0x0166"],
697 "disable_multisampling"
702 "description": "Multisampling is buggy on Mac OS X prior to 10.8.3",
703 "cr_bugs": [137303, 162466],
712 "disable_multisampling"
717 "description": "Shaders with sampler arrays indexing for-loop indices cause the GLSL compiler to crash on OS X",
718 "cr_bugs": [348198, 349137],
727 "unroll_for_loop_with_sampler_array_index"
732 "description": "Linux AMD drivers incorrectly return initial value of 1 for TEXTURE_MAX_ANISOTROPY",
737 "vendor_id": "0x1002",
739 "init_texture_max_anisotropy"
744 "description": "Linux NVIDIA drivers don't have the correct defaults for vertex attributes",
749 "vendor_id": "0x10de",
751 "init_vertex_attributes"
756 "description": "Force glFinish() after compositing on older OS X on Intel GPU",
765 "vendor_id": "0x8086",
766 "multi_gpu_category": "active",
768 "force_gl_finish_after_compositing"
773 "description": "Disable partial swaps on linux drivers",
778 "driver_vendor": "Mesa",
780 "disable_post_sub_buffers_for_onscreen_surfaces"
785 "description": "Some shaders in Skia need more than the min available vertex and fragment shader uniform vectors in case of OSMesa",
787 "driver_vendor": "osmesa",
789 "max_fragment_uniform_vectors_32",
790 "max_varying_vectors_16",
791 "max_vertex_uniform_vectors_256"
796 "description": "Disable D3D11 on older nVidia drivers",
801 "vendor_id": "0x10de",
804 "value": "8.17.12.6973"
812 "description": "Vivante's support of OES_standard_derivatives is buggy",
817 "gl_extensions": ".*GL_VIV_shader_binary.*",
819 "disable_oes_standard_derivatives"
824 "description": "Use virtual contexts on NVIDIA with GLES 3.1",
834 "gl_vendor": "NVIDIA.*",
836 "use_virtualized_gl_contexts"
839 ) // LONG_STRING_CONST macro
840 // Avoid C2026 (string too big) error on VisualStudio.
844 "cr_bugs": [278606, 382686],
845 "description": "Testing EGL sync fences was broken on most Qualcomm drivers",
853 "gl_vendor": "Qualcomm.*",
855 "disable_egl_khr_fence_sync"
860 "description": "Mali-400 support of EXT_multisampled_render_to_texture is buggy on Android < 4.3",
869 "gl_vendor": "ARM.*",
870 "gl_renderer": ".*Mali-400.*",
872 "disable_multisampling"
878 "description": "Testing EGL sync fences was broken on IMG",
886 "gl_vendor": "Imagination Technologies.*",
888 "disable_egl_khr_fence_sync"
893 "cr_bugs": [378691, 373360, 371530, 398964],
894 "description": "Testing fences was broken on Mali ES2 drivers",
902 "gl_vendor": "ARM.*",
903 "gl_renderer": "Mali.*",
910 "disable_egl_khr_fence_sync"
915 "cr_bugs": [378691, 373360, 371530],
916 "description": "Testing fences was broken on Broadcom drivers",
924 "gl_vendor": "Broadcom.*",
926 "disable_egl_khr_fence_sync"
931 "description": "PBO mappings segfault on certain older Qualcomm drivers",
940 "gl_vendor": "Qualcomm.*",
942 "disable_async_readpixels"
947 "description": "Disable use of Direct3D 11 on Matrox video cards",
952 "vendor_id": "0x102b",
959 "description": "Disable use of Direct3D 11 on older AMD drivers",
964 "vendor_id": "0x1002",
975 "description": "Always rewrite vec/mat constructors to be consistent",
978 "scalarize_vec_and_mat_constructor_args"
983 "description": "Mac drivers handle struct scopes incorrectly",
989 "regenerate_struct_names"
994 "description": "Linux AMD drivers handle struct scopes incorrectly",
999 "vendor_id": "0x1002",
1001 "regenerate_struct_names"
1006 "cr_bugs": [150500, 414816],
1007 "description": "ETC1 non-power-of-two sized textures crash older IMG drivers",
1011 "gl_vendor": "Imagination.*",
1012 "gl_renderer": "PowerVR SGX 5.*",
1014 "etc1_power_of_two_only"
1019 "description": "Old Intel drivers cannot reliably support D3D11",
1020 "cr_bugs": [363721],
1024 "vendor_id": "0x8086",
1035 "description": "The GL implementation on the Android emulator has problems with PBOs.",
1036 "cr_bugs": [340882],
1040 "gl_vendor": "VMware.*",
1041 "gl_renderer": "Gallium.*",
1048 "disable_async_readpixels"
1053 "description": "Disable EGL_KHR_wait_sync on NVIDIA with GLES 3.1",
1054 "cr_bugs": [433057],
1062 "gl_vendor": "NVIDIA.*",
1069 "disable_egl_khr_wait_sync"
1074 "cr_bugs": [421271],
1075 "description": "glClear does not always work on these drivers",
1084 "gl_vendor": "Imagination.*",
1091 "description": "glBindFramebuffer sometimes requires a glBegin/End to take effect",
1092 "cr_bugs": [435786],
1097 "gl_begin_gl_end_on_fbo_change_to_backbuffer"
1102 "description": "Multisampling has poor performance in Intel BayTrail",
1103 "cr_bugs": [443517],
1107 "gl_vendor": "Intel",
1108 "gl_renderer": "Intel.*BayTrail",
1110 "disable_multisampling"
1115 "description": "PowerVR SGX 540 drivers throw GL_OUT_OF_MEMORY error when a buffer object's size is set to 0",
1116 "cr_bugs": [451501],
1120 "gl_vendor": "Imagination.*",
1121 "gl_renderer": "PowerVR SGX 540",
1123 "use_non_zero_size_for_client_side_stream_buffers"
1128 "description": "Qualcomm driver before Lollipop deletes egl sync objects after context destruction",
1129 "cr_bugs": [453857],
1137 "gl_vendor": "Qualcomm.*",
1139 "ignore_egl_sync_failures"
1144 "description": "Disable Direct3D11 on systems with AMD switchable graphics",
1145 "cr_bugs": [451420],
1149 "multi_gpu_style": "amd_switchable",
1156 "description": "The Mali-Txxx driver hangs when reading from currently displayed buffer",
1157 "cr_bugs": [457511],
1161 "gl_vendor": "ARM.*",
1162 "gl_renderer": "Mali-T.*",
1164 "disable_post_sub_buffers_for_onscreen_surfaces"
1169 "description": "Adreno 420 driver loses FBO attachment contents on bound FBO deletion",
1170 "cr_bugs": [457027],
1178 "gl_vendor": "Qualcomm.*",
1179 "gl_renderer": ".*420",
1181 "unbind_attachments_on_bound_render_fbo_delete"
1186 "description": "Adreno 420 driver drops draw calls after FBO invalidation",
1187 "cr_bugs": [443060],
1191 "gl_vendor": "Qualcomm.*",
1192 "gl_renderer": ".*420",
1194 "disable_fbo_invalidations"
1200 ); // LONG_STRING_CONST macro