Home | History | Annotate | Download | only in config
      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 // 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>.
     10 
     11 #include "gpu/config/gpu_control_list_jsons.h"
     12 
     13 #define LONG_STRING_CONST(...) #__VA_ARGS__
     14 
     15 namespace gpu {
     16 
     17 const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
     18 
     19 {
     20   "name": "gpu driver bug list",
     21   // Please update the version number whenever you change this file.
     22   "version": "7.10",
     23   "entries": [
     24     {
     25       "id": 1,
     26       "description": "Imagination driver doesn't like uploading lots of buffer data constantly",
     27       "os": {
     28         "type": "android"
     29       },
     30       "gl_vendor": "Imagination.*",
     31       "features": [
     32         "use_client_side_arrays_for_stream_buffers"
     33       ]
     34     },
     35     {
     36       "id": 2,
     37       "description": "ARM driver doesn't like uploading lots of buffer data constantly",
     38       "os": {
     39         "type": "android"
     40       },
     41       "gl_vendor": "ARM.*",
     42       "features": [
     43         "use_client_side_arrays_for_stream_buffers"
     44       ]
     45     },
     46     {
     47       "id": 3,
     48       "description": "glGenerateMipmap leaks vram without setting texture filters on some Mac drivers",
     49       "webkit_bugs": [48489],
     50       "cr_bugs": [349137],
     51       "os": {
     52         "type": "macosx",
     53         "version": {
     54           "op": "<",
     55           "value": "10.9"
     56         }
     57       },
     58       "features": [
     59         "set_texture_filter_before_generating_mipmap"
     60       ]
     61     },
     62     {
     63       "id": 4,
     64       "description": "glReadPixels incorrectly sets alpha to 0 on some drivers from a drawing buffer without alpha channel",
     65       "webkit_bugs": [33416],
     66       "cr_bugs": [349137],
     67       "os": {
     68         "type": "macosx",
     69         "version": {
     70           "op": "<",
     71           "value": "10.9"
     72         }
     73       },
     74       "features": [
     75         "clear_alpha_in_readpixels"
     76       ]
     77     },
     78     {
     79       "id": 5,
     80       "description": "Always call glUseProgram after a successful link to avoid a driver bug",
     81       "cr_bugs": [349137],
     82       "vendor_id": "0x10de",
     83       "exceptions": [
     84         {
     85           "os": {
     86             "type": "macosx",
     87             "version": {
     88               "op": ">=",
     89               "value": "10.9"
     90             }
     91           }
     92         }
     93       ],
     94       "features": [
     95         "use_current_program_after_successful_link"
     96       ]
     97     },
     98     {
     99       "id": 6,
    100       "description": "Restore scissor on FBO change with Qualcomm GPUs on older versions of Android",
    101       "cr_bugs": [165493, 222018],
    102       "os": {
    103         "type": "android",
    104         "version": {
    105           "op": "<",
    106           "value": "4.3"
    107         }
    108       },
    109       "gl_vendor": "Qualcomm.*",
    110       "features": [
    111         "restore_scissor_on_fbo_change"
    112       ]
    113     },
    114     {
    115       "id": 7,
    116       "cr_bugs": [89557],
    117       "description": "Work around a bug in offscreen buffers on NVIDIA GPUs on Macs",
    118       "os": {
    119         "type": "macosx"
    120       },
    121       "vendor_id": "0x10de",
    122       "features": [
    123         "needs_offscreen_buffer_workaround"
    124       ]
    125     },
    126     {
    127       "id": 8,
    128       "description": "A few built-in glsl functions on Mac behave incorrectly",
    129       "cr_bugs": [349137],
    130       "os": {
    131         "type": "macosx",
    132         "version": {
    133           "op": "<",
    134           "value": "10.9"
    135         }
    136       },
    137       "vendor_id": "0x1002",
    138       "features": [
    139         "needs_glsl_built_in_function_emulation"
    140       ]
    141     },
    142     {
    143       "id": 9,
    144       "description": "AMD drivers get gl_PointCoord backward on OS X 10.8 or earlier",
    145       "cr_bugs": [256349],
    146       "os": {
    147         "type": "macosx",
    148         "version": {
    149           "op": "<",
    150           "value": "10.9"
    151         }
    152       },
    153       "vendor_id": "0x1002",
    154       "features": [
    155         "reverse_point_sprite_coord_origin"
    156       ]
    157     },
    158     {
    159       "id": 10,
    160       "description": "Intel drivers get gl_PointCoord backward on OS X 10.8 or earlier",
    161       "cr_bugs": [256349],
    162       "os": {
    163         "type": "macosx",
    164         "version": {
    165           "op": "<",
    166           "value": "10.9"
    167         }
    168       },
    169       "vendor_id": "0x8086",
    170       "features": [
    171         "reverse_point_sprite_coord_origin"
    172       ]
    173     },
    174     {
    175       "id": 11,
    176       "description": "Limit max texure size to 4096 on Macs with Intel GPUs",
    177       "os": {
    178         "type": "macosx",
    179         "version": {
    180           "op": "<",
    181           "value": "10.9"
    182         }
    183       },
    184       "vendor_id": "0x8086",
    185       "features": [
    186         "max_texture_size_limit_4096"
    187       ]
    188     },
    189     {
    190       "id": 12,
    191       "description": "Limit max cube map texure size to 1024 on Macs with Intel GPUs",
    192       "os": {
    193         "type": "macosx"
    194       },
    195       "vendor_id": "0x8086",
    196       "features": [
    197         "max_cube_map_texture_size_limit_1024"
    198       ]
    199     },
    200     {
    201       "id": 13,
    202       "description": "Limit max cube map texure size to 512 on older Macs with Intel GPUs",
    203       "os": {
    204         "type": "macosx",
    205         "version": {
    206           "op": "<",
    207           "value": "10.7.3"
    208         }
    209       },
    210       "vendor_id": "0x8086",
    211       "features": [
    212         "max_cube_map_texture_size_limit_512"
    213       ]
    214     },
    215     {
    216       "id": 14,
    217       "description": "Limit max texure size and cube map texture size to 4096 on Macs with AMD GPUs",
    218       "os": {
    219         "type": "macosx",
    220         "version": {
    221           "op": "<",
    222           "value": "10.9"
    223         }
    224       },
    225       "vendor_id": "0x1002",
    226       "features": [
    227         "max_texture_size_limit_4096",
    228         "max_cube_map_texture_size_limit_4096"
    229       ]
    230     },
    231     {
    232       "id": 16,
    233       "description": "EXT_occlusion_query appears to be buggy with Intel GPUs on Linux",
    234       "os": {
    235         "type": "linux"
    236       },
    237       "vendor_id": "0x8086",
    238       "features": [
    239         "disable_ext_occlusion_query"
    240       ]
    241     },
    242     {
    243       "id": 17,
    244       "description": "Some drivers are unable to reset the D3D device in the GPU process sandbox",
    245       "os": {
    246         "type": "win"
    247       },
    248       "features": [
    249         "exit_on_context_lost"
    250       ]
    251     },
    252     {
    253       "id": 19,
    254       "description": "Disable depth textures on Android with Qualcomm GPUs",
    255       "os": {
    256         "type": "android"
    257       },
    258       "gl_vendor": "Qualcomm.*",
    259       "features": [
    260         "disable_depth_texture"
    261       ]
    262     },
    263     {
    264       "id": 20,
    265       "description": "Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X due to driver bugs",
    266       "os": {
    267         "type": "macosx"
    268       },
    269       "vendor_id": "0x10de",
    270       "device_id": ["0x0fd5"],
    271       "multi_gpu_category": "any",
    272       "features": [
    273         "disable_ext_draw_buffers"
    274       ]
    275     },
    276     {
    277       "id": 21,
    278       "description": "Vivante GPUs are buggy with context switching",
    279       "cr_bugs": [179250, 235935],
    280       "os": {
    281         "type": "android"
    282       },
    283       "gl_extensions": ".*GL_VIV_shader_binary.*",
    284       "features": [
    285         "unbind_fbo_on_context_switch"
    286       ]
    287     },
    288     {
    289       "id": 22,
    290       "description": "Imagination drivers are buggy with context switching",
    291       "cr_bugs": [230896],
    292       "os": {
    293         "type": "android"
    294       },
    295       "gl_vendor": "Imagination.*",
    296       "features": [
    297         "unbind_fbo_on_context_switch"
    298       ]
    299     },
    300     {
    301       "id": 23,
    302       "cr_bugs": [243038],
    303       "description": "Disable OES_standard_derivative on Intel Pineview M Gallium drivers",
    304       "os": {
    305         "type": "chromeos"
    306       },
    307       "vendor_id": "0x8086",
    308       "device_id": ["0xa011", "0xa012"],
    309       "features": [
    310         "disable_oes_standard_derivatives"
    311       ]
    312     },
    313     {
    314       "id": 24,
    315       "cr_bugs": [231082],
    316       "description": "Mali-400 drivers throw an error when a buffer object's size is set to 0",
    317       "os": {
    318         "type": "android"
    319       },
    320       "gl_vendor": "ARM.*",
    321       "gl_renderer": ".*Mali-400.*",
    322       "features": [
    323         "use_non_zero_size_for_client_side_stream_buffers"
    324       ]
    325     },
    326     {
    327       "id": 25,
    328       "cr_bugs": [152225],
    329       "description": "PBO + Readpixels don't work on OS X 10.7",
    330       "os": {
    331         "type": "macosx",
    332         "version": {
    333           "op": "<",
    334           "value": "10.8"
    335         }
    336       },
    337       "features": [
    338         "disable_async_readpixels"
    339       ]
    340     },
    341     {
    342       "id": 26,
    343       "description": "Disable use of Direct3D 11 on Windows Vista and lower",
    344       "os": {
    345         "type": "win",
    346         "version": {
    347           "op": "<=",
    348           "value": "6.0"
    349         }
    350       },
    351       "features": [
    352         "disable_d3d11"
    353       ]
    354     },
    355     {
    356       "id": 27,
    357       "cr_bugs": [265115],
    358       "description": "Async Readpixels with GL_BGRA format is broken on Haswell chipset on Macs",
    359       "os": {
    360         "type": "macosx"
    361       },
    362       "vendor_id": "0x8086",
    363       "device_id": ["0x0402", "0x0406", "0x040a", "0x0412", "0x0416", "0x041a",
    364                     "0x0a04", "0x0a16", "0x0a22", "0x0a26", "0x0a2a"],
    365       "features": [
    366         "swizzle_rgba_for_async_readpixels"
    367       ]
    368     },
    369     {
    370       "id": 30,
    371       "cr_bugs": [237931],
    372       "description": "Multisampling is buggy on OSX when multiple monitors are connected",
    373       "os": {
    374         "type": "macosx"
    375       },
    376       "features": [
    377         "disable_multimonitor_multisampling"
    378       ]
    379     },
    380     {
    381       "id": 31,
    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.*",
    386       "features": [
    387         "use_virtualized_gl_contexts"
    388       ]
    389     },
    390     {
    391       "id": 32,
    392       "cr_bugs": [179815],
    393       "description": "Share groups are not working on (older?) Broadcom drivers",
    394       "os": {
    395         "type": "android"
    396       },
    397       "gl_vendor": "Broadcom.*",
    398       "features": [
    399         "use_virtualized_gl_contexts"
    400       ]
    401     },
    402     {
    403       "id": 33,
    404       "description": "Share group-related crashes and poor context switching perf on Galaxy Nexus",
    405       "os": {
    406         "type": "android"
    407       },
    408       "gl_vendor": "Imagination.*",
    409       "features": [
    410         "use_virtualized_gl_contexts"
    411       ]
    412     },
    413     {
    414       "id": 34,
    415       "cr_bugs": [179250, 229643, 230896],
    416       "description": "Share groups are not working on (older?) Vivante drivers",
    417       "os": {
    418         "type": "android"
    419       },
    420       "gl_extensions": ".*GL_VIV_shader_binary.*",
    421       "features": [
    422         "use_virtualized_gl_contexts"
    423       ]
    424     },
    425     {
    426       "id": 35,
    427       "cr_bugs": [163464],
    428       "description": "Share-group related crashes on older NVIDIA drivers",
    429       "os": {
    430         "type": "android",
    431         "version": {
    432           "op": "<",
    433           "value": "4.3"
    434         }
    435       },
    436       "gl_vendor": "NVIDIA.*",
    437       "features": [
    438         "use_virtualized_gl_contexts"
    439       ]
    440     },
    441     {
    442       "id": 36,
    443       "cr_bugs": [163464, 233612],
    444       "description": "Share-group related crashes on Qualcomm drivers",
    445       "os": {
    446         "type": "android",
    447         "version": {
    448           "op": "<",
    449           "value": "4.3"
    450         }
    451       },
    452       "gl_vendor": "Qualcomm.*",
    453       "features": [
    454         "use_virtualized_gl_contexts"
    455       ]
    456     },
    457     {
    458       "id": 37,
    459       "cr_bugs": [286468],
    460       "description": "Program link fails in NVIDIA Linux if gl_Position is not set",
    461       "os": {
    462         "type": "linux"
    463       },
    464       "vendor_id": "0x10de",
    465       "features": [
    466         "init_gl_position_in_vertex_shader"
    467       ]
    468     },
    469     {
    470       "id": 38,
    471       "cr_bugs": [289461],
    472       "description": "Non-virtual contexts on Qualcomm sometimes cause out-of-order frames",
    473       "os": {
    474         "type": "android"
    475       },
    476       "gl_vendor": "Qualcomm.*",
    477       "features": [
    478         "use_virtualized_gl_contexts"
    479       ]
    480     },
    481     {
    482       "id": 39,
    483       "cr_bugs": [290391],
    484       "description": "Multisampled renderbuffer allocation must be validated on some Macs",
    485       "os": {
    486         "type": "macosx"
    487       },
    488       "features": [
    489         "validate_multisample_buffer_allocation"
    490       ]
    491     },
    492     {
    493       "id": 40,
    494       "cr_bugs": [290876],
    495       "description": "Framebuffer discarding causes flickering on old ARM drivers",
    496       "os": {
    497         "type": "android",
    498         "version": {
    499           "op": "<",
    500           "value": "4.4"
    501         }
    502       },
    503       "gl_vendor": "ARM.*",
    504       "features": [
    505         "disable_ext_discard_framebuffer"
    506       ]
    507     },
    508     {
    509       "id": 42,
    510       "cr_bugs": [290876],
    511       "description": "Framebuffer discarding causes flickering on older IMG drivers",
    512       "os": {
    513         "type": "android"
    514       },
    515       "gl_vendor": "Imagination.*",
    516       "gl_renderer": "PowerVR SGX 540",
    517       "features": [
    518         "disable_ext_discard_framebuffer"
    519       ]
    520     },
    521     {
    522       "id": 43,
    523       "cr_bugs": [299494],
    524       "description": "Framebuffer discarding doesn't accept trivial attachments on Vivante",
    525       "os": {
    526         "type": "android"
    527       },
    528       "gl_extensions": ".*GL_VIV_shader_binary.*",
    529       "features": [
    530         "disable_ext_discard_framebuffer"
    531       ]
    532     },
    533     {
    534       "id": 44,
    535       "cr_bugs": [301988],
    536       "description": "Framebuffer discarding causes jumpy scrolling on Mali drivers",
    537       "os": {
    538         "type": "chromeos"
    539       },
    540       "features": [
    541         "disable_ext_discard_framebuffer"
    542       ]
    543     },
    544     {
    545       "id": 45,
    546       "cr_bugs": [307751],
    547       "description": "Unfold short circuit on Mac OS X",
    548       "os": {
    549         "type": "macosx"
    550       },
    551       "features": [
    552         "unfold_short_circuit_as_ternary_operation"
    553       ]
    554     },
    555     {
    556       "id": 48,
    557       "description": "Force to use discrete GPU on older MacBookPro models",
    558       "cr_bugs": [113703],
    559       "os": {
    560         "type": "macosx",
    561         "version": {
    562           "op": ">=",
    563           "value": "10.7"
    564         }
    565       },
    566       "machine_model_name": ["MacBookPro"],
    567       "machine_model_version": {
    568         "op": "<",
    569         "value": "8"
    570       },
    571       "gpu_count": {
    572         "op": "=",
    573         "value": "2"
    574       },
    575       "features": [
    576         "force_discrete_gpu"
    577       ]
    578     },
    579     {
    580       "id": 49,
    581       "cr_bugs": [309734],
    582       "description": "The first draw operation from an idle state is slow",
    583       "os": {
    584         "type": "android"
    585       },
    586       "gl_vendor": "Qualcomm.*",
    587       "features": [
    588         "wake_up_gpu_before_drawing"
    589       ]
    590     },
    591     {
    592       "id": 50,
    593       "description": "NVIDIA driver requires unbinding a GpuMemoryBuffer from the texture before mapping it to main memory",
    594       "os": {
    595         "type": "android"
    596       },
    597       "gl_type": "gles",
    598       "gl_version": {
    599         "op": "<",
    600         "value": "3.1"
    601       },
    602       "gl_vendor": "NVIDIA.*",
    603       "features": [
    604         "release_image_after_use"
    605       ]
    606     },
    607     {
    608       "id": 51,
    609       "description": "TexSubImage2D() is faster for full uploads on ANGLE",
    610       "os": {
    611         "type": "win"
    612       },
    613       "gl_renderer": "ANGLE.*",
    614       "features": [
    615         "texsubimage2d_faster_than_teximage2d"
    616       ]
    617     },
    618     {
    619       "id": 52,
    620       "description": "ES3 MSAA is broken on Qualcomm",
    621       "os": {
    622         "type": "android"
    623       },
    624       "gl_vendor": "Qualcomm.*",
    625       "features": [
    626         "disable_multisampling"
    627       ]
    628     },
    629     {
    630       "id": 54,
    631       "cr_bugs": [124764, 349137],
    632       "description": "Clear uniforms before first program use on all platforms",
    633       "exceptions": [
    634         {
    635           "os": {
    636             "type": "macosx",
    637             "version": {
    638               "op": ">=",
    639               "value": "10.9"
    640             }
    641           }
    642         }
    643       ],
    644       "features": [
    645         "clear_uniforms_before_first_program_use"
    646       ]
    647     },
    648     {
    649       "id": 55,
    650       "cr_bugs": [333885],
    651       "description": "Mesa drivers in Linux handle varyings without static use incorrectly",
    652       "os": {
    653         "type": "linux"
    654       },
    655       "driver_vendor": "Mesa",
    656       "features": [
    657         "count_all_in_varyings_packing"
    658       ]
    659     },
    660     {
    661       "id": 56,
    662       "cr_bugs": [333885],
    663       "description": "Mesa drivers in ChromeOS handle varyings without static use incorrectly",
    664       "os": {
    665         "type": "chromeos"
    666       },
    667       "driver_vendor": "Mesa",
    668       "features": [
    669         "count_all_in_varyings_packing"
    670       ]
    671     },
    672     {
    673       "id": 57,
    674       "cr_bugs": [322760],
    675       "description": "Mac drivers handle varyings without static use incorrectly",
    676       "os": {
    677         "type": "macosx"
    678       },
    679       "features": [
    680         "init_varyings_without_static_use"
    681       ]
    682     },
    683     {
    684       "id": 58,
    685       "description": "Multisampling is buggy in ATI cards on older Mac OS X",
    686       "cr_bugs": [67752, 83153],
    687       "os": {
    688         "type": "macosx",
    689         "version": {
    690           "op": "<",
    691           "value": "10.7.2"
    692         }
    693       },
    694       "vendor_id": "0x1002",
    695       "features": [
    696         "disable_multisampling"
    697       ]
    698     },
    699     {
    700       "id": 59,
    701       "description": "Multisampling is buggy in Intel IvyBridge",
    702       "cr_bugs": [116370],
    703       "os": {
    704         "type": "linux"
    705       },
    706       "vendor_id": "0x8086",
    707       "device_id": ["0x0152", "0x0156", "0x015a", "0x0162", "0x0166"],
    708       "features": [
    709         "disable_multisampling"
    710       ]
    711     },
    712     {
    713       "id": 60,
    714       "description": "Multisampling is buggy on Mac OS X prior to 10.8.3",
    715       "cr_bugs": [137303, 162466],
    716       "os": {
    717         "type": "macosx",
    718         "version": {
    719           "op": "<",
    720           "value": "10.8.3"
    721         }
    722       },
    723       "features": [
    724         "disable_multisampling"
    725       ]
    726     },
    727     {
    728       "id": 63,
    729       "description": "Shaders with sampler arrays indexing for-loop indices cause the GLSL compiler to crash on OS X",
    730       "cr_bugs": [348198, 349137],
    731       "os": {
    732         "type": "macosx",
    733         "version": {
    734           "op": "<",
    735           "value": "10.9"
    736         }
    737       },
    738       "features": [
    739         "unroll_for_loop_with_sampler_array_index"
    740       ]
    741     },
    742     {
    743       "id": 64,
    744       "description": "Linux AMD drivers incorrectly return initial value of 1 for TEXTURE_MAX_ANISOTROPY",
    745       "cr_bugs": [348237],
    746       "os": {
    747         "type": "linux"
    748       },
    749       "vendor_id": "0x1002",
    750       "features": [
    751         "init_texture_max_anisotropy"
    752       ]
    753     },
    754     {
    755       "id": 65,
    756       "description": "Linux NVIDIA drivers don't have the correct defaults for vertex attributes",
    757       "cr_bugs": [351528],
    758       "os": {
    759         "type": "linux"
    760       },
    761       "vendor_id": "0x10de",
    762       "features": [
    763         "init_vertex_attributes"
    764       ]
    765     },
    766     {
    767       "id": 66,
    768       "description": "Force glFinish() after compositing on older OS X on Intel GPU",
    769       "cr_bugs": [123409],
    770       "os": {
    771         "type": "macosx",
    772         "version": {
    773           "op": "<=",
    774           "value": "10.7"
    775         }
    776       },
    777       "vendor_id": "0x8086",
    778       "multi_gpu_category": "active",
    779       "features": [
    780         "force_gl_finish_after_compositing"
    781       ]
    782     },
    783     {
    784       "id": 68,
    785       "description": "Disable partial swaps on linux drivers",
    786       "cr_bugs": [339493],
    787       "os": {
    788         "type": "linux"
    789       },
    790       "features": [
    791         "disable_post_sub_buffers_for_onscreen_surfaces"
    792       ]
    793     },
    794     {
    795       "id": 69,
    796       "description": "Some shaders in Skia need more than the min available vertex and fragment shader uniform vectors in case of OSMesa",
    797       "cr_bugs": [174845],
    798       "driver_vendor": "osmesa",
    799       "features": [
    800        "max_fragment_uniform_vectors_32",
    801        "max_varying_vectors_16",
    802        "max_vertex_uniform_vectors_256"
    803       ]
    804     },
    805     {
    806       "id": 70,
    807       "description": "Disable D3D11 on older nVidia drivers",
    808       "cr_bugs": [349929],
    809       "os": {
    810         "type": "win"
    811       },
    812       "vendor_id": "0x10de",
    813       "driver_version": {
    814         "op": "<=",
    815         "value": "8.17.12.6973"
    816       },
    817       "features": [
    818         "disable_d3d11"
    819       ]
    820     },
    821     {
    822       "id": 71,
    823       "description": "Vivante's support of OES_standard_derivatives is buggy",
    824       "cr_bugs": [368005],
    825       "os": {
    826         "type": "android"
    827       },
    828       "gl_extensions": ".*GL_VIV_shader_binary.*",
    829       "features": [
    830         "disable_oes_standard_derivatives"
    831       ]
    832     },
    833     {
    834       "id": 72,
    835       "description": "Use virtual contexts on NVIDIA with GLES 3.1",
    836       "cr_bugs": [369316],
    837       "os": {
    838         "type": "android"
    839       },
    840       "gl_type": "gles",
    841       "gl_version": {
    842         "op": "=",
    843         "value": "3.1"
    844       },
    845       "gl_vendor": "NVIDIA.*",
    846       "features": [
    847         "use_virtualized_gl_contexts"
    848       ]
    849     },
    850     {
    851       "id": 73,
    852       "description": "Using D3D11 causes browser crashes on certain Intel GPUs",
    853       "cr_bugs": [310808],
    854       "os": {
    855         "type": "win"
    856       },
    857       "vendor_id": "0x8086",
    858       "features": [
    859         "disable_d3d11"
    860       ]
    861     },
    862 )  // LONG_STRING_CONST macro
    863 // Avoid C2026 (string too big) error on VisualStudio.
    864 LONG_STRING_CONST(
    865     {
    866       "id": 74,
    867       "cr_bugs": [278606, 382686],
    868       "description": "Testing EGL sync fences was broken on most Qualcomm drivers",
    869       "os": {
    870         "type": "android",
    871         "version": {
    872           "op": "<=",
    873           "value": "4.4.4"
    874         }
    875       },
    876       "gl_vendor": "Qualcomm.*",
    877       "features": [
    878         "disable_egl_khr_fence_sync"
    879       ]
    880     },
    881     {
    882       "id": 75,
    883       "description": "Mali-400 support of EXT_multisampled_render_to_texture is buggy on Android < 4.3",
    884       "cr_bugs": [362435],
    885       "os": {
    886         "type": "android",
    887         "version": {
    888           "op": "<",
    889           "value": "4.3"
    890         }
    891       },
    892       "gl_vendor": "ARM.*",
    893       "gl_renderer": ".*Mali-400.*",
    894       "features": [
    895         "disable_multisampling"
    896       ]
    897     },
    898     {
    899       "id": 76,
    900       "cr_bugs": [371530],
    901       "description": "Testing EGL sync fences was broken on IMG",
    902       "os": {
    903         "type": "android",
    904         "version": {
    905           "op": "<=",
    906           "value": "4.4.4"
    907         }
    908       },
    909       "gl_vendor": "Imagination Technologies.*",
    910       "features": [
    911         "disable_egl_khr_fence_sync"
    912       ]
    913     },
    914     {
    915       "id": 77,
    916       "cr_bugs": [378691, 373360, 371530, 398964],
    917       "description": "Testing fences was broken on Mali ES2 drivers",
    918       "os": {
    919         "type": "android",
    920         "version": {
    921           "op": "<=",
    922           "value": "4.4.4"
    923         }
    924       },
    925       "gl_vendor": "ARM.*",
    926       "gl_renderer": "Mali.*",
    927       "gl_type": "gles",
    928       "gl_version": {
    929         "op": "<",
    930         "value": "3.0"
    931       },
    932       "features": [
    933         "disable_egl_khr_fence_sync"
    934       ]
    935     },
    936     {
    937       "id": 78,
    938       "cr_bugs": [378691, 373360, 371530],
    939       "description": "Testing fences was broken on Broadcom drivers",
    940       "os": {
    941         "type": "android",
    942         "version": {
    943           "op": "<=",
    944           "value": "4.4.4"
    945         }
    946       },
    947       "gl_vendor": "Broadcom.*",
    948       "features": [
    949         "disable_egl_khr_fence_sync"
    950       ]
    951     },
    952     {
    953       "id": 79,
    954       "cr_bugs": [371530],
    955       "description": "Testing ARB sync fences is broken on MacOSX",
    956       "os": {
    957         "type": "macosx"
    958       },
    959       "features": [
    960         "disable_arb_sync"
    961       ]
    962     },
    963     {
    964       "id": 82,
    965       "description": "PBO mappings segfault on certain older Qualcomm drivers",
    966       "cr_bugs": [394510],
    967       "os": {
    968         "type": "android",
    969         "version": {
    970           "op": "<",
    971           "value": "4.3"
    972         }
    973       },
    974       "gl_vendor": "Qualcomm.*",
    975       "features": [
    976         "disable_async_readpixels"
    977       ]
    978     },
    979     {
    980       "id": 86,
    981       "description": "Disable use of Direct3D 11 on Matrox video cards",
    982       "cr_bugs": [395861],
    983       "os": {
    984         "type": "win"
    985       },
    986       "vendor_id": "0x102b",
    987       "features": [
    988         "disable_d3d11"
    989       ]
    990     },
    991     {
    992       "id": 87,
    993       "description": "Disable use of Direct3D 11 on older AMD drivers",
    994       "cr_bugs": [402134],
    995       "os": {
    996         "type": "win"
    997       },
    998       "vendor_id": "0x1002",
    999       "driver_date": {
   1000         "op": "<",
   1001         "value": "2011.1"
   1002       },
   1003       "features": [
   1004         "disable_d3d11"
   1005       ]
   1006     },
   1007     {
   1008       "id": 88,
   1009       "description": "Always rewrite vec/mat constructors to be consistent",
   1010       "cr_bugs": [398694],
   1011       "features": [
   1012         "scalarize_vec_and_mat_constructor_args"
   1013       ]
   1014     },
   1015     {
   1016       "id": 89,
   1017       "description": "Mac drivers handle struct scopes incorrectly",
   1018       "cr_bugs": [403957],
   1019       "os": {
   1020         "type": "macosx"
   1021       },
   1022       "features": [
   1023         "regenerate_struct_names"
   1024       ]
   1025     },
   1026     {
   1027       "id": 90,
   1028       "description": "Linux AMD drivers handle struct scopes incorrectly",
   1029       "cr_bugs": [403957],
   1030       "os": {
   1031         "type": "linux"
   1032       },
   1033       "vendor_id": "0x1002",
   1034       "features": [
   1035         "regenerate_struct_names"
   1036       ]
   1037     },
   1038     {
   1039       "id": 91,
   1040       "cr_bugs": [150500, 414816],
   1041       "description": "ETC1 non-power-of-two sized textures crash older IMG drivers",
   1042       "os": {
   1043         "type": "android"
   1044       },
   1045       "gl_vendor": "Imagination.*",
   1046       "gl_renderer": "PowerVR SGX 5.*",
   1047       "features": [
   1048         "etc1_power_of_two_only"
   1049       ]
   1050     },
   1051     {
   1052       "id": 93,
   1053       "description": "The GL implementation on the Android emulator has problems with PBOs.",
   1054       "cr_bugs": [340882],
   1055       "os": {
   1056         "type": "android"
   1057       },
   1058       "gl_vendor": "VMware.*",
   1059       "gl_renderer": "Gallium.*",
   1060       "gl_type": "gles",
   1061       "gl_version": {
   1062         "op": "=",
   1063         "value": "3.0"
   1064       },
   1065       "features": [
   1066         "disable_async_readpixels"
   1067       ]
   1068     },
   1069     {
   1070       "id": 94,
   1071       "description": "Disable EGL_KHR_wait_sync on NVIDIA with GLES 3.1",
   1072       "cr_bugs": [433057],
   1073       "os": {
   1074         "type": "android",
   1075         "version": {
   1076           "op": "<=",
   1077           "value": "5.0.2"
   1078         }
   1079       },
   1080       "gl_vendor": "NVIDIA.*",
   1081       "gl_type": "gles",
   1082       "gl_version": {
   1083         "op": "=",
   1084         "value": "3.1"
   1085       },
   1086       "features": [
   1087         "disable_egl_khr_wait_sync"
   1088       ]
   1089     }
   1090   ]
   1091 }
   1092 
   1093 );  // LONG_STRING_CONST macro
   1094 
   1095 }  // namespace gpu
   1096