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": "3.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": { 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 "features": [ 55 "set_texture_filter_before_generating_mipmap" 56 ] 57 }, 58 { 59 "id": 4, 60 "description": "Need to set the alpha to 255", 61 "features": [ 62 "clear_alpha_in_readpixels" 63 ] 64 }, 65 { 66 "id": 5, 67 "vendor_id": "0x10de", 68 "features": [ 69 "use_current_program_after_successful_link" 70 ] 71 }, 72 { 73 "id": 6, 74 "cr_bugs": [165493, 222018], 75 "os": { 76 "type": "android", 77 "version": { 78 "op": "<", 79 "value": "4.3" 80 } 81 }, 82 "gl_vendor": { 83 "op": "beginwith", 84 "value": "Qualcomm" 85 }, 86 "features": [ 87 "restore_scissor_on_fbo_change" 88 ] 89 }, 90 { 91 "id": 7, 92 "cr_bugs": [89557], 93 "os": { 94 "type": "macosx" 95 }, 96 "vendor_id": "0x10de", 97 "features": [ 98 "needs_offscreen_buffer_workaround" 99 ] 100 }, 101 { 102 "id": 8, 103 "os": { 104 "type": "macosx" 105 }, 106 "vendor_id": "0x1002", 107 "features": [ 108 "needs_glsl_built_in_function_emulation" 109 ] 110 }, 111 { 112 "id": 9, 113 "description": "Mac AMD drivers get gl_PointCoord backward on OSX 10.8 or earlier", 114 "cr_bugs": [256349], 115 "os": { 116 "type": "macosx", 117 "version": { 118 "op": "<", 119 "value": "10.9" 120 } 121 }, 122 "vendor_id": "0x1002", 123 "features": [ 124 "reverse_point_sprite_coord_origin" 125 ] 126 }, 127 { 128 "id": 10, 129 "description": "Mac Intel drivers get gl_PointCoord backward on OSX 10.8 or earlier", 130 "cr_bugs": [256349], 131 "os": { 132 "type": "macosx", 133 "version": { 134 "op": "<", 135 "value": "10.9" 136 } 137 }, 138 "vendor_id": "0x8086", 139 "features": [ 140 "reverse_point_sprite_coord_origin" 141 ] 142 }, 143 { 144 "id": 11, 145 "os": { 146 "type": "macosx" 147 }, 148 "vendor_id": "0x8086", 149 "features": [ 150 "max_texture_size_limit_4096" 151 ] 152 }, 153 { 154 "id": 12, 155 "os": { 156 "type": "macosx" 157 }, 158 "vendor_id": "0x8086", 159 "features": [ 160 "max_cube_map_texture_size_limit_1024" 161 ] 162 }, 163 { 164 "id": 13, 165 "os": { 166 "type": "macosx", 167 "version": { 168 "op": "<", 169 "value": "10.7.3" 170 } 171 }, 172 "vendor_id": "0x8086", 173 "features": [ 174 "max_cube_map_texture_size_limit_512" 175 ] 176 }, 177 { 178 "id": 14, 179 "os": { 180 "type": "macosx" 181 }, 182 "vendor_id": "0x1002", 183 "features": [ 184 "max_texture_size_limit_4096", 185 "max_cube_map_texture_size_limit_4096" 186 ] 187 }, 188 { 189 "id": 16, 190 "description": "Intel drivers on Linux appear to be buggy", 191 "os": { 192 "type": "linux" 193 }, 194 "vendor_id": "0x8086", 195 "features": [ 196 "disable_ext_occlusion_query" 197 ] 198 }, 199 { 200 "id": 17, 201 "description": "Some drivers are unable to reset the D3D device in the GPU process sandbox", 202 "os": { 203 "type": "win" 204 }, 205 "features": [ 206 "exit_on_context_lost" 207 ] 208 }, 209 { 210 "id": 18, 211 "description": "Everything except async + NPOT + multiple-of-8 textures are brutally slow for Imagination drivers", 212 "os": { 213 "type": "android" 214 }, 215 "gl_vendor": { 216 "op": "beginwith", 217 "value": "Imagination" 218 }, 219 "features": [ 220 "enable_chromium_fast_npot_mo8_textures" 221 ] 222 }, 223 { 224 "id": 19, 225 "os": { 226 "type": "android" 227 }, 228 "gl_vendor": { 229 "op": "beginwith", 230 "value": "Qualcomm" 231 }, 232 "features": [ 233 "disable_depth_texture" 234 ] 235 }, 236 { 237 "id": 20, 238 "description": "Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X due to driver bugs.", 239 "os": { 240 "type": "macosx" 241 }, 242 "vendor_id": "0x10de", 243 "device_id": ["0x0fd5"], 244 "multi_gpu_category": "any", 245 "features": [ 246 "disable_ext_draw_buffers" 247 ] 248 }, 249 { 250 "id": 21, 251 "description": "Vivante GPUs are buggy with context switching.", 252 "cr_bugs": [179250, 235935], 253 "os": { 254 "type": "android" 255 }, 256 "gl_extensions": { 257 "op": "contains", 258 "value": "GL_VIV_shader_binary" 259 }, 260 "features": [ 261 "unbind_fbo_on_context_switch" 262 ] 263 }, 264 { 265 "id": 22, 266 "description": "Imagination drivers are buggy with context switching.", 267 "cr_bugs": [230896], 268 "os": { 269 "type": "android" 270 }, 271 "gl_vendor": { 272 "op": "beginwith", 273 "value": "Imagination" 274 }, 275 "features": [ 276 "unbind_fbo_on_context_switch" 277 ] 278 }, 279 { 280 "id": 23, 281 "cr_bugs": [243038], 282 "description": "Disable OES_standard_derivative on Intel Pineview M Gallium drivers.", 283 "os": { 284 "type": "chromeos" 285 }, 286 "vendor_id": "0x8086", 287 "device_id": ["0xa011", "0xa012"], 288 "features": [ 289 "disable_oes_standard_derivatives" 290 ] 291 }, 292 { 293 "id": 24, 294 "cr_bugs": [231082], 295 "description": "Mali-400 drivers throw an error when a buffer object's size is set to 0.", 296 "os": { 297 "type": "android" 298 }, 299 "gl_vendor": { 300 "op": "beginwith", 301 "value": "ARM" 302 }, 303 "gl_renderer": { 304 "op": "contains", 305 "value": "Mali-400" 306 }, 307 "features": [ 308 "use_non_zero_size_for_client_side_stream_buffers" 309 ] 310 }, 311 { 312 "id": 25, 313 "cr_bugs": [152225], 314 "description": 315 "PBO + Readpixels + intel gpu doesn't work on OSX 10.7.", 316 "os": { 317 "type": "macosx", 318 "version": { 319 "op": "<", 320 "value": "10.8" 321 } 322 }, 323 "vendor_id": "0x8086", 324 "features": [ 325 "disable_async_readpixels" 326 ] 327 }, 328 { 329 "id": 26, 330 "description": "Disable use of Direct3D 11 on Windows Vista and lower.", 331 "os": { 332 "type": "win", 333 "version": { 334 "op": "<=", 335 "value": "6.0" 336 } 337 }, 338 "features": [ 339 "disable_d3d11" 340 ] 341 }, 342 { 343 "id": 27, 344 "cr_bugs": [265115], 345 "description": "Async Readpixels with GL_BGRA format is broken on Haswell chipset on Mac.", 346 "os": { 347 "type": "macosx" 348 }, 349 "vendor_id": "0x8086", 350 "device_id": ["0x0402", "0x0406", "0x040a", "0x0412", "0x0416", "0x041a", 351 "0x0a04", "0x0a16", "0x0a22", "0x0a26", "0x0a2a"], 352 "features": [ 353 "swizzle_rgba_for_async_readpixels" 354 ] 355 }, 356 { 357 "id": 29, 358 "cr_bugs": [278606], 359 "description": "Testing fences is broken on QualComm.", 360 "os": { 361 "type": "android", 362 "version": { 363 "op": "<", 364 "value": "4.4" 365 } 366 }, 367 "gl_vendor": { 368 "op": "beginwith", 369 "value": "Qualcomm" 370 }, 371 "features": [ 372 "disable_async_readpixels" 373 ] 374 }, 375 { 376 "id": 30, 377 "cr_bugs": [237931], 378 "description": "Multisampling is buggy on OSX when multiple monitors are connected", 379 "os": { 380 "type": "macosx" 381 }, 382 "features": [ 383 "disable_multimonitor_multisampling" 384 ] 385 }, 386 { 387 "id": 31, 388 "cr_bugs": [154715, 10068, 269829, 294779, 285292], 389 "description": "The Mali T-6xx driver does not guarantee flush ordering.", 390 "gl_vendor": { 391 "op": "beginwith", 392 "value": "ARM" 393 }, 394 "gl_renderer": { 395 "op": "beginwith", 396 "value": "Mali-T6" 397 }, 398 "features": [ 399 "use_virtualized_gl_contexts" 400 ] 401 }, 402 { 403 "id": 32, 404 "cr_bugs": [179815], 405 "description": "Share groups are not working on (older?) Broadcom drivers.", 406 "os": { 407 "type": "android" 408 }, 409 "gl_vendor": { 410 "op": "beginwith", 411 "value": "Broadcom" 412 }, 413 "features": [ 414 "use_virtualized_gl_contexts" 415 ] 416 }, 417 { 418 "id": 33, 419 "description": "Share group-related crashes and poor context switching perf on Galaxy Nexus.", 420 "os": { 421 "type": "android" 422 }, 423 "gl_vendor": { 424 "op": "beginwith", 425 "value": "Imagination" 426 }, 427 "features": [ 428 "use_virtualized_gl_contexts" 429 ] 430 }, 431 { 432 "id": 34, 433 "cr_bugs": [179250, 229643, 230896], 434 "description": "Share groups are not working on (older?) Vivante drivers.", 435 "os": { 436 "type": "android" 437 }, 438 "gl_extensions": { 439 "op": "contains", 440 "value": "GL_VIV_shader_binary" 441 }, 442 "features": [ 443 "use_virtualized_gl_contexts" 444 ] 445 }, 446 { 447 "id": 35, 448 "cr_bugs": [163464], 449 "description": "Share-group related crashes on older NVIDIA drivers.", 450 "os": { 451 "type": "android", 452 "version": { 453 "op": "<", 454 "value": "4.3" 455 } 456 }, 457 "gl_vendor": { 458 "op": "beginwith", 459 "value": "NVIDIA" 460 }, 461 "features": [ 462 "use_virtualized_gl_contexts" 463 ] 464 }, 465 { 466 "id": 36, 467 "cr_bugs": [163464, 233612], 468 "description": "Share-group related crashes on Qualcomm drivers.", 469 "os": { 470 "type": "android", 471 "version": { 472 "op": "<", 473 "value": "4.3" 474 } 475 }, 476 "gl_vendor": { 477 "op": "beginwith", 478 "value": "Qualcomm" 479 }, 480 "features": [ 481 "use_virtualized_gl_contexts" 482 ] 483 }, 484 { 485 "id": 37, 486 "cr_bugs": [286468], 487 "description": "Program link fails in NVIDIA Linux if gl_Position is not set", 488 "os": { 489 "type": "linux" 490 }, 491 "vendor_id": "0x10de", 492 "features": [ 493 "init_gl_position_in_vertex_shader" 494 ] 495 }, 496 { 497 "id": 38, 498 "cr_bugs": [289461], 499 "description": "Non-virtual contexts on Qualcomm sometimes cause out-of-order frames", 500 "os": { 501 "type": "android" 502 }, 503 "gl_vendor": { 504 "op": "beginwith", 505 "value": "Qualcomm" 506 }, 507 "features": [ 508 "use_virtualized_gl_contexts" 509 ] 510 }, 511 { 512 "id": 39, 513 "cr_bugs": [290391], 514 "description": "Multisampled renderbuffer allocation must be validated on some Macs", 515 "os": { 516 "type": "macosx" 517 }, 518 "features": [ 519 "validate_multisample_buffer_allocation" 520 ] 521 }, 522 { 523 "id": 40, 524 "cr_bugs": [290876], 525 "description": "Framebuffer discarding causes flickering on old ARM drivers", 526 "os": { 527 "type": "android", 528 "version": { 529 "op": "<", 530 "value": "4.4" 531 } 532 }, 533 "gl_vendor": { 534 "op": "beginwith", 535 "value": "ARM" 536 }, 537 "features": [ 538 "disable_ext_discard_framebuffer" 539 ] 540 }, 541 { 542 "id": 42, 543 "cr_bugs": [290876], 544 "description": "Framebuffer discarding causes flickering on older IMG drivers.", 545 "os": { 546 "type": "android" 547 }, 548 "gl_vendor": { 549 "op": "beginwith", 550 "value": "Imagination" 551 }, 552 "gl_renderer": { 553 "op": "=", 554 "value": "PowerVR SGX 540" 555 }, 556 "features": [ 557 "disable_ext_discard_framebuffer" 558 ] 559 }, 560 { 561 "id": 43, 562 "cr_bugs": [299494], 563 "description": "Framebuffer discarding doesn't accept trivial attachments on Vivante.", 564 "os": { 565 "type": "android" 566 }, 567 "gl_extensions": { 568 "op": "contains", 569 "value": "GL_VIV_shader_binary" 570 }, 571 "features": [ 572 "disable_ext_discard_framebuffer" 573 ] 574 }, 575 { 576 "id": 44, 577 "cr_bugs": [301988], 578 "description": "Framebuffer discarding causes jumpy scrolling on Mali drivers", 579 "os": { 580 "type": "chromeos" 581 }, 582 "features": [ 583 "disable_ext_discard_framebuffer" 584 ] 585 }, 586 { 587 "id": 45, 588 "cr_bugs": [307751], 589 "description": "Unfold short circuit on MacOSX.", 590 "os": { 591 "type": "macosx" 592 }, 593 "features": [ 594 "unfold_short_circuit_as_ternary_operation" 595 ] 596 }, 597 { 598 "id": 46, 599 "description": "Using D3D11 causes browser crashes on certain Intel GPUs.", 600 "cr_bugs": [310808], 601 "os": { 602 "type": "win" 603 }, 604 "vendor_id": "0x8086", 605 "features": [ 606 "disable_d3d11" 607 ] 608 }, 609 { 610 "id": 48, 611 "description": "Force to use discrete GPU on older MacBookPro models.", 612 "cr_bugs": [113703], 613 "os": { 614 "type": "macosx", 615 "version": { 616 "op": ">=", 617 "value": "10.7" 618 } 619 }, 620 "machine_model": { 621 "name": { 622 "op": "=", 623 "value": "MacBookPro" 624 }, 625 "version": { 626 "op": "<", 627 "value": "8" 628 } 629 }, 630 "gpu_count": { 631 "op": "=", 632 "value": "2" 633 }, 634 "features": [ 635 "force_discrete_gpu" 636 ] 637 }, 638 { 639 "id": 49, 640 "cr_bugs": [309734], 641 "description": "The first draw operation from an idle state is slow.", 642 "os": { 643 "type": "android" 644 }, 645 "gl_vendor": { 646 "op": "beginwith", 647 "value": "Qualcomm" 648 }, 649 "features": [ 650 "wake_up_gpu_before_drawing" 651 ] 652 }, 653 { 654 "id": 50, 655 "description": "NVIDIA driver requires unbinding a GpuMemoryBuffer from the texture before mapping it to main memory", 656 "os": { 657 "type": "android" 658 }, 659 "gl_vendor": { 660 "op": "beginwith", 661 "value": "NVIDIA" 662 }, 663 "features": [ 664 "release_image_after_use" 665 ] 666 }, 667 { 668 "id": 51, 669 "description": "TexSubImage2D() is faster for full uploads on ANGLE.", 670 "os": { 671 "type": "win" 672 }, 673 "gl_renderer": { 674 "op": "beginwith", 675 "value": "ANGLE" 676 }, 677 "features": [ 678 "texsubimage2d_faster_than_teximage2d" 679 ] 680 }, 681 { 682 "id": 52, 683 "description": "ES3 MSAA is broken on Qualcomm.", 684 "os": { 685 "type": "android" 686 }, 687 "gl_vendor": { 688 "op": "beginwith", 689 "value": "Qualcomm" 690 }, 691 "features": [ 692 "disable_framebuffer_multisample" 693 ] 694 }, 695 { 696 "id": 53, 697 "cr_bugs": [321701], 698 "description": "ES3 multisampling is too slow to be usable on Mali.", 699 "gl_vendor": { 700 "op": "beginwith", 701 "value": "ARM" 702 }, 703 "gl_renderer": { 704 "op": "beginwith", 705 "value": "Mali" 706 }, 707 "features": [ 708 "disable_framebuffer_multisample" 709 ] 710 }, 711 { 712 "id": 54, 713 "cr_bugs": [124764], 714 "description": "Clear uniforms before first program use on all platforms", 715 "features": [ 716 "clear_uniforms_before_first_program_use" 717 ] 718 }, 719 { 720 "id": 55, 721 "cr_bugs": [333885], 722 "description": "Mesa drivers in Linux handle varyings without static use incorrectly", 723 "os": { 724 "type": "linux" 725 }, 726 "driver_vendor": { 727 "op": "=", 728 "value": "Mesa" 729 }, 730 "features": [ 731 "count_all_in_varyings_packing" 732 ] 733 }, 734 { 735 "id": 56, 736 "cr_bugs": [333885], 737 "description": "Mesa drivers in ChromeOS handle varyings without static use incorrectly", 738 "os": { 739 "type": "chromeos" 740 }, 741 "driver_vendor": { 742 "op": "=", 743 "value": "Mesa" 744 }, 745 "features": [ 746 "count_all_in_varyings_packing" 747 ] 748 } 749 ] 750 } 751 752 ); // LONG_STRING_CONST macro 753 754 } // namespace gpu 755