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