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"
262 "disabled_extensions": [
263 "GL_OES_depth_texture"
268 "description": "Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X due to driver bugs",
272 "vendor_id": "0x10de",
273 "device_id": ["0x0fd5"],
274 "multi_gpu_category": "any",
276 "disable_ext_draw_buffers"
281 "description": "Vivante GPUs are buggy with context switching",
282 "cr_bugs": [179250, 235935],
286 "gl_extensions": ".*GL_VIV_shader_binary.*",
288 "unbind_fbo_on_context_switch"
293 "description": "Imagination drivers are buggy with context switching",
298 "gl_vendor": "Imagination.*",
300 "unbind_fbo_on_context_switch"
306 "description": "Disable OES_standard_derivative on Intel Pineview M Gallium drivers",
310 "vendor_id": "0x8086",
311 "device_id": ["0xa011", "0xa012"],
313 "disable_oes_standard_derivatives"
319 "description": "Mali-400 drivers throw an error when a buffer object's size is set to 0",
323 "gl_vendor": "ARM.*",
324 "gl_renderer": ".*Mali-400.*",
326 "use_non_zero_size_for_client_side_stream_buffers"
332 "description": "PBO + Readpixels don't work on OS X 10.7",
341 "disable_async_readpixels"
346 "description": "Disable use of Direct3D 11 on Windows Vista and lower",
361 "description": "Async Readpixels with GL_BGRA format is broken on Haswell chipset on Macs",
365 "vendor_id": "0x8086",
366 "device_id": ["0x0402", "0x0406", "0x040a", "0x0412", "0x0416", "0x041a",
367 "0x0a04", "0x0a16", "0x0a22", "0x0a26", "0x0a2a"],
369 "swizzle_rgba_for_async_readpixels"
375 "description": "Multisampling is buggy on OSX when multiple monitors are connected",
380 "disable_multimonitor_multisampling"
385 "cr_bugs": [154715, 10068, 269829, 294779, 285292],
386 "description": "The Mali-Txxx driver does not guarantee flush ordering",
387 "gl_vendor": "ARM.*",
388 "gl_renderer": "Mali-T.*",
390 "use_virtualized_gl_contexts"
396 "description": "Share groups are not working on (older?) Broadcom drivers",
400 "gl_vendor": "Broadcom.*",
402 "use_virtualized_gl_contexts"
407 "description": "Share group-related crashes and poor context switching perf on Galaxy Nexus",
411 "gl_vendor": "Imagination.*",
413 "use_virtualized_gl_contexts"
418 "cr_bugs": [179250, 229643, 230896],
419 "description": "Share groups are not working on (older?) Vivante drivers",
423 "gl_extensions": ".*GL_VIV_shader_binary.*",
425 "use_virtualized_gl_contexts"
431 "description": "Share-group related crashes on older NVIDIA drivers",
439 "gl_vendor": "NVIDIA.*",
441 "use_virtualized_gl_contexts"
446 "cr_bugs": [163464, 233612],
447 "description": "Share-group related crashes on Qualcomm drivers",
455 "gl_vendor": "Qualcomm.*",
457 "use_virtualized_gl_contexts"
463 "description": "Program link fails in NVIDIA Linux if gl_Position is not set",
467 "vendor_id": "0x10de",
469 "init_gl_position_in_vertex_shader"
475 "description": "Non-virtual contexts on Qualcomm sometimes cause out-of-order frames",
479 "gl_vendor": "Qualcomm.*",
481 "use_virtualized_gl_contexts"
487 "description": "Multisampled renderbuffer allocation must be validated on some Macs",
492 "validate_multisample_buffer_allocation"
498 "description": "Framebuffer discarding causes flickering on old ARM drivers",
506 "gl_vendor": "ARM.*",
508 "disable_discard_framebuffer"
513 "cr_bugs": [290876, 488463],
514 "description": "Framebuffer discarding causes flickering on older IMG drivers",
518 "gl_vendor": "Imagination.*",
519 "gl_renderer": "PowerVR SGX 5.*",
521 "disable_discard_framebuffer"
527 "description": "Framebuffer discarding doesn't accept trivial attachments on Vivante",
531 "gl_extensions": ".*GL_VIV_shader_binary.*",
533 "disable_discard_framebuffer"
539 "description": "Framebuffer discarding causes jumpy scrolling on Mali drivers",
544 "disable_discard_framebuffer"
550 "description": "Unfold short circuit on Mac OS X",
555 "unfold_short_circuit_as_ternary_operation"
560 "description": "Force to use discrete GPU on older MacBookPro models",
569 "machine_model_name": ["MacBookPro"],
570 "machine_model_version": {
585 "description": "The first draw operation from an idle state is slow",
589 "gl_vendor": "Qualcomm.*",
591 "wake_up_gpu_before_drawing"
596 "description": "TexSubImage is faster for full uploads on ANGLE",
600 "gl_renderer": "ANGLE.*",
602 "texsubimage_faster_than_teximage"
607 "description": "ES3 MSAA is broken on Qualcomm",
611 "gl_vendor": "Qualcomm.*",
613 "disable_chromium_framebuffer_multisample"
618 "cr_bugs": [124764, 349137],
619 "description": "Clear uniforms before first program use on all platforms",
632 "clear_uniforms_before_first_program_use"
638 "description": "Mesa drivers in Linux handle varyings without static use incorrectly",
642 "driver_vendor": "Mesa",
644 "count_all_in_varyings_packing"
650 "description": "Mesa drivers in ChromeOS handle varyings without static use incorrectly",
654 "driver_vendor": "Mesa",
656 "count_all_in_varyings_packing"
662 "description": "Mac drivers handle varyings without static use incorrectly",
667 "init_varyings_without_static_use"
672 "description": "Multisampling is buggy in ATI cards on older Mac OS X",
673 "cr_bugs": [67752, 83153],
681 "vendor_id": "0x1002",
683 "disable_chromium_framebuffer_multisample"
688 "description": "Multisampling is buggy in Intel IvyBridge",
693 "vendor_id": "0x8086",
694 "device_id": ["0x0152", "0x0156", "0x015a", "0x0162", "0x0166"],
696 "disable_chromium_framebuffer_multisample"
701 "description": "Multisampling is buggy on Mac OS X prior to 10.8.3",
702 "cr_bugs": [137303, 162466],
711 "disable_chromium_framebuffer_multisample"
716 "description": "Shaders with sampler arrays indexing for-loop indices cause the GLSL compiler to crash on OS X",
717 "cr_bugs": [348198, 349137],
726 "unroll_for_loop_with_sampler_array_index"
731 "description": "Linux AMD drivers incorrectly return initial value of 1 for TEXTURE_MAX_ANISOTROPY",
736 "vendor_id": "0x1002",
738 "init_texture_max_anisotropy"
743 "description": "Linux NVIDIA drivers don't have the correct defaults for vertex attributes",
748 "vendor_id": "0x10de",
750 "init_vertex_attributes"
755 "description": "Force glFinish() after compositing on older OS X on Intel GPU",
764 "vendor_id": "0x8086",
765 "multi_gpu_category": "active",
767 "force_gl_finish_after_compositing"
772 "description": "Disable partial swaps on linux drivers",
777 "driver_vendor": "Mesa",
779 "disable_post_sub_buffers_for_onscreen_surfaces"
784 "description": "Some shaders in Skia need more than the min available vertex and fragment shader uniform vectors in case of OSMesa",
786 "driver_vendor": "osmesa",
788 "max_fragment_uniform_vectors_32",
789 "max_varying_vectors_16",
790 "max_vertex_uniform_vectors_256"
795 "description": "Disable D3D11 on older nVidia drivers",
800 "vendor_id": "0x10de",
803 "value": "8.17.12.6973"
811 "description": "Vivante's support of OES_standard_derivatives is buggy",
816 "gl_extensions": ".*GL_VIV_shader_binary.*",
818 "disable_oes_standard_derivatives"
823 "description": "Use virtual contexts on NVIDIA with GLES 3.1",
833 "gl_vendor": "NVIDIA.*",
835 "use_virtualized_gl_contexts"
838 ) // LONG_STRING_CONST macro
839 // Avoid C2026 (string too big) error on VisualStudio.
843 "cr_bugs": [278606, 382686],
844 "description": "Testing EGL sync fences was broken on most Qualcomm drivers",
852 "gl_vendor": "Qualcomm.*",
854 "disable_egl_khr_fence_sync"
859 "description": "Mali-400 support of EXT_multisampled_render_to_texture is buggy on Android < 4.3",
868 "gl_vendor": "ARM.*",
869 "gl_renderer": ".*Mali-400.*",
871 "disable_multisampled_render_to_texture"
877 "description": "Testing EGL sync fences was broken on IMG",
885 "gl_vendor": "Imagination Technologies.*",
887 "disable_egl_khr_fence_sync"
892 "cr_bugs": [378691, 373360, 371530, 398964],
893 "description": "Testing fences was broken on Mali ES2 drivers",
901 "gl_vendor": "ARM.*",
902 "gl_renderer": "Mali.*",
909 "disable_egl_khr_fence_sync"
914 "cr_bugs": [378691, 373360, 371530],
915 "description": "Testing fences was broken on Broadcom drivers",
923 "gl_vendor": "Broadcom.*",
925 "disable_egl_khr_fence_sync"
930 "description": "PBO mappings segfault on certain older Qualcomm drivers",
939 "gl_vendor": "Qualcomm.*",
941 "disable_async_readpixels"
946 "description": "Disable use of Direct3D 11 on Matrox video cards",
951 "vendor_id": "0x102b",
958 "description": "Disable use of Direct3D 11 on older AMD drivers",
963 "vendor_id": "0x1002",
974 "description": "Always rewrite vec/mat constructors to be consistent",
977 "scalarize_vec_and_mat_constructor_args"
982 "description": "Mac drivers handle struct scopes incorrectly",
988 "regenerate_struct_names"
993 "description": "Linux AMD drivers handle struct scopes incorrectly",
998 "vendor_id": "0x1002",
1000 "regenerate_struct_names"
1005 "cr_bugs": [150500, 414816],
1006 "description": "ETC1 non-power-of-two sized textures crash older IMG drivers",
1010 "gl_vendor": "Imagination.*",
1011 "gl_renderer": "PowerVR SGX 5.*",
1013 "etc1_power_of_two_only"
1018 "description": "Old Intel drivers cannot reliably support D3D11",
1019 "cr_bugs": [363721],
1023 "vendor_id": "0x8086",
1034 "description": "The GL implementation on the Android emulator has problems with PBOs.",
1035 "cr_bugs": [340882],
1039 "gl_vendor": "VMware.*",
1040 "gl_renderer": "Gallium.*",
1047 "disable_async_readpixels"
1052 "description": "Disable EGL_KHR_wait_sync on NVIDIA with GLES 3.1",
1053 "cr_bugs": [433057],
1061 "gl_vendor": "NVIDIA.*",
1068 "disable_egl_khr_wait_sync"
1073 "cr_bugs": [421271],
1074 "description": "glClear does not always work on these drivers",
1083 "gl_vendor": "Imagination.*",
1090 "description": "glBindFramebuffer sometimes requires a glBegin/End to take effect",
1091 "cr_bugs": [435786],
1096 "gl_begin_gl_end_on_fbo_change_to_backbuffer"
1101 "description": "Multisampling has poor performance in Intel BayTrail",
1102 "cr_bugs": [443517],
1106 "gl_vendor": "Intel",
1107 "gl_renderer": "Intel.*BayTrail",
1109 "disable_chromium_framebuffer_multisample"
1114 "description": "PowerVR SGX 540 drivers throw GL_OUT_OF_MEMORY error when a buffer object's size is set to 0",
1115 "cr_bugs": [451501],
1119 "gl_vendor": "Imagination.*",
1120 "gl_renderer": "PowerVR SGX 540",
1122 "use_non_zero_size_for_client_side_stream_buffers"
1127 "description": "Qualcomm driver before Lollipop deletes egl sync objects after context destruction",
1128 "cr_bugs": [453857],
1136 "gl_vendor": "Qualcomm.*",
1138 "ignore_egl_sync_failures"
1143 "description": "Disable Direct3D11 on systems with AMD switchable graphics",
1144 "cr_bugs": [451420],
1148 "multi_gpu_style": "amd_switchable",
1155 "description": "The Mali-Txxx driver hangs when reading from currently displayed buffer",
1156 "cr_bugs": [457511],
1160 "gl_vendor": "ARM.*",
1161 "gl_renderer": "Mali-T.*",
1163 "disable_post_sub_buffers_for_onscreen_surfaces"
1168 "description": "Adreno 420 driver loses FBO attachment contents on bound FBO deletion",
1169 "cr_bugs": [457027],
1177 "gl_renderer": "Adreno \\(TM\\) 4.*",
1179 "unbind_attachments_on_bound_render_fbo_delete"
1184 "description": "Adreno 420 driver drops draw calls after FBO invalidation",
1185 "cr_bugs": [443060],
1189 "gl_renderer": "Adreno \\(TM\\) 4.*",
1191 "disable_discard_framebuffer"
1196 "description": "EXT_occlusion_query hangs on MediaTek MT8135 pre-Lollipop",
1204 "gl_vendor": "Imagination.*",
1205 "gl_renderer": "PowerVR Rogue Han",
1207 "disable_ext_occlusion_query"
1212 "cr_bugs": [449488,451230],
1213 "description": "Framebuffer discarding causes corruption on Mali-4xx",
1214 "gl_renderer": "Mali-4.*",
1219 "disable_discard_framebuffer"
1224 "description": "EXT_occlusion_query hangs on PowerVR SGX 544 (IMG) drivers",
1228 "gl_vendor": "Imagination.*",
1229 "gl_renderer": "PowerVR SGX 544",
1231 "disable_ext_occlusion_query"
1233 "disabled_extensions": [
1234 "EXT_occlusion_query_boolean"
1239 "description": "Workaround IMG PowerVR G6xxx drivers bugs",
1240 "cr_bugs": [480992],
1249 "gl_vendor": "Imagination.*",
1250 "gl_renderer": "PowerVR Rogue.*",
1257 "avoid_egl_image_target_texture_reuse",
1258 "disable_egl_khr_wait_sync"
1263 "cr_bugs": [449150],
1264 "description": "Mali-400 does not support GL_RGB format",
1265 "gl_vendor": "ARM.*",
1266 "gl_renderer": ".*Mali-400.*",
1268 "disable_gl_rgb_format"
1273 "description": "MakeCurrent is slow on Linux",
1278 "use_virtualized_gl_contexts"
1283 "description": "EGL Sync server causes crashes on Adreno 3xx drivers",
1284 "cr_bugs": [482298],
1288 "gl_vendor": "Qualcomm.*",
1289 "gl_renderer": "Adreno \\(TM\\) 3.*",
1295 "disable_egl_khr_wait_sync"
1300 "description": "Discard Framebuffer breaks WebGL on Mali-400 Linux",
1301 "cr_bugs": [485814],
1305 "gl_vendor": "ARM.*",
1306 "gl_renderer": ".*Mali-400.*",
1308 "disable_discard_framebuffer"
1313 "cr_bugs": [477514],
1314 "description": "EXT_disjoint_timer_query fails after 2 queries on adreno 330 in lollypop",
1322 "gl_vendor": "Qualcomm.*",
1323 "gl_renderer": ".*330",
1324 "disabled_extensions": [
1325 "GL_EXT_disjoint_timer_query"
1330 "cr_bugs": [477514],
1331 "description": "EXT_disjoint_timer_query fails after 2 queries on adreno 420",
1335 "gl_renderer": "Adreno \\(TM\\) 4.*",
1336 "disabled_extensions": [
1337 "GL_EXT_disjoint_timer_query"
1342 "cr_bugs": [489871],
1343 "description": "Vivante GC1000 support of EXT_multisampled_render_to_texture is buggy",
1347 "gl_vendor": "Vivante Corporation",
1348 "gl_renderer": "Vivante GC1000",
1350 "disable_multisampled_render_to_texture"
1355 "cr_bugs": [462553],
1356 "description": "glGetIntegerv with GL_GPU_DISJOINT_EXT causes GL_INVALID_ENUM error",
1360 "gl_vendor": "NVIDIA.*",
1366 "disabled_extensions": [
1367 "GL_EXT_disjoint_timer_query"
1372 "description": "Adreno 420 support for EXT_multisampled_render_to_texture is buggy on Android < 5.1",
1373 "cr_bugs": [490379],
1381 "gl_renderer": "Adreno \\(TM\\) 4.*",
1383 "disable_multisampled_render_to_texture"
1388 "description": "GL_KHR_blend_equation_advanced breaks blending on Adreno 4xx",
1389 "cr_bugs": [488485],
1393 "gl_vendor": "Qualcomm.*",
1394 "gl_renderer": ".*4\\d\\d",
1396 "disable_blend_equation_advanced"
1401 "cr_bugs": [477306],
1402 "description": "NVIDIA 331 series drivers shader compiler may crash when attempting to optimize pow()",
1410 "vendor_id": "0x10de",
1412 "remove_pow_with_constant_exponent"
1417 "description": "Context lost recovery often fails on Mali-400 on Android.",
1418 "cr_bugs": [496438],
1422 "gl_vendor": "ARM.*",
1423 "gl_renderer": ".*Mali-400.*",
1425 "exit_on_context_lost"
1431 ); // LONG_STRING_CONST macro