Implement gpu driver bug handling mechanism for tizen.
authorPrashant Nevase <prashant.n@samsung.com>
Wed, 4 Feb 2015 10:52:28 +0000 (16:22 +0530)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
This is base patch which makes driver bug handling mechanism and
black listing mechanism up on tizen platform.

Gpu driver bug list is taken from Android. In many cases Android has
fixes in the driver on latest versions of Android (probably > 4.4).
In current patch these are not resolved as we need to check and verify
each individual bug and test on the tizen platforms, which can be
carried out in subsequent patches later.

Bug: http://107.108.218.239/bugzilla/show_bug.cgi?id=10994
Reviewed by: Antonio Gomes, venu musham

Change-Id: I27855664d70b225bc73a62dd6c751ec344f86bc6
Signed-off-by: Prashant Nevase <prashant.n@samsung.com>
tizen_src/impl/chromium-efl.gyp
tizen_src/impl/chromium-efl.gypi
tizen_src/impl/gpu/config/gpu_driver_bug_list_json_efl.cc [new file with mode: 0644]
tizen_src/impl/gpu/config/software_rendering_list_json_efl.cc [new file with mode: 0644]

index b9f62bd..fd6e44b 100644 (file)
           'content/common/gpu/gpu_memory_buffer_factory_efl.cc',
           'content/common/gpu/gpu_memory_buffer_factory_efl_pixmap.cc',
           'content/common/gpu/gpu_memory_buffer_factory_efl_pixmap.h',
+          'gpu/config/gpu_driver_bug_list_json_efl.cc',
           'gpu/config/gpu_info_collector_efl.cc',
+          'gpu/config/software_rendering_list_json_efl.cc',
           'ui/gl/gl_image_efl_pixmap.cc',
           'ui/gl/gl_image_efl_pixmap.h',
           'ui/gl/efl_pixmap.cc',
index f0383f1..7099731 100644 (file)
            ['exclude', 'browser/device_sensors/data_fetcher_shared_memory_default.cc$'],
            ['exclude', 'browser/sound_effect.cc$'],
            ['exclude', 'battery_status_manager_linux\\.(h|cc)$'],
+           ['exclude', 'config/gpu_driver_bug_list_json\\.cc$'],
            ['exclude', 'config/gpu_info_collector_linux\\.cc$'],
