Commit f0ea83a4 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Initial support for ES3.1

Bug: angleproject:3520 Bug: angleproject:3521 Change-Id: I49d67cae0bba3e147c7a83c10e09fe1ee5ff0824 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678400Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent a9dfb3ba
......@@ -1107,10 +1107,10 @@ std::string RendererVk::getRendererDescription() const
gl::Version RendererVk::getMaxSupportedESVersion() const
{
// Current highest supported version
gl::Version maxVersion = gl::Version(3, 0);
gl::Version maxVersion = gl::Version(3, 1);
#if ANGLE_VULKAN_CONFORMANT_CONFIGS_ONLY
// TODO: Disallow ES 3.0 until supported. http://crbug.com/angleproject/2950
// TODO: Disallow ES 3.0+ until supported. http://crbug.com/angleproject/2950
maxVersion = gl::Version(2, 0);
#endif
......@@ -1133,8 +1133,8 @@ gl::Version RendererVk::getMaxSupportedESVersion() const
void RendererVk::initFeatures(const ExtensionNameList &deviceExtensionNames)
{
// Use OpenGL line rasterization rules by default.
// TODO(jmadill): Fix Android support. http://anglebug.com/2830
// Use OpenGL line rasterization rules by default.
// TODO(jmadill): Fix Android support. http://anglebug.com/2830
#if defined(ANGLE_PLATFORM_ANDROID)
mFeatures.basicGLLineRasterization.enabled = false;
#else
......
......@@ -1035,4 +1035,9 @@ if (build_angle_deqp_tests && !is_fuchsia) {
defines = [ "ANGLE_DEQP_KHR_GLES3_TESTS" ]
mustpass_name = "gles3-khr-master.txt"
}
angle_deqp_khr_gtest("khr_gles31") {
defines = [ "ANGLE_DEQP_KHR_GLES31_TESTS" ]
mustpass_name = "gles31-khr-master.txt"
}
}
......@@ -76,14 +76,16 @@ const char *gCaseListFiles[] = {OPENGL_CTS_DIR("aosp_mustpass/master/gles2-maste
OPENGL_CTS_DIR("aosp_mustpass/master/gles31-master.txt"),
"/android/cts/master/egl-master.txt",
OPENGL_CTS_DIR("khronos_mustpass/master/gles2-khr-master.txt"),
OPENGL_CTS_DIR("khronos_mustpass/master/gles3-khr-master.txt")};
OPENGL_CTS_DIR("khronos_mustpass/master/gles3-khr-master.txt"),
OPENGL_CTS_DIR("khronos_mustpass/master/gles31-khr-master.txt")};
#undef OPENGL_CTS_DIR
const char *gTestExpectationsFiles[] = {
"deqp_gles2_test_expectations.txt", "deqp_gles3_test_expectations.txt",
"deqp_gles31_test_expectations.txt", "deqp_egl_test_expectations.txt",
"deqp_khr_gles2_test_expectations.txt", "deqp_khr_gles3_test_expectations.txt",
"deqp_gles2_test_expectations.txt", "deqp_gles3_test_expectations.txt",
"deqp_gles31_test_expectations.txt", "deqp_egl_test_expectations.txt",
"deqp_khr_gles2_test_expectations.txt", "deqp_khr_gles3_test_expectations.txt",
"deqp_khr_gles31_test_expectations.txt",
};
using APIInfo = std::pair<const char *, GPUTestConfig::API>;
......@@ -544,6 +546,10 @@ ANGLE_INSTANTIATE_DEQP_TEST_CASE(KHR_GLES2, 4);
ANGLE_INSTANTIATE_DEQP_TEST_CASE(KHR_GLES3, 5);
#endif
#ifdef ANGLE_DEQP_KHR_GLES31_TESTS
ANGLE_INSTANTIATE_DEQP_TEST_CASE(KHR_GLES31, 6);
#endif
void HandleDisplayType(const char *displayTypeString)
{
std::stringstream argStream;
......
......@@ -610,3 +610,114 @@
1442 D3D11 : dEQP-GLES31.functional.layout_binding.image.* = SKIP
// This case is skipped since it uses atomic counter builtin functions which haven't been implemented.
1729 D3D11 : dEQP-GLES31.functional.state_query.program.active_atomic_counter_buffers_get_programiv = SKIP
// General Vulkan failures
// Limits:
// MAX_COMBINED_SHADER_OUTPUT_RESOURCES is 0
3520 VULKAN : dEQP-GLES31.functional.ubo.* = FAIL
3520 VULKAN : dEQP-GLES31.functional.texture.gather.* = FAIL
3520 VULKAN : dEQP-GLES31.functional.state_query.shader.sampler_type = FAIL
3520 VULKAN : dEQP-GLES31.functional.vertex_attribute_binding.usage.* = FAIL
3520 VULKAN : dEQP-GLES31.functional.program_uniform.* = FAIL
3520 VULKAN : dEQP-GLES31.functional.state_query.integer.max_combined_shader_output_resources* = FAIL
3520 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.* = FAIL
3520 VULKAN : dEQP-GLES31.functional.layout_binding.sampler.* = FAIL
3520 VULKAN : dEQP-GLES31.functional.layout_binding.ubo.* = FAIL
// MAX_FRAMEBUFFER_SAMPLES is 0
3520 VULKAN : dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples* = FAIL
// MAX_UNIFORM_LOCATIONS is 0
3520 VULKAN : dEQP-GLES31.functional.state_query.integer.max_uniform_locations* = FAIL
// Compute shaders:
3562 VULKAN : dEQP-GLES31.functional.shaders.builtin_var.compute.* = FAIL
3562 VULKAN : dEQP-GLES31.functional.compute.* = FAIL
3562 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.common.*compute = FAIL
3562 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.precision*compute* = FAIL
3562 VULKAN : dEQP-GLES31.functional.state_query.*.max_compute_* = FAIL
3562 VULKAN : dEQP-GLES31.functional.state_query.program.compute_work_group_size_get_programiv = FAIL
3562 VULKAN : dEQP-GLES31.functional.debug.*.compute.* = SKIP
3562 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_limited_query.resource_*query = FAIL
3562 VULKAN : dEQP-GLES31.functional.program_interface_query.program_*.resource_list.compute.empty = FAIL
// Shader support:
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.integer.* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.uniform.* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.texture_size.* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.functions* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.arrays* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.linkage*uniform* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_constants.core.max_* = FAIL
3569 VULKAN : dEQP-GLES31.functional.shaders.uniform_block.es31.valid.* = FAIL
3569 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.*float_struct = FAIL
// Explicit uniform locations:
3597 VULKAN : dEQP-GLES31.functional.uniform_location.* = FAIL
// Indirect draw:
3564 VULKAN : dEQP-GLES31.functional.draw_indirect.* = FAIL
// Tessellation geometry interaction:
3572 VULKAN : dEQP-GLES31.functional.tessellation_geometry_interaction.* = FAIL
// SSBO:
3561 VULKAN : dEQP-GLES31.functional.ssbo.* = FAIL
3566 VULKAN : dEQP-GLES31.functional.state_query.integer.max_*shader_storage_block* = FAIL
3566 VULKAN : dEQP-GLES31.functional.state_query.*shader_storage_buffer* = FAIL
3563 VULKAN : dEQP-GLES31.functional.synchronization.*.ssbo* = FAIL
// Atomic counters:
3566 VULKAN : dEQP-GLES31.functional.atomic_counter.* = FAIL
3566 VULKAN : dEQP-GLES31.functional.state_query.*atomic_counter* = FAIL
3563 VULKAN : dEQP-GLES31.functional.synchronization.*.atomic_counter* = FAIL
// Storage image:
3563 VULKAN : dEQP-GLES31.functional.state_query.*image* = FAIL
3563 VULKAN : dEQP-GLES31.functional.synchronization.*.image* = FAIL
// Framebuffer parameters (FRAMEBUFFER_DEFAULT_SAMPLES):
3520 VULKAN : dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default_samples_get_framebuffer_parameteriv = FAIL
// Framebuffer without attachments:
3579 VULKAN : dEQP-GLES31.functional.fbo.no_attachments.* = FAIL
// Separate shader objects:
3570 VULKAN : dEQP-GLES31.functional.program_interface_query.*separable_* = FAIL
3570 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.random.* = FAIL
// Debug:
3590 VULKAN : dEQP-GLES31.functional.debug.negative_coverage.*.shader.uniform*_incompatible_type = FAIL
3590 VULKAN : dEQP-GLES31.functional.debug.negative_coverage.*.shader.uniform*_invalid_count = FAIL
3590 VULKAN : dEQP-GLES31.functional.debug.negative_coverage.*.state.get_*uniform* = FAIL
3590 VULKAN : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.* = FAIL
3590 VULKAN : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.* = FAIL
// Transform feedback:
3205 VULKAN : dEQP-GLES31.functional.debug.*.begin_query = SKIP
// Stencil textures (some missing support for 3D and 2D array textures):
3585 VULKAN : dEQP-GLES31.functional.stencil_texturing.* = SKIP
// Multisampled textures:
3565 VULKAN : dEQP-GLES31.functional.texture.multisample.* = SKIP
3565 VULKAN : dEQP-GLES31.functional.state_query.texture.*multisample.* = SKIP
// Base texture level:
3148 VULKAN : dEQP-GLES31.functional.texture.gather.*base_level* = SKIP
// 2D array textures:
3189 VULKAN : dEQP-GLES31.functional.texture.gather.*2d_array* = SKIP
3189 VULKAN : dEQP-GLES31.functional.state_query.*2d_array* = SKIP
// Compressed integer textures:
3520 VULKAN : dEQP-GLES31.functional.state_query.texture_level.texture_2d.compressed_integer = SKIP
3520 VULKAN : dEQP-GLES31.functional.state_query.texture_level.texture_2d.compressed_float = SKIP
// Validation errors:
// Optimal tiling not supported for format:
3520 VULKAN : dEQP-GLES31.functional.state_query.texture_level.texture* = SKIP
// Copyright 2019 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.
// This file contains a list of defective dEQP conformance tests. The expected
// format is:
// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
//
// MODIFIERS can be a combination of the below list, combined with a logical AND:
// WIN XP VISTA WIN7 WIN8 WIN10
// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
// LINUX CHROMEOS ANDROID
// NVIDIA AMD INTEL
// DEBUG RELEASE
// D3D9 D3D11 OPENGL GLES VULKAN
// NEXUS5X PIXEL2
// QUADROP400
//
//
// TEST_NAME can be a specific test name, or have a '*' in the end, which
// indicates a prefix matching.
//
// Examples:
// fails on both windows and mac (crash)
// 91530 WIN : context_lost_restored = SKIP
// 91530 MAC : context_lost_restored = SKIP
// fails on windows using NVIDIA GPUs
// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
// fails on Nexus5X with GLES backend (hangs)
// 91531 NEXUS5X GLES : conformance_more_* = SKIP
// For now we only log Vulkan test expectations. More back-ends can follow as we need them.
// Limits:
3520 VULKAN : KHR-GLES31.core.texture_gather* = FAIL
3520 VULKAN : KHR-GLES31.core.layout_binding.sampler2D_* = FAIL
3520 VULKAN : KHR-GLES31.core.layout_binding.block_* = FAIL
// Compute shaders
3562 VULKAN : KHR-GLES31.core.constant_expressions.basic_radians_float_* = FAIL
// Multisampled textures:
3565 VULKAN : KHR-GLES31.core.texture_storage_multisample.* = SKIP
// 2D array textures:
3189 VULKAN : KHR-GLES31.core.texture_gather*2darray = SKIP
3189 VULKAN : KHR-GLES31.core.layout_binding.sampler2DArray_* = SKIP
// 3D textures:
3188 VULKAN : KHR-GLES31.core.layout_binding.sampler3D_* = SKIP
// Base texture level:
3184 VULKAN : KHR-GLES31.core.texture*base-level* = SKIP
// Atomic counters:
3566 VULKAN : KHR-GLES31.core.shader_atomic_counters* = FAIL
// RGBA32F:
3520 VULKAN : KHR-GLES31.core.texture_gather.*-gather-float-2d-rgb = SKIP
// Separate shader objects:
3570 VULKAN : KHR-GLES31.core.sepshaderobjs* = FAIL
// Shader support:
3569 VULKAN : KHR-GLES31.core.shader_bitfield_operation* = FAIL
3569 VULKAN : KHR-GLES31.core.shader_integer_mix.* = FAIL
......@@ -667,6 +667,16 @@ PlatformParameters ES3_VULKAN_NULL()
return PlatformParameters(3, 0, egl_platform::VULKAN_NULL());
}
PlatformParameters ES31_VULKAN()
{
return PlatformParameters(3, 1, egl_platform::VULKAN());
}
PlatformParameters ES31_VULKAN_NULL()
{
return PlatformParameters(3, 1, egl_platform::VULKAN_NULL());
}
PlatformParameters ES2_WGL()
{
return PlatformParameters(2, 0, GLESDriverType::SystemWGL);
......
......@@ -178,6 +178,8 @@ PlatformParameters ES2_VULKAN();
PlatformParameters ES2_VULKAN_NULL();
PlatformParameters ES3_VULKAN();
PlatformParameters ES3_VULKAN_NULL();
PlatformParameters ES31_VULKAN();
PlatformParameters ES31_VULKAN_NULL();
PlatformParameters ES2_WGL();
PlatformParameters ES3_WGL();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment