// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// See README.md for format.

// For now we only log Vulkan test expectations. More back-ends can follow as we need them.

// Geometry shader support (conditioned to windows as that's our only bot capable of running these
// tests)
// Translator's lack of support for redefining gl_PerVertex
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.getProgramiv3 = FAIL
// Failure in translator validation regarding varying arrayness
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.nonarray_input.* = FAIL
// Crash gathering transform feedback varyings on GS-only separable program
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.program_pipeline_vs_gs_capture = SKIP
5579 VULKAN WIN : KHR-GLES32.core.separable_programs_tf.geometry_active = SKIP
// API validation bugs
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.qualifiers.flat_interpolation = FAIL
// Wrong results
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.adjacency.adjacency_indiced_triangle_strip = FAIL
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.adjacency.adjacency_non_indiced_triangle_strip = FAIL
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.rendering.rendering.triangles_input_line_strip_output_triangle_*_drawcall = FAIL
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.rendering.rendering.triangles_input_triangle_strip_output_triangle_*_drawcall = FAIL
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.rendering.rendering.triangles_with_adjacency_input_*_strip_output_triangle_strip_adjacency_drawcall = FAIL
// Layered rendering (only fail when run in sequence, reproduced with --bot-mode)
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.layered_fbo.fb_texture_invalid_level_number = FAIL
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.layered_fbo.fb_texture_argument_refers_to_buffer_texture = FAIL
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.layered_rendering.layered_rendering = FAIL
// Crashes on ASSERT due to mismatch between shader resources and pipeline layout
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.max_image_uniforms = SKIP
// Failures on windows nvidia
5579 VULKAN WIN NVIDIA : KHR-GLES32.core.geometry_shader.limits.max_invocations = FAIL
5579 VULKAN WIN NVIDIA : KHR-GLES32.core.tessellation_shader.single.primitive_coverage = FAIL

// Tessellation shader support
// Failure in translator validation regarding varying arrayness
5557 VULKAN WIN : KHR-GLES32.core.texture_cube_map_array.texture_size_tesselation_con_sh = FAIL
// API validation bugs
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.vertex.vertex_ordering = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_tessLevel = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.compilation_and_linking_errors.tc_non_arrayed_per_vertex_input_variables = FAIL
// Vulkan Validation error regarding buffer usage bits for transform feedback:
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.vertex.vertex_spacing = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.single.program_object_properties = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_MaxPatchVertices_Position_PointSize = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_PatchVerticesIn = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_tessellation.gl_InvocationID_PatchVerticesIn_PrimitiveID = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_tessellation.TCS_TES = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_tessellation.input_patch_discard = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_triangles_tessellation.degenerate_triangle = FAIL
// Missing names in mVariableInfo map (fail on ASSERT in SPIR-V transformer)
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.single.xfb_captures_data_from_correct_stage = SKIP
// Translator validation bugs
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.single.max_patch_vertices = FAIL
// Bug in front-end where builtins are not correctly marked active in every stage
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.data_pass_through = FAIL
// Test failures
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_quads_tessellation.* = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_triangles_tessellation.identical_triangles = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_triangles_tessellation.inner_tessellation_level_rounding = FAIL
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule* = SKIP
// Crash on assert in libcpp. CTS passes to a function '&vector[0], size', where vector is empty.
5557 VULKAN WIN : KHR-GLES32.core.tessellation_shader.tessellation_shader_point_mode.points_verification = SKIP

// Geometry and tessellation failures on the Android and Linux bots, potentially due to missing
// features from old drivers.  On up-to-date Linux, the expectations should be as above for windows.
// No triaging is done to know which of these tests actually fail on the bots.
5579 VULKAN ANDROID : KHR-GLES32.core.geometry_shader.* = SKIP
5579 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.*geometry* = SKIP
5579 VULKAN ANDROID : KHR-GLES32.core.constant_expressions.*geometry = SKIP
5579 VULKAN ANDROID : KHR-GLES32.core.separable_programs_tf.geometry_active = SKIP
5579 VULKAN ANDROID : KHR-GLES32.core.shader_macros.fragment_precision_high_geometry = SKIP
5579 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.color_depth_attachments = SKIP
5579 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.stencil_attachments_*mutable_layered = SKIP
5579 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.fbo_incompleteness = FAIL
5557 VULKAN ANDROID : KHR-GLES32.core.tessellation_shader.* = SKIP
5557 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.*tessellation* = SKIP
5557 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.*tesselation* = SKIP
5557 VULKAN ANDROID : KHR-GLES32.core.constant_expressions.*tess_control = SKIP
5557 VULKAN ANDROID : KHR-GLES32.core.constant_expressions.*tess_eval = SKIP
5557 VULKAN ANDROID : KHR-GLES32.core.separable_programs_tf.tessellation_active = SKIP
5557 VULKAN ANDROID : KHR-GLES32.core.shader_macros.fragment_precision_high_tess_* = SKIP
5557 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.sampling = SKIP