+           ['exclude', 'config/software_rendering_list_json\\.cc$'],
          ],
          'cflags_cc': [ '-std=gnu++0x', '-fpermissive' ],
       }, {
diff --git a/tizen_src/impl/gpu/config/gpu_driver_bug_list_json_efl.cc b/tizen_src/impl/gpu/config/gpu_driver_bug_list_json_efl.cc
new file mode 100644 (file)
index 0000000..74b8b83
--- /dev/null
@@ -0,0 +1,1088 @@
+// Copyright 2014 Samsung Electronics. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Determines whether a certain driver bug exists in the current system.
+// The format of a valid gpu_driver_bug_list.json file is defined in
+// <gpu/config/gpu_control_list_format.txt>.
+// The supported "features" can be found in
+// <gpu/config/gpu_driver_bug_workaround_type.h>.
+
+// This file is analogous to src/gpu/config/gpu_driver_bug_list_json.cc.
+// Please make changes accordingly when above referred file gets changed.
+
+#include "gpu/config/gpu_control_list_jsons.h"
+
+#define LONG_STRING_CONST(...) #__VA_ARGS__
+
+namespace gpu {
+
+const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
+
+{
+  "name": "gpu driver bug list",
+  // Please update the version number whenever you change this file.
+  "version": "7.12",
+  "entries": [
+    {
+      "id": 1,
+      "description": "Imagination driver doesn't like uploading lots of buffer data constantly",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Imagination.*",
+      "features": [
+        "use_client_side_arrays_for_stream_buffers"
+      ]
+    },
+    {
+      "id": 2,
+      "description": "ARM driver doesn't like uploading lots of buffer data constantly",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "ARM.*",
+      "features": [
+        "use_client_side_arrays_for_stream_buffers"
+      ]
+    },
+    {
+      "id": 3,
+      "description": "glGenerateMipmap leaks vram without setting texture filters on some Mac drivers",
+      "webkit_bugs": [48489],
+      "cr_bugs": [349137],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "features": [
+        "set_texture_filter_before_generating_mipmap"
+      ]
+    },
+    {
+      "id": 4,
+      "description": "glReadPixels incorrectly sets alpha to 0 on some drivers from a drawing buffer without alpha channel",
+      "webkit_bugs": [33416],
+      "cr_bugs": [349137],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "features": [
+        "clear_alpha_in_readpixels"
+      ]
+    },
+    {
+      "id": 5,
+      "description": "Always call glUseProgram after a successful link to avoid a driver bug",
+      "cr_bugs": [349137],
+      "vendor_id": "0x10de",
+      "exceptions": [
+        {
+          "os": {
+            "type": "macosx",
+            "version": {
+              "op": ">=",
+              "value": "10.9"
+            }
+          }
+        }
+      ],
+      "features": [
+        "use_current_program_after_successful_link"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 6,
+      "description": "Restore scissor on FBO change with Qualcomm GPUs on older versions of Android",
+      "cr_bugs": [165493, 222018],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "restore_scissor_on_fbo_change"
+      ]
+    },
+    {
+      "id": 7,
+      "cr_bugs": [89557],
+      "description": "Work around a bug in offscreen buffers on NVIDIA GPUs on Macs",
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x10de",
+      "features": [
+        "needs_offscreen_buffer_workaround"
+      ]
+    },
+    {
+      "id": 8,
+      "description": "A few built-in glsl functions on Mac behave incorrectly",
+      "cr_bugs": [349137],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "vendor_id": "0x1002",
+      "features": [
+        "needs_glsl_built_in_function_emulation"
+      ]
+    },
+    {
+      "id": 9,
+      "description": "AMD drivers get gl_PointCoord backward on OS X 10.8 or earlier",
+      "cr_bugs": [256349],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "vendor_id": "0x1002",
+      "features": [
+        "reverse_point_sprite_coord_origin"
+      ]
+    },
+    {
+      "id": 10,
+      "description": "Intel drivers get gl_PointCoord backward on OS X 10.8 or earlier",
+      "cr_bugs": [256349],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "vendor_id": "0x8086",
+      "features": [
+        "reverse_point_sprite_coord_origin"
+      ]
+    },
+    {
+      "id": 11,
+      "description": "Limit max texure size to 4096 on Macs with Intel GPUs",
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "vendor_id": "0x8086",
+      "features": [
+        "max_texture_size_limit_4096"
+      ]
+    },
+    {
+      "id": 12,
+      "description": "Limit max cube map texure size to 1024 on Macs with Intel GPUs",
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x8086",
+      "features": [
+        "max_cube_map_texture_size_limit_1024"
+      ]
+    },
+    {
+      "id": 13,
+      "description": "Limit max cube map texure size to 512 on older Macs with Intel GPUs",
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.7.3"
+        }
+      },
+      "vendor_id": "0x8086",
+      "features": [
+        "max_cube_map_texture_size_limit_512"
+      ]
+    },
+    {
+      "id": 14,
+      "description": "Limit max texure size and cube map texture size to 4096 on Macs with AMD GPUs",
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "vendor_id": "0x1002",
+      "features": [
+        "max_texture_size_limit_4096",
+        "max_cube_map_texture_size_limit_4096"
+      ]
+    },
+    {
+      "id": 16,
+      "description": "EXT_occlusion_query appears to be buggy with Intel GPUs on Linux",
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x8086",
+      "features": [
+        "disable_ext_occlusion_query"
+      ]
+    },
+    {
+      "id": 17,
+      "description": "Some drivers are unable to reset the D3D device in the GPU process sandbox",
+      "os": {
+        "type": "win"
+      },
+      "features": [
+        "exit_on_context_lost"
+      ]
+    },
+    {
+      "id": 19,
+      "description": "Disable depth textures on Android with Qualcomm GPUs",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "disable_depth_texture"
+      ]
+    },
+    {
+      "id": 20,
+      "description": "Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X due to driver bugs",
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x0fd5"],
+      "multi_gpu_category": "any",
+      "features": [
+        "disable_ext_draw_buffers"
+      ]
+    },
+    {
+      "id": 21,
+      "description": "Vivante GPUs are buggy with context switching",
+      "cr_bugs": [179250, 235935],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_extensions": ".*GL_VIV_shader_binary.*",
+      "features": [
+        "unbind_fbo_on_context_switch"
+      ]
+    },
+    {
+      "id": 22,
+      "description": "Imagination drivers are buggy with context switching",
+      "cr_bugs": [230896],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Imagination.*",
+      "features": [
+        "unbind_fbo_on_context_switch"
+      ]
+    },
+    {
+      "id": 23,
+      "cr_bugs": [243038],
+      "description": "Disable OES_standard_derivative on Intel Pineview M Gallium drivers",
+      "os": {
+        "type": "chromeos"
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0xa011", "0xa012"],
+      "features": [
+        "disable_oes_standard_derivatives"
+      ]
+    },
+    {
+      "id": 24,
+      "cr_bugs": [231082],
+      "description": "Mali-400 drivers throw an error when a buffer object's size is set to 0",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "ARM.*",
+      "gl_renderer": ".*Mali-400.*",
+      "features": [
+        "use_non_zero_size_for_client_side_stream_buffers"
+      ]
+    },
+    {
+      "id": 25,
+      "cr_bugs": [152225],
+      "description": "PBO + Readpixels don't work on OS X 10.7",
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.8"
+        }
+      },
+      "features": [
+        "disable_async_readpixels"
+      ]
+    },
+    {
+      "id": 26,
+      "description": "Disable use of Direct3D 11 on Windows Vista and lower",
+      "os": {
+        "type": "win",
+        "version": {
+          "op": "<=",
+          "value": "6.0"
+        }
+      },
+      "features": [
+        "disable_d3d11"
+      ]
+    },
+    {
+      "id": 27,
+      "cr_bugs": [265115],
+      "description": "Async Readpixels with GL_BGRA format is broken on Haswell chipset on Macs",
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0x0402", "0x0406", "0x040a", "0x0412", "0x0416", "0x041a",
+                    "0x0a04", "0x0a16", "0x0a22", "0x0a26", "0x0a2a"],
+      "features": [
+        "swizzle_rgba_for_async_readpixels"
+      ]
+    },
+    {
+      "id": 30,
+      "cr_bugs": [237931],
+      "description": "Multisampling is buggy on OSX when multiple monitors are connected",
+      "os": {
+        "type": "macosx"
+      },
+      "features": [
+        "disable_multimonitor_multisampling"
+      ]
+    },
+    {
+      "id": 31,
+      "cr_bugs": [154715, 10068, 269829, 294779, 285292],
+      "description": "The Mali-Txxx driver does not guarantee flush ordering",
+      "gl_vendor": "ARM.*",
+      "gl_renderer": "Mali-T.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+    {
+      "id": 32,
+      "cr_bugs": [179815],
+      "description": "Share groups are not working on (older?) Broadcom drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Broadcom.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+    {
+      "id": 33,
+      "description": "Share group-related crashes and poor context switching perf on Galaxy Nexus",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Imagination.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+    {
+      "id": 34,
+      "cr_bugs": [179250, 229643, 230896],
+      "description": "Share groups are not working on (older?) Vivante drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_extensions": ".*GL_VIV_shader_binary.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 35,
+      "cr_bugs": [163464],
+      "description": "Share-group related crashes on older NVIDIA drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "NVIDIA.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 36,
+      "cr_bugs": [163464, 233612],
+      "description": "Share-group related crashes on Qualcomm drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+    {
+      "id": 37,
+      "cr_bugs": [286468],
+      "description": "Program link fails in NVIDIA Linux if gl_Position is not set",
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x10de",
+      "features": [
+        "init_gl_position_in_vertex_shader"
+      ]
+    },
+    {
+      "id": 38,
+      "cr_bugs": [289461],
+      "description": "Non-virtual contexts on Qualcomm sometimes cause out-of-order frames",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+    {
+      "id": 39,
+      "cr_bugs": [290391],
+      "description": "Multisampled renderbuffer allocation must be validated on some Macs",
+      "os": {
+        "type": "macosx"
+      },
+      "features": [
+        "validate_multisample_buffer_allocation"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 40,
+      "cr_bugs": [290876],
+      "description": "Framebuffer discarding causes flickering on old ARM drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "ARM.*",
+      "features": [
+        "disable_ext_discard_framebuffer"
+      ]
+    },
+    {
+      "id": 42,
+      "cr_bugs": [290876],
+      "description": "Framebuffer discarding causes flickering on older IMG drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Imagination.*",
+      "gl_renderer": "PowerVR SGX 540",
+      "features": [
+        "disable_ext_discard_framebuffer"
+      ]
+    },
+    {
+      "id": 43,
+      "cr_bugs": [299494],
+      "description": "Framebuffer discarding doesn't accept trivial attachments on Vivante",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_extensions": ".*GL_VIV_shader_binary.*",
+      "features": [
+        "disable_ext_discard_framebuffer"
+      ]
+    },
+    {
+      "id": 44,
+      "cr_bugs": [301988],
+      "description": "Framebuffer discarding causes jumpy scrolling on Mali drivers",
+      "os": {
+        "type": "chromeos"
+      },
+      "features": [
+        "disable_ext_discard_framebuffer"
+      ]
+    },
+    {
+      "id": 45,
+      "cr_bugs": [307751],
+      "description": "Unfold short circuit on Mac OS X",
+      "os": {
+        "type": "macosx"
+      },
+      "features": [
+        "unfold_short_circuit_as_ternary_operation"
+      ]
+    },
+    {
+      "id": 48,
+      "description": "Force to use discrete GPU on older MacBookPro models",
+      "cr_bugs": [113703],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": ">=",
+          "value": "10.7"
+        }
+      },
+      "machine_model_name": ["MacBookPro"],
+      "machine_model_version": {
+        "op": "<",
+        "value": "8"
+      },
+      "gpu_count": {
+        "op": "=",
+        "value": "2"
+      },
+      "features": [
+        "force_discrete_gpu"
+      ]
+    },
+    {
+      "id": 49,
+      "cr_bugs": [309734],
+      "description": "The first draw operation from an idle state is slow",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "wake_up_gpu_before_drawing"
+      ]
+    },
+    {
+      "id": 51,
+      "description": "TexSubImage2D() is faster for full uploads on ANGLE",
+      "os": {
+        "type": "win"
+      },
+      "gl_renderer": "ANGLE.*",
+      "features": [
+        "texsubimage2d_faster_than_teximage2d"
+      ]
+    },
+    {
+      "id": 52,
+      "description": "ES3 MSAA is broken on Qualcomm",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "disable_multisampling"
+      ]
+    },
+    {
+      "id": 54,
+      "cr_bugs": [124764, 349137],
+      "description": "Clear uniforms before first program use on all platforms",
+      "exceptions": [
+        {
+          "os": {
+            "type": "macosx",
+            "version": {
+              "op": ">=",
+              "value": "10.9"
+            }
+          }
+        }
+      ],
+      "features": [
+        "clear_uniforms_before_first_program_use"
+      ]
+    },
+    {
+      "id": 55,
+      "cr_bugs": [333885],
+      "description": "Mesa drivers in Linux handle varyings without static use incorrectly",
+      "os": {
+        "type": "linux"
+      },
+      "driver_vendor": "Mesa",
+      "features": [
+        "count_all_in_varyings_packing"
+      ]
+    },
+    {
+      "id": 56,
+      "cr_bugs": [333885],
+      "description": "Mesa drivers in ChromeOS handle varyings without static use incorrectly",
+      "os": {
+        "type": "chromeos"
+      },
+      "driver_vendor": "Mesa",
+      "features": [
+        "count_all_in_varyings_packing"
+      ]
+    },
+    {
+      "id": 57,
+      "cr_bugs": [322760],
+      "description": "Mac drivers handle varyings without static use incorrectly",
+      "os": {
+        "type": "macosx"
+      },
+      "features": [
+        "init_varyings_without_static_use"
+      ]
+    },
+    {
+      "id": 58,
+      "description": "Multisampling is buggy in ATI cards on older Mac OS X",
+      "cr_bugs": [67752, 83153],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.7.2"
+        }
+      },
+      "vendor_id": "0x1002",
+      "features": [
+        "disable_multisampling"
+      ]
+    },
+    {
+      "id": 59,
+      "description": "Multisampling is buggy in Intel IvyBridge",
+      "cr_bugs": [116370],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0x0152", "0x0156", "0x015a", "0x0162", "0x0166"],
+      "features": [
+        "disable_multisampling"
+      ]
+    },
+    {
+      "id": 60,
+      "description": "Multisampling is buggy on Mac OS X prior to 10.8.3",
+      "cr_bugs": [137303, 162466],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.8.3"
+        }
+      },
+      "features": [
+        "disable_multisampling"
+      ]
+    },
+    {
+      "id": 63,
+      "description": "Shaders with sampler arrays indexing for-loop indices cause the GLSL compiler to crash on OS X",
+      "cr_bugs": [348198, 349137],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.9"
+        }
+      },
+      "features": [
+        "unroll_for_loop_with_sampler_array_index"
+      ]
+    },
+    {
+      "id": 64,
+      "description": "Linux AMD drivers incorrectly return initial value of 1 for TEXTURE_MAX_ANISOTROPY",
+      "cr_bugs": [348237],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x1002",
+      "features": [
+        "init_texture_max_anisotropy"
+      ]
+    },
+    {
+      "id": 65,
+      "description": "Linux NVIDIA drivers don't have the correct defaults for vertex attributes",
+      "cr_bugs": [351528],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x10de",
+      "features": [
+        "init_vertex_attributes"
+      ]
+    },
+    {
+      "id": 66,
+      "description": "Force glFinish() after compositing on older OS X on Intel GPU",
+      "cr_bugs": [123409],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<=",
+          "value": "10.7"
+        }
+      },
+      "vendor_id": "0x8086",
+      "multi_gpu_category": "active",
+      "features": [
+        "force_gl_finish_after_compositing"
+      ]
+    },
+    {
+      "id": 68,
+      "description": "Disable partial swaps on linux drivers",
+      "cr_bugs": [339493],
+      "os": {
+        "type": "linux"
+      },
+      "driver_vendor": "Mesa",
+      "features": [
+        "disable_post_sub_buffers_for_onscreen_surfaces"
+      ]
+    },
+    {
+      "id": 69,
+      "description": "Some shaders in Skia need more than the min available vertex and fragment shader uniform vectors in case of OSMesa",
+      "cr_bugs": [174845],
+      "driver_vendor": "osmesa",
+      "features": [
+       "max_fragment_uniform_vectors_32",
+       "max_varying_vectors_16",
+       "max_vertex_uniform_vectors_256"
+      ]
+    },
+    {
+      "id": 70,
+      "description": "Disable D3D11 on older nVidia drivers",
+      "cr_bugs": [349929],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x10de",
+      "driver_version": {
+        "op": "<=",
+        "value": "8.17.12.6973"
+      },
+      "features": [
+        "disable_d3d11"
+      ]
+    },
+    {
+      "id": 71,
+      "description": "Vivante's support of OES_standard_derivatives is buggy",
+      "cr_bugs": [368005],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_extensions": ".*GL_VIV_shader_binary.*",
+      "features": [
+        "disable_oes_standard_derivatives"
+      ]
+    },
+    {
+      "id": 72,
+      "description": "Use virtual contexts on NVIDIA with GLES 3.1",
+      "cr_bugs": [369316],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_type": "gles",
+      "gl_version": {
+        "op": "=",
+        "value": "3.1"
+      },
+      "gl_vendor": "NVIDIA.*",
+      "features": [
+        "use_virtualized_gl_contexts"
+      ]
+    },
+)  // LONG_STRING_CONST macro
+// Avoid C2026 (string too big) error on VisualStudio.
+LONG_STRING_CONST(
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 74,
+      "cr_bugs": [278606, 382686],
+      "description": "Testing EGL sync fences was broken on most Qualcomm drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "disable_egl_khr_fence_sync"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 75,
+      "description": "Mali-400 support of EXT_multisampled_render_to_texture is buggy on Android < 4.3",
+      "cr_bugs": [362435],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "ARM.*",
+      "gl_renderer": ".*Mali-400.*",
+      "features": [
+        "disable_multisampling"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 76,
+      "cr_bugs": [371530],
+      "description": "Testing EGL sync fences was broken on IMG",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Imagination Technologies.*",
+      "features": [
+        "disable_egl_khr_fence_sync"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 77,
+      "cr_bugs": [378691, 373360, 371530, 398964],
+      "description": "Testing fences was broken on Mali ES2 drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "ARM.*",
+      "gl_renderer": "Mali.*",
+      "gl_type": "gles",
+      "gl_version": {
+        "op": "<",
+        "value": "3.0"
+      },
+      "features": [
+        "disable_egl_khr_fence_sync"
+      ]
+    },
+    {
+      "id": 78,
+      "cr_bugs": [378691, 373360, 371530],
+      "description": "Testing fences was broken on Broadcom drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Broadcom.*",
+      "features": [
+        "disable_egl_khr_fence_sync"
+      ]
+    },
+    {
+      "id": 79,
+      "cr_bugs": [371530],
+      "description": "Testing ARB sync fences is broken on MacOSX",
+      "os": {
+        "type": "macosx"
+      },
+      "features": [
+        "disable_arb_sync"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 82,
+      "description": "PBO mappings segfault on certain older Qualcomm drivers",
+      "cr_bugs": [394510],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Qualcomm.*",
+      "features": [
+        "disable_async_readpixels"
+      ]
+    },
+    {
+      "id": 86,
+      "description": "Disable use of Direct3D 11 on Matrox video cards",
+      "cr_bugs": [395861],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x102b",
+      "features": [
+        "disable_d3d11"
+      ]
+    },
+    {
+      "id": 87,
+      "description": "Disable use of Direct3D 11 on older AMD drivers",
+      "cr_bugs": [402134],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x1002",
+      "driver_date": {
+        "op": "<",
+        "value": "2011.1"
+      },
+      "features": [
+        "disable_d3d11"
+      ]
+    },
+    {
+      "id": 88,
+      "description": "Always rewrite vec/mat constructors to be consistent",
+      "cr_bugs": [398694],
+      "features": [
+        "scalarize_vec_and_mat_constructor_args"
+      ]
+    },
+    {
+      "id": 89,
+      "description": "Mac drivers handle struct scopes incorrectly",
+      "cr_bugs": [403957],
+      "os": {
+        "type": "macosx"
+      },
+      "features": [
+        "regenerate_struct_names"
+      ]
+    },
+    {
+      "id": 90,
+      "description": "Linux AMD drivers handle struct scopes incorrectly",
+      "cr_bugs": [403957],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x1002",
+      "features": [
+        "regenerate_struct_names"
+      ]
+    },
+    {
+      "id": 91,
+      "cr_bugs": [150500, 414816],
+      "description": "ETC1 non-power-of-two sized textures crash older IMG drivers",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Imagination.*",
+      "gl_renderer": "PowerVR SGX 5.*",
+      "features": [
+        "etc1_power_of_two_only"
+      ]
+    },
+    {
+      "id": 92,
+      "description": "Old Intel drivers cannot reliably support D3D11",
+      "cr_bugs": [363721],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x8086",
+      "driver_version": {
+        "op": "<",
+        "value": "8.16"
+      },
+      "features": [
+        "disable_d3d11"
+      ]
+    },
+    {
+      "id": 93,
+      "description": "The GL implementation on the Android emulator has problems with PBOs.",
+      "cr_bugs": [340882],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "VMware.*",
+      "gl_renderer": "Gallium.*",
+      "gl_type": "gles",
+      "gl_version": {
+        "op": "=",
+        "value": "3.0"
+      },
+      "features": [
+        "disable_async_readpixels"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 94,
+      "description": "Disable EGL_KHR_wait_sync on NVIDIA with GLES 3.1",
+      "cr_bugs": [433057],
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "NVIDIA.*",
+      "gl_type": "gles",
+      "gl_version": {
+        "op": "=",
+        "value": "3.1"
+      },
+      "features": [
+        "disable_egl_khr_wait_sync"
+      ]
+    },
+    {
+      // TODO(prashant.n): Check and verfiy this bug on latest tizen platforms,
+      // as latest versions (> 4.4) of Android have fixes for this.
+      "id": 95,
+      "description": "Framebuffer discarding causes tile jumps on reorient.",
+      "os": {
+        "type": "tizen"
+      },
+      "gl_vendor": "Broadcom.*",
+      "gl_renderer": "VideoCore IV HW*",
+      "features": [
+        "disable_ext_discard_framebuffer"
+      ]
+    },
+    {
+      "id": 96,
+      "description": "glBindFramebuffer sometimes requires a glBegin/End to take effect",
+      "cr_bugs": [435786],
+      "os": {
+        "type": "macosx"
+      },
+      "features": [
+        "gl_begin_gl_end_on_fbo_change_to_backbuffer"
+      ]
+    }
+  ]
+}
+
+);  // LONG_STRING_CONST macro
+
+}  // namespace gpu
diff --git a/tizen_src/impl/gpu/config/software_rendering_list_json_efl.cc b/tizen_src/impl/gpu/config/software_rendering_list_json_efl.cc
new file mode 100644 (file)
index 0000000..26fee46
--- /dev/null
@@ -0,0 +1,1198 @@
+// Copyright 2014 Samsung Electronics. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Determines whether certain gpu-related features are blacklisted or not.
+// The format of a valid software_rendering_list.json file is defined in
+// <gpu/config/gpu_control_list_format.txt>.
+// The supported "features" can be found in <gpu/config/gpu_blacklist.cc>.
+
+// This file is analogous to src/gpu/config/software_rendering_list_json.cc.
+// Please make changes accordingly when above referred file gets changed.
+
+#include "gpu/config/gpu_control_list_jsons.h"
+
+#define LONG_STRING_CONST(...) #__VA_ARGS__
+
+namespace gpu {
+
+const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
+
+{
+  "name": "software rendering list",
+  // Please update the version number whenever you change this file.
+  "version": "9.13",
+  "entries": [
+    {
+      "id": 1,
+      "description": "ATI Radeon X1900 is not compatible with WebGL on the Mac",
+      "webkit_bugs": [47028],
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x1002",
+      "device_id": ["0x7249"],
+      "features": [
+        "webgl",
+        "flash_3d",
+        "flash_stage3d"
+      ]
+    },
+    {
+      "id": 3,
+      "description": "GL driver is software rendered. GPU acceleration is disabled",
+      "cr_bugs": [59302, 315217],
+      "os": {
+        "type": "linux"
+      },
+      "gl_renderer": "(?i).*software.*",
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 4,
+      "description": "The Intel Mobile 945 Express family of chipsets is not compatible with WebGL",
+      "cr_bugs": [232035],
+      "os": {
+        "type": "any"
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0x27AE", "0x27A2"],
+      "features": [
+        "webgl",
+        "flash_3d",
+        "flash_stage3d",
+        "accelerated_2d_canvas"
+      ]
+    },
+    {
+      "id": 5,
+      "description": "ATI/AMD cards with older drivers in Linux are crash-prone",
+      "cr_bugs": [71381, 76428, 73910, 101225, 136240, 357314],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x1002",
+      "exceptions": [
+        {
+          "driver_vendor": ".*AMD.*",
+          "driver_version": {
+            "op": ">=",
+            "style": "lexical",
+            "value": "8.98"
+          }
+        },
+        {
+          "driver_vendor": "Mesa",
+          "driver_version": {
+            "op": ">=",
+            "value": "10.0.4"
+          }
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 8,
+      "description": "NVIDIA GeForce FX Go5200 is assumed to be buggy",
+      "cr_bugs": [72938],
+      "os": {
+        "type": "any"
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x0324"],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 10,
+      "description": "NVIDIA GeForce 7300 GT on Mac does not support WebGL",
+      "cr_bugs": [73794],
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x0393"],
+      "features": [
+        "webgl",
+        "flash_3d",
+        "flash_stage3d"
+      ]
+    },
+    {
+      "id": 12,
+      "description": "Drivers older than 2009-01 on Windows are possibly unreliable",
+      "cr_bugs": [72979, 89802, 315205],
+      "os": {
+        "type": "win"
+      },
+      "driver_date": {
+        "op": "<",
+        "value": "2009.1"
+      },
+      "exceptions": [
+        {
+          "vendor_id": "0x8086",
+          "device_id": ["0x29a2"],
+          "driver_version": {
+            "op": ">=",
+            "value": "7.15.10.1624"
+          }
+        },
+        {
+          "driver_vendor": "osmesa"
+        },
+        {
+          "vendor_id": "0x1414",
+          "device_id": ["0x02c1"]
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 17,
+      "description": "Older Intel mesa drivers are crash-prone",
+      "cr_bugs": [76703, 164555, 225200, 340886],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x8086",
+      "driver_vendor": "Mesa",
+      "driver_version": {
+        "op": "<",
+        "value": "10.1"
+      },
+      "exceptions": [
+        {
+          "device_id": ["0x0102", "0x0106", "0x0112", "0x0116", "0x0122", "0x0126", "0x010a", "0x0152", "0x0156", "0x015a", "0x0162", "0x0166"],
+          "driver_version": {
+            "op": ">=",
+            "value": "8.0"
+          }
+        },
+        {
+          "device_id": ["0xa001", "0xa002", "0xa011", "0xa012", "0x29a2", "0x2992", "0x2982", "0x2972", "0x2a12", "0x2a42", "0x2e02", "0x2e12", "0x2e22", "0x2e32", "0x2e42", "0x2e92"],
+          "driver_version": {
+            "op": ">",
+            "value": "8.0.2"
+          }
+        },
+        {
+          "device_id": ["0x0042", "0x0046"],
+          "driver_version": {
+            "op": ">",
+            "value": "8.0.4"
+          }
+        },
+        {
+          "device_id": ["0x2a02"],
+          "driver_version": {
+            "op": ">=",
+            "value": "9.1"
+          }
+        },
+        {
+          "device_id": ["0x0a16", "0x0a26"],
+          "driver_version": {
+            "op": ">=",
+            "value": "10.0.1"
+          }
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 18,
+      "description": "NVIDIA Quadro FX 1500 is buggy",
+      "cr_bugs": [84701],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x029e"],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 23,
+      "description": "Mesa drivers in linux older than 7.11 are assumed to be buggy",
+      "os": {
+        "type": "linux"
+      },
+      "driver_vendor": "Mesa",
+      "driver_version": {
+        "op": "<",
+        "value": "7.11"
+      },
+      "exceptions": [
+        {
+          "driver_vendor": "osmesa"
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 24,
+      "description": "Accelerated 2d canvas is unstable in Linux at the moment",
+      "os": {
+        "type": "linux"
+      },
+      "features": [
+        "accelerated_2d_canvas"
+      ]
+    },
+    {
+      "id": 27,
+      "description": "ATI/AMD cards with older drivers in Linux are crash-prone",
+      "cr_bugs": [95934, 94973, 136240, 357314],
+      "os": {
+        "type": "linux"
+      },
+      "gl_vendor": "ATI.*",
+      "exceptions": [
+        {
+          "driver_vendor": ".*AMD.*",
+          "driver_version": {
+            "op": ">=",
+            "style": "lexical",
+            "value": "8.98"
+          }
+        },
+        {
+          "driver_vendor": "Mesa",
+          "driver_version": {
+            "op": ">=",
+            "value": "10.0.4"
+          }
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 28,
+      "description": "ATI/AMD cards with third-party drivers in Linux are crash-prone",
+      "cr_bugs": [95934, 94973, 357314],
+      "os": {
+        "type": "linux"
+      },
+      "gl_vendor": "X\\.Org.*",
+      "gl_renderer": ".*AMD.*",
+      "exceptions": [
+        {
+          "driver_vendor": "Mesa",
+          "driver_version": {
+            "op": ">=",
+            "value": "10.0.4"
+          }
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 29,
+      "description": "ATI/AMD cards with third-party drivers in Linux are crash-prone",
+      "cr_bugs": [95934, 94973, 357314],
+      "os": {
+        "type": "linux"
+      },
+      "gl_vendor": "X\\.Org.*",
+      "gl_renderer": ".*ATI.*",
+      "exceptions": [
+        {
+          "driver_vendor": "Mesa",
+          "driver_version": {
+            "op": ">=",
+            "value": "10.0.4"
+          }
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 30,
+      "description": "NVIDIA cards with nouveau drivers in Linux are crash-prone",
+      "cr_bugs": [94103],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x10de",
+      "gl_vendor": "(?i)nouveau.*",
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 32,
+      "description": "Accelerated 2d canvas is disabled on Windows systems with low perf stats",
+      "cr_bugs": [116350, 151500],
+      "os": {
+        "type": "win"
+      },
+      "perf_overall": {
+        "op": "<",
+        "value": "3.5"
+      },
+      "exceptions": [
+        {
+          "perf_gaming": {
+            "op": ">",
+            "value": "3.5"
+          }
+        },
+        {
+          "cpu_info": "(?i).*Atom.*"
+        }
+      ],
+      "features": [
+        "accelerated_2d_canvas"
+      ]
+    },
+    {
+      "id": 34,
+      "description": "S3 Trio (used in Virtual PC) is not compatible",
+      "cr_bugs": [119948],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x5333",
+      "device_id": ["0x8811"],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 35,
+      "description": "Stage3D is not supported on Linux",
+      "cr_bugs": [129848],
+      "os": {
+        "type": "linux"
+      },
+      "features": [
+        "flash_stage3d"
+      ]
+    },
+    {
+      "id": 37,
+      "description": "Older drivers are unreliable for Optimus on Linux",
+      "cr_bugs": [131308, 363418],
+      "os": {
+        "type": "linux"
+      },
+      "multi_gpu_style": "optimus",
+      "exceptions": [
+        {
+          "driver_vendor": "Mesa",
+          "driver_version": {
+            "op": ">=",
+            "value": "10.1"
+          },
+          "gl_vendor": "Intel.*"
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 38,
+      "description": "Accelerated 2D canvas is unstable for NVidia GeForce 9400M on Lion",
+      "cr_bugs": [130495],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "=",
+          "value": "10.7"
+        }
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x0863"],
+      "features": [
+        "accelerated_2d_canvas"
+      ]
+    },
+    {
+      "id": 42,
+      "description": "AMD Radeon HD 6490M and 6970M on Snow Leopard are buggy",
+      "cr_bugs": [137307, 285350],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "=",
+          "value": "10.6"
+        }
+      },
+      "vendor_id": "0x1002",
+      "device_id": ["0x6760", "0x6720"],
+      "features": [
+        "webgl"
+      ]
+    },
+    {
+      "id": 44,
+      "description": "Intel HD 4000 causes kernel panic on Lion",
+      "cr_bugs": [134015],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "between",
+          "value": "10.7.0",
+          "value2": "10.7.4"
+        }
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0x0166"],
+      "multi_gpu_category": "any",
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 45,
+      "description": "Parallels drivers older than 7 are buggy",
+      "cr_bugs": [138105],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x1ab8",
+      "driver_version": {
+        "op": "<",
+        "value": "7"
+      },
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 46,
+      "description": "ATI FireMV 2400 cards on Windows are buggy",
+      "cr_bugs": [124152],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x1002",
+      "device_id": ["0x3151"],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 47,
+      "description": "NVIDIA linux drivers older than 295.* are assumed to be buggy",
+      "cr_bugs": [78497],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x10de",
+      "driver_vendor": "NVIDIA",
+      "driver_version": {
+        "op": "<",
+        "value": "295"
+      },
+      "features": [
+        "all"
+      ]
+    },
+#if !defined(TIZEN_MULTIMEDIA_SUPPORT)
+    {
+      "id": 48,
+      "description": "Accelerated video decode is unavailable on Mac and Linux",
+      "cr_bugs": [137247, 133828],
+      "exceptions": [
+        {
+          "os": {
+            "type": "chromeos"
+          }
+        },
+        {
+          "os": {
+            "type": "win"
+          }
+        },
+        {
+          "os": {
+            "type": "android"
+          }
+        }
+      ],
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+#endif
+    {
+      "id": 49,
+      "description": "NVidia GeForce GT 650M can cause the system to hang with flash 3D",
+      "cr_bugs": [140175],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "between",
+          "value": "10.8.0",
+          "value2": "10.8.1"
+        }
+      },
+      "multi_gpu_style": "optimus",
+      "vendor_id": "0x10de",
+      "device_id": ["0x0fd5"],
+      "features": [
+        "flash_3d",
+        "flash_stage3d"
+      ]
+    },
+    {
+      "id": 50,
+      "description": "Disable VMware software renderer on older Mesa",
+      "cr_bugs": [145531, 332596],
+      "os": {
+        "type": "linux"
+      },
+      "gl_vendor": "VMware.*",
+      "exceptions": [
+        {
+          "driver_vendor": "Mesa",
+          "driver_version": {
+            "op": ">=",
+            "value": "9.2.1"
+          },
+          "gl_renderer": ".*SVGA3D.*"
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 53,
+      "description": "The Intel GMA500 is too slow for Stage3D",
+      "cr_bugs": [152096],
+      "vendor_id": "0x8086",
+      "device_id": ["0x8108", "0x8109"],
+      "features": [
+        "flash_stage3d"
+      ]
+    },
+    {
+      "id": 56,
+      "description": "NVIDIA linux drivers are unstable when using multiple Open GL contexts and with low memory",
+      "cr_bugs": [145600],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x10de",
+      "driver_vendor": "NVIDIA",
+      "features": [
+        "accelerated_video_decode",
+        "flash_3d",
+        "flash_stage3d"
+      ]
+    },
+    {
+      // Panel fitting is only used with OS_CHROMEOS. To avoid displaying an
+      // error in chrome:gpu on every other platform, this blacklist entry needs
+      // to only match on chromeos. The drawback is that panel_fitting will not
+      // appear to be blacklisted if accidentally queried on non-chromeos.
+      "id": 57,
+      "description": "Chrome OS panel fitting is only supported for Intel IVB and SNB Graphics Controllers",
+      "os": {
+        "type": "chromeos"
+      },
+      "exceptions": [
+        {
+          "vendor_id": "0x8086",
+          "device_id": ["0x0106", "0x0116", "0x0166"]
+        }
+      ],
+      "features": [
+        "panel_fitting"
+      ]
+    },
+    {
+      "id": 59,
+      "description": "NVidia driver 8.15.11.8593 is crashy on Windows",
+      "cr_bugs": [155749],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x10de",
+      "driver_version": {
+        "op": "=",
+        "value": "8.15.11.8593"
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 62,
+      "description": "Accelerated 2D canvas buggy on old Qualcomm Adreno",
+      "cr_bugs": [161575],
+      "os": {
+        "type": "android"
+      },
+      "gl_renderer": ".*Adreno.*",
+      "driver_version": {
+        "op": "<",
+        "value": "4.1"
+      },
+      "features": [
+        "accelerated_2d_canvas"
+      ]
+    },
+    {
+      "id": 64,
+      "description": "Hardware video decode is only supported in win7+",
+      "cr_bugs": [159458],
+      "os": {
+        "type": "win",
+        "version": {
+          "op": "<",
+          "value": "6.1"
+        }
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 68,
+      "description": "VMware Fusion 4 has corrupt rendering with Win Vista+",
+      "cr_bugs": [169470],
+      "os": {
+        "type": "win",
+        "version": {
+          "op": ">=",
+          "value": "6.0"
+        }
+      },
+      "vendor_id": "0x15ad",
+      "driver_version": {
+        "op": "<=",
+        "value": "7.14.1.1134"
+      },
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 69,
+      "description": "NVIDIA driver 8.17.11.9621 is buggy with Stage3D baseline mode",
+      "cr_bugs": [172771],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x10de",
+      "driver_version": {
+        "op": "=",
+        "value": "8.17.11.9621"
+      },
+      "features": [
+        "flash_stage3d_baseline"
+      ]
+    },
+    {
+      "id": 70,
+      "description": "NVIDIA driver 8.17.11.8267 is buggy with Stage3D baseline mode",
+      "cr_bugs": [172771],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x10de",
+      "driver_version": {
+        "op": "=",
+        "value": "8.17.11.8267"
+      },
+      "features": [
+        "flash_stage3d_baseline"
+      ]
+    },
+    {
+      "id": 71,
+      "description": "All Intel drivers before 8.15.10.2021 are buggy with Stage3D baseline mode",
+      "cr_bugs": [172771],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x8086",
+      "driver_version": {
+        "op": "<",
+        "value": "8.15.10.2021"
+      },
+      "features": [
+        "flash_stage3d_baseline"
+      ]
+    },
+    {
+      "id": 72,
+      "description": "NVIDIA GeForce 6200 LE is buggy with WebGL",
+      "cr_bugs": [232529],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x0163"],
+      "features": [
+        "webgl"
+      ]
+    },
+    {
+      "id": 73,
+      "description": "WebGL is buggy with the NVIDIA GeForce GT 330M, 9400, and 9400M on MacOSX earlier than 10.8",
+      "cr_bugs": [233523],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<",
+          "value": "10.8"
+        }
+      },
+      "vendor_id": "0x10de",
+      "device_id": ["0x0a29", "0x0861", "0x0863"],
+      "features": [
+        "webgl"
+      ]
+    },
+    {
+      "id": 74,
+      "description": "GPU access is blocked if users don't have proper graphics driver installed after Windows installation",
+      "cr_bugs": [248178],
+      "os": {
+        "type": "win"
+      },
+      "driver_vendor": "Microsoft",
+      "exceptions": [
+        {
+          "vendor_id": "0x1414",
+          "device_id": ["0x02c1"]
+        }
+      ],
+      "features": [
+        "all"
+      ]
+    },
+)  // String split to avoid MSVC char limit.
+LONG_STRING_CONST(
+    {
+      "id": 76,
+      "description": "WebGL is disabled on Android unless GPU reset notification is supported",
+      "os": {
+        "type": "android"
+      },
+      "exceptions": [
+        {
+          "gl_reset_notification_strategy": {
+            "op": "=",
+            "value": "33362"
+          }
+        },
+        {
+          "gl_renderer": "Mali-400.*",
+          "gl_extensions": ".*EXT_robustness.*"
+        }
+      ],
+      "features": [
+        "webgl"
+      ],
+      // FIXME(heejin): Remove when Mali-T628 DDK provides needed extensions.
+      "disabled": true
+    },
+    {
+      "id": 78,
+      "description": "Accelerated video decode interferes with GPU sandbox on older Intel drivers",
+      "cr_bugs": [180695],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x8086",
+      "driver_version": {
+        "op": "between",
+        "value": "8.15.10.1883",
+        "value2": "8.15.10.2702"
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 79,
+      "description": "Disable GPU on all Windows versions prior to and including Vista",
+      "cr_bugs": [315199],
+      "os": {
+        "type": "win",
+        "version": {
+          "op": "<=",
+          "value": "6.0"
+        }
+      },
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 81,
+      "description": "Apple software renderer used under VMWare hangs on Mac OS 10.6 and 10.7",
+      "cr_bugs": [230931],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "<=",
+          "value": "10.7"
+        }
+      },
+      "vendor_id": "0x15ad",
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 82,
+      "description": "MediaCodec is still too buggy to use for encoding (b/11536167)",
+      "os": {
+        "type": "android"
+      },
+      "features": [
+        "accelerated_video_encode"
+      ]
+    },
+    {
+      "id": 83,
+      "description": "Samsung Galaxy NOTE is too buggy to use for video decoding",
+      "cr_bugs": [308721],
+      "os": {
+        "type": "android",
+        "version": {
+          "op": "<",
+          "value": "4.4"
+        }
+      },
+      "machine_model_name": ["GT-.*"],
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 85,
+      "description": "Samsung Galaxy S4 is too buggy to use for video decoding",
+      "cr_bugs": [329072],
+      "os": {
+        "type": "android",
+        "version": {
+          "op": "<",
+          "value": "4.4"
+        }
+      },
+      "machine_model_name": ["SCH-.*"],
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 86,
+      "description": "Intel Graphics Media Accelerator 3150 causes the GPU process to hang running WebGL",
+      "cr_bugs": [305431],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0xa011"],
+      "features": [
+        "webgl"
+      ]
+    },
+    {
+      "id": 87,
+      "description": "Accelerated video decode on Intel driver 10.18.10.3308 is incompatible with the GPU sandbox",
+      "cr_bugs": [298968],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x8086",
+      "driver_version": {
+        "op": "=",
+        "value": "10.18.10.3308"
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 88,
+      "description": "Accelerated video decode on AMD driver 13.152.1.8000 is incompatible with the GPU sandbox",
+      "cr_bugs": [298968],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x1002",
+      "driver_version": {
+        "op": "=",
+        "value": "13.152.1.8000"
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 89,
+      "description": "Accelerated video decode interferes with GPU sandbox on certain AMD drivers",
+      "cr_bugs": [298968],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x1002",
+      "driver_version": {
+        "op": "between",
+        "value": "8.810.4.5000",
+        "value2": "8.970.100.1100"
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 90,
+      "description": "Accelerated video decode interferes with GPU sandbox on certain NVIDIA drivers",
+      "cr_bugs": [298968],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x10de",
+      "driver_version": {
+        "op": "between",
+        "value": "8.17.12.5729",
+        "value2": "8.17.12.8026"
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 91,
+      "description": "Accelerated video decode interferes with GPU sandbox on certain NVIDIA drivers",
+      "cr_bugs": [298968],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x10de",
+      "driver_version": {
+        "op": "between",
+        "value": "9.18.13.783",
+        "value2": "9.18.13.1090"
+      },
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 92,
+      "description": "Accelerated video decode does not work with the discrete GPU on AMD switchables",
+      "cr_bugs": [298968],
+      "os": {
+        "type": "win"
+      },
+      "multi_gpu_style": "amd_switchable_discrete",
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 93,
+      "description": "GLX indirect rendering (X remoting) is not supported",
+      "cr_bugs": [72373],
+      "os": {
+        "type": "linux"
+      },
+      "direct_rendering": false,
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 94,
+      "description": "Intel driver version 8.15.10.1749 causes GPU process hangs.",
+      "cr_bugs": [350566],
+      "os": {
+        "type": "win"
+      },
+      "vendor_id": "0x8086",
+      "driver_version": {
+        "op": "=",
+        "value": "8.15.10.1749"
+      },
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 95,
+      "description": "AMD driver version 13.101 is unstable on linux.",
+      "cr_bugs": [363378],
+      "os": {
+        "type": "linux"
+      },
+      "vendor_id": "0x1002",
+      "driver_vendor": ".*AMD.*",
+      "driver_version": {
+        "op": "=",
+        "value": "13.101"
+      },
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 96,
+      "description": "GPU rasterization is whitelisted on select devices on Android",
+      "cr_bugs": [362779],
+      "os": {
+        "type": "android"
+      },
+      "exceptions": [
+        {
+          "machine_model_name": ["Nexus 4", "Nexus 5", "Nexus 7",
+                                 "XT1049", "XT1050", "XT1052", "XT1053",
+                                 "XT1055", "XT1056", "XT1058", "XT1060",
+                                 "HTC One",
+                                 "C5303", "C6603", "C6903",
+                                 "GT-I9195",
+                                 "GT-I9505",
+                                 "SAMSUNG-SCH-I337", "SCH-I545", "SGH-M919",
+                                 "SM-N900", "SM-N9005", "SPH-L720",
+                                 "XT907", "XT1032", "XT1033", "XT1080"]
+        },
+        {
+          "os": {
+            "type": "android",
+            "version": {
+              "op": ">=",
+              "value": "4.4.99"
+            }
+          }
+        },
+        {
+          "os": {
+            "type": "android",
+            "version": {
+              "op": ">=",
+              "value": "4.4"
+            }
+          },
+          "gl_type": "gles",
+          "gl_version": {
+            "op": ">=",
+            "value": "3.0"
+          }
+        }
+      ],
+      "features": [
+        "gpu_rasterization"
+      ]
+    },
+    {
+      "id": 99,
+      "description": "GPU rasterization is blacklisted on non-Android",
+      "cr_bugs": [362779],
+      "exceptions": [
+        {
+          "os": {
+            "type": "android"
+          }
+        }
+      ],
+      "features": [
+        "gpu_rasterization"
+      ]
+    },
+    {
+      "id": 100,
+      "description": "GPU rasterization is blacklisted on Nexus 10",
+      "cr_bugs": [407144],
+      "gl_renderer": ".*Mali-T604.*",
+      "features": [
+        "gpu_rasterization"
+      ]
+    },
+    {
+      "id": 101,
+      "description": "Samsung Galaxy Tab is too buggy to use for video decoding",
+      "cr_bugs": [408353],
+      "os": {
+        "type": "android",
+        "version": {
+          "op": "<",
+          "value": "4.4"
+        }
+      },
+      "machine_model_name": ["SM-.*"],
+      "features": [
+        "accelerated_video_decode"
+      ]
+    },
+    {
+      "id": 102,
+      "description": "Accelerated 2D canvas and Ganesh broken on Galaxy Tab 2",
+      "cr_bugs": [416910],
+      "os": {
+        "type": "android"
+      },
+      "gl_renderer": "PowerVR SGX 540",
+      "features": [
+        "accelerated_2d_canvas",
+        "gpu_rasterization"
+      ]
+    },
+    {
+      "id": 103,
+      "description": "Intel GM965/GL960 crash often on Mac OS 10.6",
+      "cr_bugs": [421641],
+      "os": {
+        "type": "macosx",
+        "version": {
+          "op": "=",
+          "value": "10.6"
+        }
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0x2a02"],
+      "features": [
+        "all"
+      ]
+    },
+    {
+      "id": 104,
+      "description": "GPU raster broken on PowerVR Rogue",
+      "cr_bugs": [436331],
+      "os": {
+        "type": "android",
+        "version": {
+          "op": "<",
+          "value": "5.0"
+        }
+      },
+      "gl_renderer": "PowerVR Rogue.*",
+      "features": [
+        "accelerated_2d_canvas",
+        "gpu_rasterization"
+      ]
+    }
+  ]
+}
+
+);  // LONG_STRING_CONST macro
+
+}  // namespace gpu