Home | History | Annotate | Download | only in gpu_internals
      1 // Copyright (c) 2011 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 (function() {
      5    var dataSets = [
      6      {
      7        name: "full_data_linux",
      8        gpuInfo: {"basic_info":[{"description":"Initialization time","value":"111"},{"description":"Vendor Id","value":"0x10de"},{"description":"Device Id","value":"0x0658"},{"description":"Driver vendor","value":"NVIDIA"},{"description":"Driver version","value":"195.36.24"},{"description":"Driver date","value":""},{"description":"Pixel shader version","value":"1.50"},{"description":"Vertex shader version","value":"1.50"},{"description":"GL version","value":"3.2"},{"description":"GL_VENDOR","value":"NVIDIA Corporation"},{"description":"GL_RENDERER","value":"Quadro FX 380/PCI/SSE2"},{"description":"GL_VERSION","value":"3.2.0 NVIDIA 195.36.24"},{"description":"GL_EXTENSIONS","value":"GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_fragment_coord_conventions GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_map_buffer_range GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_seamless_cube_map GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ARB_shadow GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_compression GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc GL_EXT_texture_env_add GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_Cg_shader GL_EXT_depth_bounds_test GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXTX_framebuffer_mixed_formats GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_shader_objects GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_buffer_object GL_EXT_texture_compression_latc GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_blend_square GL_NV_conditional_render GL_NV_copy_depth_to_color GL_NV_copy_image GL_NV_depth_buffer_float GL_NV_depth_clamp GL_NV_explicit_multisample GL_NV_fence GL_NV_float_buffer GL_NV_fog_distance GL_NV_fragment_program GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_framebuffer_multisample_coverage GL_NV_geometry_shader4 GL_NV_gpu_program4 GL_NV_half_float GL_NV_light_max_exponent GL_NV_multisample_coverage GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_packed_depth_stencil GL_NV_parameter_buffer_object GL_NV_parameter_buffer_object2 GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_primitive_restart GL_NV_register_combiners GL_NV_register_combiners2 GL_NV_shader_buffer_load GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_texture_compression_vtc GL_NV_texture_env_combine4 GL_NV_texture_expand_normal GL_NV_texture_rectangle GL_NV_texture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_transform_feedback GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_buffer_unified_memory GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_program2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NVX_conditional_render GL_NVX_gpu_memory_info GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum "}],
      9                  "featureStatus": {
     10                    "featureStatus":
     11                    [
     12                      {"status":"enabled","name":"2d_canvas"},
     13                      {"status":"enabled","name":"3d_css"},
     14                      {"status":"enabled","name":"compositing"},
     15                      {"status":"enabled","name":"webgl"},
     16                      {"status":"enabled","name":"multisampling"}
     17                    ],
     18                    "problems":[]
     19                  }
     20                 },
     21        clientInfo: {"blacklist_version":"1.10","cl":"80750-dirty","command_line":"./out/Debug/chrome --flag-switches-begin --show-composited-layer-borders --show-fps-counter --flag-switches-end","official":"Developer Build","version":"12.0.729.0","version_mod":""},
     22        logMessages: [ ]
     23      },
     24      {
     25        name: "no_data",
     26        gpuInfo: undefined,
     27        clientInfo: undefined,
     28        logMessages: undefined
     29      },
     30      {
     31        name: "logs",
     32        gpuInfo: undefined,
     33        clientInfo: undefined,
     34        logMessages: [
     35          {"header": "foo", "message": "Bar"}
     36        ]
     37      },
     38 
     39      // tests for status
     40      {
     41        name: "feature_states",
     42        gpuInfo: {"basic_info":undefined,
     43                  "featureStatus": {
     44                    "featureStatus":
     45                    [
     46                      {"status":"disabled_off","name":"2d_canvas"},
     47                      {"status":"unavailable_software","name":"3d_css"},
     48                      {"status":"disabled_software","name":"compositing"},
     49                      {"status":"software","name":"compositing"},
     50                      {"status":"unavailable_off","name":"webgl"},
     51                      {"status":"enabled","name":"multisampling"}
     52                    ],
     53                    "problems":[
     54                      {description: "Something wrong", crBugs: [], webkitBugs: []},
     55                      {description: "SomethingElse", crBugs: [], webkitBugs: []},
     56                      {
     57                        description: "WebKit and Chrome bug",
     58                        crBugs: [23456],
     59                        webkitBugs: [789,2123]
     60                      }
     61                    ]
     62                  }
     63                 },
     64        clientInfo: undefined,
     65        logMessages: [ ]
     66      }
     67 
     68    ];
     69 
     70    var selectEl = document.createElement('select');
     71    for(var i = 0; i < dataSets.length; ++i) {
     72      var optionEl = document.createElement('option');
     73      optionEl.textContent = dataSets[i].name;
     74      optionEl.dataSet = dataSets[i];
     75      selectEl.add(optionEl);
     76    }
     77    selectEl.addEventListener('change', function() {
     78      browserBridge.applySimulatedData_(dataSets[selectEl.selectedIndex]);
     79    });
     80    selectEl.addEventListener('keydown', function() {
     81      window.setTimeout(function() {
     82        browserBridge.applySimulatedData_(dataSets[selectEl.selectedIndex]);
     83      }, 0);
     84    });
     85 
     86    var controlEl = document.createElement('div');
     87    var textEl = document.createElement('span');
     88    textEl.textContent = 'GPU Info:';
     89    controlEl.appendChild(textEl);
     90    controlEl.appendChild(selectEl);
     91 
     92    document.querySelector('#debug-div').appendChild(controlEl, document.body.firstChild);
     93 
     94    browserBridge.applySimulatedData_(dataSets[0]);
     95 
     96  })();
     97