5579 VULKAN LINUX : KHR-GLES32.core.geometry_shader.* = SKIP
5579 VULKAN LINUX : KHR-GLES32.core.texture_cube_map_array.*geometry* = SKIP
5579 VULKAN LINUX : KHR-GLES32.core.constant_expressions.*geometry = SKIP
5579 VULKAN LINUX : KHR-GLES32.core.separable_programs_tf.geometry_active = SKIP
5579 VULKAN LINUX : KHR-GLES32.core.shader_macros.fragment_precision_high_geometry = SKIP
5579 VULKAN LINUX : KHR-GLES32.core.texture_cube_map_array.color_depth_attachments = SKIP
5579 VULKAN LINUX : KHR-GLES32.core.texture_cube_map_array.stencil_attachments_*mutable_layered = SKIP
5579 VULKAN LINUX : KHR-GLES32.core.texture_cube_map_array.fbo_incompleteness = FAIL
5557 VULKAN LINUX : KHR-GLES32.core.tessellation_shader.* = SKIP
5557 VULKAN LINUX : KHR-GLES32.core.texture_cube_map_array.*tessellation* = SKIP
5557 VULKAN LINUX : KHR-GLES32.core.texture_cube_map_array.*tesselation* = SKIP
5557 VULKAN LINUX : KHR-GLES32.core.constant_expressions.*tess_control = SKIP
5557 VULKAN LINUX : KHR-GLES32.core.constant_expressions.*tess_eval = SKIP
5557 VULKAN LINUX : KHR-GLES32.core.separable_programs_tf.tessellation_active = SKIP
5557 VULKAN LINUX : KHR-GLES32.core.shader_macros.fragment_precision_high_tess_* = SKIP
5557 VULKAN LINUX : KHR-GLES32.core.texture_cube_map_array.sampling = SKIP

// Texture border clamp support
3577 VULKAN : KHR-GLES32.core.texture_border_clamp.* = SKIP
3577 VULKAN : KHR-GLES32.core.gpu_shader5.*clamp*_border = SKIP
3577 VULKAN : KHR-GLES32.core.gpu_shader5.*clamp*_edge = SKIP

// Validation error from EXT_gpu_shader5
5361 VULKAN : KHR-GLES32.core.gpu_shader5.precise_qualifier = FAIL

// Constant propagaion error with textureGatherOffsets
5362 VULKAN : KHR-GLES32.core.gpu_shader5.texture_gather_offsets_color = FAIL
5362 VULKAN : KHR-GLES32.core.gpu_shader5.texture_gather_offsets_depth = FAIL

// Validation error from EXT_copy_image
5363 VULKAN : KHR-GLES32.core.copy_image.r32i_texture = FAIL
5363 VULKAN : KHR-GLES32.core.copy_image.r32ui_texture = FAIL

// No known implementation supports STORAGE_TEXEL_BUFFER support for RGB32 formats
3573 VULKAN : KHR-GLES32.core.texture_buffer.texture_buffer_texture_buffer_range = SKIP

// Incorrect dependency to VK_EXT_shader_atomic_float
5342 VULKAN : KHR-GLES32.core.texture_buffer.texture_buffer_atomic_functions = FAIL

// Desktop cards without native etc support
5276 AMD VULKAN : KHR-GLES32.core.texture_cube_map_array.etc2_texture = FAIL
5276 NVIDIA VULKAN : KHR-GLES32.core.texture_cube_map_array.etc2_texture = FAIL

// New failures with latest dEQP roll (2021-03-05)
5722 VULKAN : KHR-GLES32.core.framebuffer_completeness.rbo_and_texture_expect_zero_numsamples = FAIL

// Android failures

// Dynamic indexing features not supported on Qualcomm
5435 VULKAN ANDROID : KHR-GLES32.core.gpu_shader5.images_array_indexing = FAIL

// Texture buffer failures
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_active_uniform_validation_compute_shader = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_active_uniform_validation_fragment_shader = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_conv_int_to_float = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_errors = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_max_size = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_operations_buffer_load = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_operations_cpu_writes = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_operations_framebuffer_readback = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_operations_image_store = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_operations_ssbo_writes = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_operations_transform_feedback = FAIL
5392 VULKAN ANDROID : KHR-GLES32.core.texture_buffer.texture_buffer_parameters = FAIL

// Cube map array failures
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.etc2_texture = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.generate_mip_map_filterable_internalformat_immutable = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.generate_mip_map_filterable_internalformat_mutable = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.generate_mip_map_non_filterable_immutable_storage = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.generate_mip_map_non_filterable_mutable_storage = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.getter_calls = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.image_op_compute_sh = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.stencil_attachments_immutable_nonlayered = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.stencil_attachments_mutable_nonlayered = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.subimage3D = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.tex3D_validation = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.texture_size_compute_sh = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.texture_size_fragment_sh = FAIL
5393 VULKAN ANDROID : KHR-GLES32.core.texture_cube_map_array.texture_size_vertex_sh = FAIL
