// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file contains a list of defective GLES2 conformance tests. The expected
// format is:
//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
//
// MODIFIERS can be a combination of the below list:
//  WIN XP VISTA WIN7 MAC LEOPARD SNOWLEOPARD LION LINUX CHROMEOS MOUNTAINLION
//  MAVERICKS
//  NVIDIA AMD INTEL
//  0xabcd - GPU PCI device ID. Specifying a PCI id requires a vendor.
//  DEBUG RELEASE
//
// TEST_NAME can be a specific test name, or have a '*' in the end, which
// indicates a prefix matching.
//
// Any tests whose expectations are not PASS will be skipped on the bots.
//
// Examples:
//  91530 MAC WIN LINUX : context_lost_restored = TIMEOUT
//  91533 WIN : gl_min_uniforms = FAIL
//  91531 MAC WIN LINUX : conformance_more_* = SKIP
//  91532 MAC NVIDIA 0x0640 : tex_image_and_sub_image_2d_with_video = PASS FAIL

612551 WIN LINUX MAC CHROMEOS : GL2ExtensionTests_egl_image_input_run = SKIP

517966 WIN OPENGL : GL2FixedTests_blend_input_run = FAIL
517966 WIN OPENGL : GL2FixedTests_buffer_clear_input_run = FAIL
517966 WIN OPENGL RELEASE : GL2FixedTests_buffer_color_input_run = FAIL
517966 WIN OPENGL : GL2FixedTests_copy_texture_input_run = FAIL
517966 WIN OPENGL : GL2FixedTests_depth_buffer_clear_input_run = FAIL
517966 WIN OPENGL : GL2FixedTests_stencil_plane_clear_input_run = FAIL
517966 WIN OPENGL : GL2FixedTests_user_clip_planes_input_run = FAIL
517966 WIN OPENGL : GL2Tests_framebuffer_objects_input_run = FAIL

490149 WIN OPENGL INTEL : GL2ExtensionTests_dFdy_input_run = FAIL
490149 WIN OPENGL INTEL : GL2Tests_fixed_data_type_input_run = FAIL
490149 WIN OPENGL INTEL : GL2Tests_glUniform_input_run = FAIL
490149 WIN OPENGL INTEL : GL2Tests_three_uniforms_input_run = FAIL
490149 WIN OPENGL INTEL : GL_build_input_run = FAIL

540538 WIN D3D9 INTEL : GL_cos_input_run = FAIL

253674 LION INTEL : GL2ExtensionTests_dFdy_input_run = FAIL
253674 LION INTEL : GL2FixedTests_point_sprites_input_run = FAIL
253674 LION INTEL : GL_control_flow_input_run = FAIL
253674 LION INTEL : GL_dot_input_run = FAIL
253674 LION INTEL : GL_faceforward_input_run = FAIL
253674 LION INTEL : GL_length_input_run = FAIL
253674 LION INTEL : GL_normalize_input_run = FAIL
253674 LION INTEL : GL_reflect_input_run = FAIL
253674 LION INTEL : GL_refract_input_run = FAIL
253674 LION INTEL : GL_tan_input_run = FAIL

253674 LION AMD : GL2FixedTests_point_sprites_input_run = FAIL
253674 LION AMD : GL_dot_input_run = FAIL
253674 LION AMD : GL_length_input_run = FAIL

// See also crbug.com/306485 for non-Lion instances.
253674 MAC AMD : GL_distance_input_run = FAIL

253674 MOUNTAINLION AMD : GL2ExtensionTests_dFdy_input_run = FAIL
253674 MOUNTAINLION AMD : GL2FixedTests_point_sprites_input_run = FAIL
253674 MOUNTAINLION AMD : GL_control_flow_input_run = FAIL
253674 MOUNTAINLION AMD : GL_operators_input_run = FAIL

253674 MOUNTAINLION INTEL : GL2ExtensionTests_dFdy_input_run = FAIL
253674 MOUNTAINLION INTEL : GL2FixedTests_point_sprites_input_run = FAIL
253674 MOUNTAINLION INTEL : GL_control_flow_input_run = FAIL
253674 MOUNTAINLION INTEL : GL_operators_input_run = FAIL

339911 MOUNTAINLION INTEL : GL2FixedTests_blend_input_run = FAIL

253674 MAC : GL2Tests_glUniform_input_run = FAIL
253674 MAC : GL2Tests_three_uniforms_input_run = FAIL

630452 MAC NVIDIA : GL2FixedTests_color_ramp_input_run = SKIP
630452 MAC NVIDIA RELEASE : GL2FixedTests_buffer_color_input_run = SKIP

393677 CHROMEOS INTEL 0xa011 : GL_acos_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_asin_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_atan_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_control_flow_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_cos_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_discard_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_functions_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_gl_FrontFacing_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_log_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_log2_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_normalize_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL_sin_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL2ExtensionTests_dFdx_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL2ExtensionTests_dFdy_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL2ExtensionTests_fwidth_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL2FixedTests_blend_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL2FixedTests_point_rasterization_input_run = FAIL
393677 CHROMEOS INTEL 0xa011 : GL2FixedTests_scissor_input_run = FAIL

598902 LINUX OPENGL INTEL : GL2Tests_fixed_data_type_input_run = FAIL
598902 LINUX OPENGL INTEL : GLCoverage_input_run = FAIL
598902 LINUX OPENGL INTEL : GL2FixedTests_copy_texture_input_run = FAIL

// Test takes too long to run in debug configurations
646442 DEBUG : GL2FixedTests_buffer_color_input_run = SKIP

////////////////////////////////////////////////////////////////////////////////
//
//  Temprory entries: they should be removed once the bugs are fixed.
//
////////////////////////////////////////////////////////////////////////////////

