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",
238 "disabled_extensions": [
239 "GL_ARB_occlusion_query2",
240 "GL_ARB_occlusion_query"
245 "description": "Some drivers are unable to reset the D3D device in the GPU process sandbox",
250 "exit_on_context_lost"
255 "description": "Disable depth textures on Android with Qualcomm GPUs",
259 "gl_vendor": "Qualcomm.*",
261 "disable_depth_texture"
263 "disabled_extensions": [
264 "GL_OES_depth_texture"
269 "description": "Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X due to driver bugs",
273 "vendor_id": "0x10de",
274 "device_id": ["0x0fd5"],
275 "multi_gpu_category": "any",
277 "disable_ext_draw_buffers"
282 "description": "Vivante GPUs are buggy with context switching",
283 "cr_bugs": [179250, 235935],
287 "gl_extensions": ".*GL_VIV_shader_binary.*",
289 "unbind_fbo_on_context_switch"
294 "description": "Imagination drivers are buggy with context switching",
299 "gl_vendor": "Imagination.*",
301 "unbind_fbo_on_context_switch"
307 "description": "Disable OES_standard_derivative on Intel Pineview M Gallium drivers",
311 "vendor_id": "0x8086",
312 "device_id": ["0xa011", "0xa012"],
313 "disabled_extensions": [
314 "GL_OES_standard_derivatives"
320 "description": "Mali-4xx drivers throw an error when a buffer object's size is set to 0",
324 "gl_vendor": "ARM.*",
325 "gl_renderer": ".*Mali-4.*",
327 "use_non_zero_size_for_client_side_stream_buffers"
333 "description": "PBO + Readpixels don't work on OS X 10.7",
342 "disable_async_readpixels"
347 "description": "Disable use of Direct3D 11 on Windows Vista and lower",
362 "description": "Async Readpixels with GL_BGRA format is broken on Haswell chipset on Macs",
366 "vendor_id": "0x8086",
367 "device_id": ["0x0402", "0x0406", "0x040a", "0x0412", "0x0416", "0x041a",
368 "0x0a04", "0x0a16", "0x0a22", "0x0a26", "0x0a2a"],
370 "swizzle_rgba_for_async_readpixels"
376 "description": "Multisampling is buggy on OSX when multiple monitors are connected",
381 "disable_multimonitor_multisampling"
386 "cr_bugs": [154715, 10068, 269829, 294779, 285292],
387 "description": "The Mali-Txxx driver does not guarantee flush ordering",
388 "gl_vendor": "ARM.*",
389 "gl_renderer": "Mali-T.*",
391 "use_virtualized_gl_contexts"
397 "description": "Share groups are not working on (older?) Broadcom drivers",
401 "gl_vendor": "Broadcom.*",
403 "use_virtualized_gl_contexts"
408 "description": "Share group-related crashes and poor context switching perf on Galaxy Nexus",
412 "gl_vendor": "Imagination.*",
414 "use_virtualized_gl_contexts"
419 "cr_bugs": [179250, 229643, 230896],
420 "description": "Share groups are not working on (older?) Vivante drivers",
424 "gl_extensions": ".*GL_VIV_shader_binary.*",
426 "use_virtualized_gl_contexts"
432 "description": "Share-group related crashes on older NVIDIA drivers",
440 "gl_vendor": "NVIDIA.*",
442 "use_virtualized_gl_contexts"
447 "cr_bugs": [163464, 233612],
448 "description": "Share-group related crashes on Qualcomm drivers",
456 "gl_vendor": "Qualcomm.*",
458 "use_virtualized_gl_contexts"
464 "description": "Program link fails in NVIDIA Linux if gl_Position is not set",
468 "vendor_id": "0x10de",
470 "init_gl_position_in_vertex_shader"
476 "description": "Non-virtual contexts on Qualcomm sometimes cause out-of-order frames",
480 "gl_vendor": "Qualcomm.*",
482 "use_virtualized_gl_contexts"
488 "description": "Multisampled renderbuffer allocation must be validated on some Macs",
493 "validate_multisample_buffer_allocation"
499 "description": "Framebuffer discarding causes flickering on old ARM drivers",
507 "gl_vendor": "ARM.*",
509 "disable_discard_framebuffer"
514 "cr_bugs": [290876, 488463],
515 "description": "Framebuffer discarding causes flickering on older IMG drivers",
519 "gl_vendor": "Imagination.*",
520 "gl_renderer": "PowerVR SGX 5.*",
522 "disable_discard_framebuffer"
528 "description": "Framebuffer discarding doesn't accept trivial attachments on Vivante",
532 "gl_extensions": ".*GL_VIV_shader_binary.*",
534 "disable_discard_framebuffer"
540 "description": "Framebuffer discarding causes jumpy scrolling on Mali drivers",
545 "disable_discard_framebuffer"
551 "description": "Unfold short circuit on Mac OS X",
556 "unfold_short_circuit_as_ternary_operation"
561 "description": "Force to use discrete GPU on older MacBookPro models",
570 "machine_model_name": ["MacBookPro"],
571 "machine_model_version": {
586 "description": "The first draw operation from an idle state is slow",
590 "gl_vendor": "Qualcomm.*",
592 "wake_up_gpu_before_drawing"
597 "description": "TexSubImage is faster for full uploads on ANGLE",
601 "gl_renderer": "ANGLE.*",
603 "texsubimage_faster_than_teximage"
608 "description": "ES3 MSAA is broken on Qualcomm",
612 "gl_vendor": "Qualcomm.*",
614 "disable_chromium_framebuffer_multisample"
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_chromium_framebuffer_multisample"
689 "description": "Multisampling is buggy in Intel IvyBridge",
694 "vendor_id": "0x8086",
695 "device_id": ["0x0152", "0x0156", "0x015a", "0x0162", "0x0166"],
697 "disable_chromium_framebuffer_multisample"
702 "description": "Multisampling is buggy on Mac OS X prior to 10.8.3",
703 "cr_bugs": [137303, 162466],
712 "disable_chromium_framebuffer_multisample"
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.*",
818 "disabled_extensions": [
819 "GL_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.*",
854 "disabled_extensions": [
860 "description": "Mali-4xx support of EXT_multisampled_render_to_texture is buggy on Android < 4.3",
869 "gl_vendor": "ARM.*",
870 "gl_renderer": ".*Mali-4.*",
872 "disable_multisampled_render_to_texture"
878 "description": "Testing EGL sync fences was broken on IMG",
886 "gl_vendor": "Imagination Technologies.*",
887 "disabled_extensions": [
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.*",
909 "disabled_extensions": [
915 "cr_bugs": [378691, 373360, 371530],
916 "description": "Testing fences was broken on Broadcom drivers",
924 "gl_vendor": "Broadcom.*",
925 "disabled_extensions": [
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.*",
1068 "disabled_extensions": [
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_chromium_framebuffer_multisample"
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_renderer": "Adreno \\(TM\\) 4.*",
1180 "unbind_attachments_on_bound_render_fbo_delete"
1185 "description": "Adreno 420 driver drops draw calls after FBO invalidation",
1186 "cr_bugs": [443060],
1190 "gl_renderer": "Adreno \\(TM\\) 4.*",
1192 "disable_discard_framebuffer"
1197 "description": "EXT_occlusion_query_boolean hangs on MediaTek MT8135 pre-Lollipop",
1205 "gl_vendor": "Imagination.*",
1206 "gl_renderer": "PowerVR Rogue Han",
1207 "disabled_extensions": [
1208 "GL_EXT_occlusion_query_boolean"
1213 "cr_bugs": [449488,451230],
1214 "description": "Framebuffer discarding causes corruption on Mali-4xx",
1215 "gl_renderer": "Mali-4.*",
1220 "disable_discard_framebuffer"
1225 "description": "EXT_occlusion_query_boolean hangs on PowerVR SGX 544 (IMG) drivers",
1229 "gl_vendor": "Imagination.*",
1230 "gl_renderer": "PowerVR SGX 544",
1231 "disabled_extensions": [
1232 "GL_EXT_occlusion_query_boolean"
1237 "description": "Workaround IMG PowerVR G6xxx drivers bugs",
1238 "cr_bugs": [480992],
1247 "gl_vendor": "Imagination.*",
1248 "gl_renderer": "PowerVR Rogue.*",
1255 "avoid_egl_image_target_texture_reuse"
1257 "disabled_extensions": [
1263 "cr_bugs": [449150],
1264 "description": "Mali-4xx does not support GL_RGB format",
1265 "gl_vendor": "ARM.*",
1266 "gl_renderer": ".*Mali-4.*",
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 2xx and 3xx drivers",
1284 "cr_bugs": [482298],
1288 "gl_vendor": "Qualcomm.*",
1289 "gl_renderer": "Adreno \\(TM\\) [23].*",
1294 "disabled_extensions": [
1300 "description": "Discard Framebuffer breaks WebGL on Mali-4xx Linux",
1301 "cr_bugs": [485814],
1305 "gl_vendor": "ARM.*",
1306 "gl_renderer": ".*Mali-4.*",
1308 "disable_discard_framebuffer"
1313 "cr_bugs": [477514],
1314 "description": "EXT_disjoint_timer_query fails after 2 queries on adreno 3xx in lollypop",
1322 "gl_vendor": "Qualcomm.*",
1323 "gl_renderer": "Adreno \\(TM\\) 3.*",
1325 "disable_timestamp_queries"
1330 "cr_bugs": [477514],
1331 "description": "EXT_disjoint_timer_query fails after 256 queries on adreno 4xx",
1335 "gl_renderer": "Adreno \\(TM\\) 4.*",
1336 "disabled_extensions": [
1337 "GL_EXT_disjoint_timer_query"
1342 "cr_bugs": [462553],
1343 "description": "glGetIntegerv with GL_GPU_DISJOINT_EXT causes GL_INVALID_ENUM error",
1347 "gl_vendor": "NVIDIA.*",
1353 "disabled_extensions": [
1354 "GL_EXT_disjoint_timer_query"
1359 "description": "Adreno 420 support for EXT_multisampled_render_to_texture is buggy on Android < 5.1",
1360 "cr_bugs": [490379],
1368 "gl_renderer": "Adreno \\(TM\\) 4.*",
1370 "disable_multisampled_render_to_texture"
1375 "description": "GL_KHR_blend_equation_advanced breaks blending on Adreno 4xx",
1376 "cr_bugs": [488485],
1380 "gl_vendor": "Qualcomm.*",
1381 "gl_renderer": ".*4\\d\\d",
1383 "disable_blend_equation_advanced"
1388 "cr_bugs": [477306],
1389 "description": "NVIDIA 331 series drivers shader compiler may crash when attempting to optimize pow()",
1397 "vendor_id": "0x10de",
1399 "remove_pow_with_constant_exponent"
1404 "description": "Context lost recovery often fails on Mali-400/450 on Android.",
1405 "cr_bugs": [496438],
1409 "gl_vendor": "ARM.*",
1410 "gl_renderer": ".*Mali-4.*",
1412 "exit_on_context_lost"
1417 "description": "CHROMIUM_copy_texture is slow on Mali pre-Lollipop",
1418 "cr_bugs": [498443],
1426 "gl_vendor": "ARM.*",
1427 "gl_renderer": "Mali.*",
1429 "max_copy_texture_chromium_size_262144"
1434 "cr_bugs": [344330],
1435 "description": "NVIDIA drivers before 337 lack features in NV_path_rendering and related extensions to implement driver level path rendering.",
1440 "vendor_id": "0x10de",
1442 "disable_gl_path_rendering"
1447 "description": "Certain Adreno 4xx drivers often crash in glProgramBinary.",
1448 "cr_bugs": [486117],
1456 "gl_renderer": "Adreno \\(TM\\) 4.*",
1458 "disable_program_cache"
1463 "description": "glFinish doesn't clear caches on Android",
1464 "cr_bugs": [509727],
1468 "gl_renderer": "Adreno.*",
1470 "unbind_egl_context_to_flush_driver_caches"
1475 "description": "Program binaries contain incorrect bound attribute locations on Adreno 3xx GPUs",
1476 "cr_bugs": [510637],
1480 "gl_renderer": "Adreno \\(TM\\) 3.*",
1482 "disable_program_cache"
1487 "description": "Android Adreno crashes on binding incomplete cube map texture to FBO",
1488 "cr_bugs": [518889],
1492 "gl_renderer": "Adreno.*",
1494 "force_cube_map_positive_x_allocation"
1499 "description": "Linux ATI drivers crash on binding incomplete cube map texture to FBO",
1500 "cr_bugs": [518889],
1504 "vendor_id": "0x1002",
1506 "force_cube_map_positive_x_allocation"
1511 // TODO(dshwang): Fix ANGLE crash. crbug.com/518889
1512 "description": "ANGLE crash on glReadPixels from incomplete cube map texture",
1513 "cr_bugs": [518889],
1517 "gl_renderer": "ANGLE.*",
1519 "force_cube_complete"
1524 "description": "NVIDIA fails glReadPixels from incomplete cube map texture",
1525 "cr_bugs": [518889],
1526 "gl_vendor": "NVIDIA.*",
1528 "force_cube_complete"
1533 "description": "Linux Mesa drivers crash on glTexSubImage2D() to texture storage bound to FBO",
1534 "cr_bugs": [521904],
1538 "driver_vendor": "Mesa",
1544 "disable_texture_storage"
1550 ); // LONG_STRING_CONST macro