1 // Copyright (c) 2012 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 var commandLineFlags = ['--flag-switches-begin', 5 '--show-composited-layer-borders', 6 '--show-fps-counter', 7 '--flag-switches-end']; 8 var commandLineStr = './out/Debug/chrome ' + commandLineFlags.join(' '); 9 10 var glValueArray = ['GL_ARB_compatibility', 11 'GL_ARB_copy_buffer', 12 'GL_ARB_depth_buffer_float', 13 'GL_ARB_depth_clamp', 14 'GL_ARB_depth_texture', 15 'GL_ARB_draw_buffers', 16 'GL_ARB_draw_elements_base_vertex', 17 'GL_ARB_draw_instanced', 18 'GL_ARB_fragment_coord_conventions', 19 'GL_ARB_fragment_program', 20 'GL_ARB_fragment_program_shadow', 21 'GL_ARB_fragment_shader', 22 'GL_ARB_framebuffer_object', 23 'GL_ARB_framebuffer_sRGB', 24 'GL_ARB_geometry_shader4', 25 'GL_ARB_half_float_pixel', 26 'GL_ARB_half_float_vertex', 27 'GL_ARB_imaging', 28 'GL_ARB_map_buffer_range', 29 'GL_ARB_multisample', 30 'GL_ARB_multitexture', 31 'GL_ARB_occlusion_query', 32 'GL_ARB_pixel_buffer_object', 33 'GL_ARB_point_parameters', 34 'GL_ARB_point_sprite', 35 'GL_ARB_provoking_vertex', 36 'GL_ARB_seamless_cube_map', 37 'GL_ARB_shader_objects', 38 'GL_ARB_shading_language_100', 39 'GL_ARB_shadow', 40 'GL_ARB_sync', 41 'GL_ARB_texture_border_clamp', 42 'GL_ARB_texture_buffer_object', 43 'GL_ARB_texture_compression', 44 'GL_ARB_texture_compression_rgtc', 45 'GL_ARB_texture_cube_map', 46 'GL_ARB_texture_env_add', 47 'GL_ARB_texture_env_combine', 48 'GL_ARB_texture_env_crossbar', 49 'GL_ARB_texture_env_dot3', 50 'GL_ARB_texture_float', 51 'GL_ARB_texture_mirrored_repeat', 52 'GL_ARB_texture_multisample', 53 'GL_ARB_texture_non_power_of_two', 54 'GL_ARB_texture_rectangle', 55 'GL_ARB_texture_rg', 56 'GL_ARB_transpose_matrix', 57 'GL_ARB_uniform_buffer_object', 58 'GL_ARB_vertex_array_bgra', 59 'GL_ARB_vertex_array_object', 60 'GL_ARB_vertex_buffer_object', 61 'GL_ARB_vertex_program', 62 'GL_ARB_vertex_shader', 63 'GL_ARB_window_pos', 64 'GL_ATI_draw_buffers', 65 'GL_ATI_texture_float', 66 'GL_ATI_texture_mirror_once', 67 'GL_S3_s3tc', 68 'GL_EXT_texture_env_add', 69 'GL_EXT_abgr', 70 'GL_EXT_bgra', 71 'GL_EXT_bindable_uniform', 72 'GL_EXT_blend_color', 73 'GL_EXT_blend_equation_separate', 74 'GL_EXT_blend_func_separate', 75 'GL_EXT_blend_minmax', 76 'GL_EXT_blend_subtract', 77 'GL_EXT_compiled_vertex_array', 78 'GL_EXT_Cg_shader', 79 'GL_EXT_depth_bounds_test', 80 'GL_EXT_direct_state_access', 81 'GL_EXT_draw_buffers2', 82 'GL_EXT_draw_instanced', 83 'GL_EXT_draw_range_elements', 84 'GL_EXT_fog_coord', 85 'GL_EXT_framebuffer_blit', 86 'GL_EXT_framebuffer_multisample', 87 'GL_EXTX_framebuffer_mixed_formats', 88 'GL_EXT_framebuffer_object', 89 'GL_EXT_framebuffer_sRGB', 90 'GL_EXT_geometry_shader4', 91 'GL_EXT_gpu_program_parameters', 92 'GL_EXT_gpu_shader4', 93 'GL_EXT_multi_draw_arrays', 94 'GL_EXT_packed_depth_stencil', 95 'GL_EXT_packed_float', 96 'GL_EXT_packed_pixels', 97 'GL_EXT_pixel_buffer_object', 98 'GL_EXT_point_parameters', 99 'GL_EXT_provoking_vertex', 100 'GL_EXT_rescale_normal', 101 'GL_EXT_secondary_color', 102 'GL_EXT_separate_shader_objects', 103 'GL_EXT_separate_specular_color', 104 'GL_EXT_shadow_funcs', 105 'GL_EXT_stencil_two_side', 106 'GL_EXT_stencil_wrap', 107 'GL_EXT_texture3D', 108 'GL_EXT_texture_array', 109 'GL_EXT_texture_buffer_object', 110 'GL_EXT_texture_compression_latc', 111 'GL_EXT_texture_compression_rgtc', 112 'GL_EXT_texture_compression_s3tc', 113 'GL_EXT_texture_cube_map', 114 'GL_EXT_texture_edge_clamp', 115 'GL_EXT_texture_env_combine', 116 'GL_EXT_texture_env_dot3', 117 'GL_EXT_texture_filter_anisotropic', 118 'GL_EXT_texture_integer', 119 'GL_EXT_texture_lod', 120 'GL_EXT_texture_lod_bias', 121 'GL_EXT_texture_mirror_clamp', 122 'GL_EXT_texture_object', 123 'GL_EXT_texture_shared_exponent', 124 'GL_EXT_texture_sRGB', 125 'GL_EXT_texture_swizzle', 126 'GL_EXT_timer_query', 127 'GL_EXT_vertex_array', 128 'GL_EXT_vertex_array_bgra', 129 'GL_IBM_rasterpos_clip', 130 'GL_IBM_texture_mirrored_repeat', 131 'GL_KTX_buffer_region', 132 'GL_NV_blend_square', 133 'GL_NV_conditional_render', 134 'GL_NV_copy_depth_to_color', 135 'GL_NV_copy_image', 136 'GL_NV_depth_buffer_float', 137 'GL_NV_depth_clamp', 138 'GL_NV_explicit_multisample', 139 'GL_NV_fence', 140 'GL_NV_float_buffer', 141 'GL_NV_fog_distance', 142 'GL_NV_fragment_program', 143 'GL_NV_fragment_program_option', 144 'GL_NV_fragment_program2', 145 'GL_NV_framebuffer_multisample_coverage', 146 'GL_NV_geometry_shader4', 147 'GL_NV_gpu_program4', 148 'GL_NV_half_float', 149 'GL_NV_light_max_exponent', 150 'GL_NV_multisample_coverage', 151 'GL_NV_multisample_filter_hint', 152 'GL_NV_occlusion_query', 153 'GL_NV_packed_depth_stencil', 154 'GL_NV_parameter_buffer_object', 155 'GL_NV_parameter_buffer_object2', 156 'GL_NV_pixel_data_range', 157 'GL_NV_point_sprite', 158 'GL_NV_primitive_restart', 159 'GL_NV_register_combiners', 160 'GL_NV_register_combiners2', 161 'GL_NV_shader_buffer_load', 162 'GL_NV_texgen_reflection', 163 'GL_NV_texture_barrier', 164 'GL_NV_texture_compression_vtc', 165 'GL_NV_texture_env_combine4', 166 'GL_NV_texture_expand_normal', 167 'GL_NV_texture_rectangle', 168 'GL_NV_texture_shader', 169 'GL_NV_texture_shader2', 170 'GL_NV_texture_shader3', 171 'GL_NV_transform_feedback', 172 'GL_NV_vertex_array_range', 173 'GL_NV_vertex_array_range2', 174 'GL_NV_vertex_buffer_unified_memory', 175 'GL_NV_vertex_program', 176 'GL_NV_vertex_program1_1', 177 'GL_NV_vertex_program2', 178 'GL_NV_vertex_program2_option', 179 'GL_NV_vertex_program3', 180 'GL_NVX_conditional_render', 181 'GL_NVX_gpu_memory_info', 182 'GL_SGIS_generate_mipmap', 183 'GL_SGIS_texture_lod', 184 'GL_SGIX_depth_texture', 185 'GL_SGIX_shadow', 186 'GL_SUN_slice_accum']; 187 (function() { 188 var dataSets = [ 189 { 190 name: 'full_data_linux', 191 gpuInfo: { 192 basic_info: [ 193 { 194 description: 'Initialization time', 195 value: '111' 196 }, 197 { 198 description: 'Vendor Id', 199 value: '0x10de' 200 }, 201 { 202 description: 'Device Id', 203 value: '0x0658' 204 }, 205 { 206 description: 'Driver vendor', 207 value: 'NVIDIA' 208 }, 209 { 210 description: 'Driver version', 211 value: '195.36.24' 212 }, 213 { 214 description: 'Driver date', 215 value: '' 216 }, 217 { 218 description: 'Pixel shader version', 219 value: '1.50' 220 }, 221 { 222 description: 'Vertex shader version', 223 value: '1.50' 224 }, 225 { 226 description: 'GL version', 227 value: '3.2' 228 }, 229 { 230 description: 'GL_VENDOR', 231 value: 'NVIDIA Corporation' 232 }, 233 { 234 description: 'GL_RENDERER', 235 value: 'Quadro FX 380/PCI/SSE2' 236 }, 237 { 238 description: 'GL_VERSION', 239 value: '3.2.0 NVIDIA 195.36.24' 240 }, 241 { 242 description: 'GL_EXTENSIONS', 243 value: glValueArray.join(' '), 244 } 245 ], 246 featureStatus: { 247 featureStatus: 248 [ 249 {'status': 'enabled', name: '2d_canvas'}, 250 {'status': 'enabled', name: '3d_css'}, 251 {'status': 'enabled', name: 'compositing'}, 252 {'status': 'enabled', name: 'webgl'}, 253 {'status': 'enabled', name: 'multisampling'} 254 ], 255 problems: [] 256 } 257 }, 258 clientInfo: { 259 blacklist_version: '1.10', 260 command_line: commandLineStr, 261 version: 'Chrome/12.0.729.0', 262 }, 263 logMessages: [] 264 }, 265 { 266 name: 'no_data', 267 gpuInfo: undefined, 268 clientInfo: undefined, 269 logMessages: undefined 270 }, 271 { 272 name: 'logs', 273 gpuInfo: undefined, 274 clientInfo: undefined, 275 logMessages: [ 276 {header: 'foo', message: 'Bar'} 277 ] 278 }, 279 280 // tests for 'status' 281 { 282 name: 'feature_states', 283 gpuInfo: { 284 basic_info: undefined, 285 featureStatus: { 286 featureStatus: [ 287 {'status': 'disabled_off', name: '2d_canvas'}, 288 {'status': 'unavailable_software', name: '3d_css'}, 289 {'status': 'disabled_software', name: 'compositing'}, 290 {'status': 'software', name: 'compositing'}, 291 {'status': 'unavailable_off', name: 'webgl'}, 292 {'status': 'enabled', name: 'multisampling'} 293 ], 294 problems: [ 295 { 296 description: 'Something wrong', 297 crBugs: [], 298 webkitBugs: [] 299 }, 300 { 301 description: 'SomethingElse', 302 crBugs: [], 303 webkitBugs: [] 304 }, 305 { 306 description: 'WebKit and Chrome bug', 307 crBugs: [23456], 308 webkitBugs: [789, 2123] 309 } 310 ] 311 } 312 }, 313 clientInfo: undefined, 314 logMessages: [] 315 } 316 317 ]; 318 319 var selectEl = document.createElement('select'); 320 for (var i = 0; i < dataSets.length; ++i) { 321 var optionEl = document.createElement('option'); 322 optionEl.textContent = dataSets[i].name; 323 optionEl.dataSet = dataSets[i]; 324 selectEl.add(optionEl); 325 } 326 selectEl.addEventListener('change', function() { 327 browserBridge.applySimulatedData_(dataSets[selectEl.selectedIndex]); 328 }); 329 selectEl.addEventListener('keydown', function() { 330 window.setTimeout(function() { 331 browserBridge.applySimulatedData_(dataSets[selectEl.selectedIndex]); 332 }, 0); 333 }); 334 335 var controlEl = document.createElement('div'); 336 var textEl = document.createElement('span'); 337 textEl.textContent = 'GPU Info:'; 338 controlEl.appendChild(textEl); 339 controlEl.appendChild(selectEl); 340 341 document.querySelector('#debug-div').appendChild(controlEl, 342 document.body.firstChild); 343 344 browserBridge.applySimulatedData_(dataSets[0]); 345 346 })(); 347