Commit cfffc138 by Jamie Madill Committed by Commit Bot

Add KHR-GLES dEQP tests.

This reorganizes the dEQP build targets to allow for better reuse with the new KHR test set. It also adds a single new test target called "angle_deqp_khr_tests" that houses all the new test sets. The new test targets can be compiled now but cannot yet be executed. That new functionality will follow in a subsequent CL. Along with test expectations and integration. Uses a new template type in the build to conslidate GN customization. Adds the GLES 2.0 and 3.0 tests for now. We can follow up with additional work for the GLES 3.1+ tests. Also adds test expectations. Bug: angleproject:3353 Change-Id: Ib0673e97f679c8aa46e27dfa616845a2014a75fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1604070 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
parent 04e389d1
...@@ -60,10 +60,13 @@ std::string DrawElementsToGoogleTestName(const std::string &dEQPName) ...@@ -60,10 +60,13 @@ std::string DrawElementsToGoogleTestName(const std::string &dEQPName)
// of egl-master.txt that has the full list of tests. // of egl-master.txt that has the full list of tests.
const char *gCaseListSearchPaths[] = { const char *gCaseListSearchPaths[] = {
"/../../third_party/deqp/src/external/openglcts/data/mustpass/gles/aosp_mustpass/master/", "/../../third_party/deqp/src/external/openglcts/data/mustpass/gles/aosp_mustpass/master/",
"/../../third_party/deqp/src/external/openglcts/data/mustpass/gles/khronos_mustpass/master/",
"/../../third_party/angle/third_party/deqp/src/external/openglcts/data/mustpass/gles/" "/../../third_party/angle/third_party/deqp/src/external/openglcts/data/mustpass/gles/"
"aosp_mustpass/master/", "aosp_mustpass/master/",
"khronos_mustpass/master/",
"/../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src/external/openglcts/" "/../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src/external/openglcts/"
"data/mustpass/gles/aosp_mustpass/master/", "data/mustpass/gles/aosp_mustpass/master/",
"data/mustpass/gles/khronos_mustpass/master/",
"/../../third_party/deqp/src/android/cts/master/", "/../../third_party/deqp/src/android/cts/master/",
"/../../third_party/angle/third_party/deqp/src/android/cts/master/", "/../../third_party/angle/third_party/deqp/src/android/cts/master/",
"/../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src/android/cts/master/", "/../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src/android/cts/master/",
...@@ -76,18 +79,13 @@ const char *gTestExpectationsSearchPaths[] = { ...@@ -76,18 +79,13 @@ const char *gTestExpectationsSearchPaths[] = {
"/../../sdcard/chromium_tests_root/third_party/angle/src/tests/deqp_support/", "/../../sdcard/chromium_tests_root/third_party/angle/src/tests/deqp_support/",
}; };
const char *gCaseListFiles[] = { const char *gCaseListFiles[] = {"gles2-master.txt", "gles3-master.txt", "gles31-master.txt",
"gles2-master.txt", "egl-master.txt", "gles2-khr-master.txt", "gles3-khr-master.txt"};
"gles3-master.txt",
"gles31-master.txt",
"egl-master.txt",
};
const char *gTestExpectationsFiles[] = { const char *gTestExpectationsFiles[] = {
"deqp_gles2_test_expectations.txt", "deqp_gles2_test_expectations.txt", "deqp_gles3_test_expectations.txt",
"deqp_gles3_test_expectations.txt", "deqp_gles31_test_expectations.txt", "deqp_egl_test_expectations.txt",
"deqp_gles31_test_expectations.txt", "deqp_khr_gles2_test_expectations.txt", "deqp_khr_gles3_test_expectations.txt",
"deqp_egl_test_expectations.txt",
}; };
using APIInfo = std::pair<const char *, GPUTestConfig::API>; using APIInfo = std::pair<const char *, GPUTestConfig::API>;
...@@ -540,6 +538,14 @@ ANGLE_INSTANTIATE_DEQP_TEST_CASE(GLES31, 2); ...@@ -540,6 +538,14 @@ ANGLE_INSTANTIATE_DEQP_TEST_CASE(GLES31, 2);
ANGLE_INSTANTIATE_DEQP_TEST_CASE(EGL, 3); ANGLE_INSTANTIATE_DEQP_TEST_CASE(EGL, 3);
#endif #endif
#ifdef ANGLE_DEQP_KHR_GLES2_TESTS
ANGLE_INSTANTIATE_DEQP_TEST_CASE(KHR_GLES2, 4);
#endif
#ifdef ANGLE_DEQP_KHR_GLES3_TESTS
ANGLE_INSTANTIATE_DEQP_TEST_CASE(KHR_GLES3, 5);
#endif
void HandleDisplayType(const char *displayTypeString) void HandleDisplayType(const char *displayTypeString)
{ {
std::stringstream argStream; std::stringstream argStream;
......
...@@ -35,35 +35,27 @@ tcu::TestContext *g_testCtx = nullptr; ...@@ -35,35 +35,27 @@ tcu::TestContext *g_testCtx = nullptr;
tcu::TestPackageRoot *g_root = nullptr; tcu::TestPackageRoot *g_root = nullptr;
tcu::RandomOrderExecutor *g_executor = nullptr; tcu::RandomOrderExecutor *g_executor = nullptr;
const char *g_dEQPDataSearchDirs[] = { const char *gDataDirHaystack[] = {
"../../../third_party/deqp/src/data", "../../../third_party/deqp/src",
"../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src/data", "../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src",
"../../third_party/angle/third_party/deqp/src/data", "../../third_party/angle/third_party/deqp/src",
"../../third_party/deqp/src/data", "../../third_party/deqp/src",
"../third_party/deqp/src/data", "../third_party/deqp/src",
"data", ".",
"third_party/deqp/src/data", "third_party/deqp/src",
}; };
bool FindDataDir(std::string *dataDirOut) bool FindDataDir(const char *needle, std::string *dataDirOut)
{ {
for (auto searchDir : g_dEQPDataSearchDirs) for (const char *searchDir : gDataDirHaystack)
{ {
if (angle::IsDirectory((std::string(searchDir) + "/gles2").c_str()))
{
*dataDirOut = searchDir;
return true;
}
std::stringstream dirStream; std::stringstream dirStream;
dirStream << angle::GetExecutableDirectory() << "/" << searchDir; dirStream << angle::GetExecutableDirectory() << "/" << searchDir << "/" << needle;
std::string dataDir = dirStream.str(); std::string candidateDataDir = dirStream.str();
dirStream << "/gles2";
std::string searchPath = dirStream.str();
if (angle::IsDirectory(searchPath.c_str())) if (angle::IsDirectory(candidateDataDir.c_str()))
{ {
*dataDirOut = dataDir; *dataDirOut = candidateDataDir;
return true; return true;
} }
} }
...@@ -102,7 +94,7 @@ ANGLE_LIBTESTER_EXPORT bool deqp_libtester_init_platform(int argc, ...@@ -102,7 +94,7 @@ ANGLE_LIBTESTER_EXPORT bool deqp_libtester_init_platform(int argc,
} }
std::string deqpDataDir; std::string deqpDataDir;
if (!FindDataDir(&deqpDataDir)) if (!FindDataDir(ANGLE_DEQP_DATA_DIR, &deqpDataDir))
{ {
std::cout << "Failed to find dEQP data directory." << std::endl; std::cout << "Failed to find dEQP data directory." << std::endl;
return false; return false;
......
// 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
// Relates to a difference in spec with ES and Core GL.
3381 : KHR-GLES2.shaders.negative.initialize = FAIL
// Failures with floating point extensions
3451 D3D9 D3D11 OPENGL GLES : KHR-GLES2.core.internalformat.texture2d.rgb_half_float_rgb16f = FAIL
3451 D3D9 D3D11 OPENGL GLES : KHR-GLES2.core.internalformat.texture2d.rgba_half_float_rgba16f = FAIL
3451 D3D9 D3D11 OPENGL GLES : KHR-GLES2.core.internalformat.texture2d.rgb_half_float_rgb16f_linear = FAIL
3451 D3D9 D3D11 OPENGL GLES : KHR-GLES2.core.internalformat.texture2d.rgba_half_float_rgba16f_linear = FAIL
// 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.
// Crashes trying to load non-existent texture load function.
3455 VULKAN : KHR-GLES3.texture_filter_anisotropic.drawing = SKIP
3455 VULKAN : KHR-GLES3.copy_tex_image_conversions.forbidden.* = SKIP
3455 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.renderbuffer_* = SKIP
3455 VULKAN : KHR-GLES3.packed_pixels.rectangle.r* = SKIP
3455 VULKAN : KHR-GLES3.packed_pixels.pbo_rectangle.r* = SKIP
3455 VULKAN : KHR-GLES3.packed_pixels.pbo_rectangle.srgb8_alpha8 = SKIP
// Failures related to RGB5A1 texture formats.
3456 VULKAN : KHR-GLES3.core.internalformat.texture2d.rgba_unsigned_byte_rgb5_a1 = SKIP
3456 VULKAN : KHR-GLES3.core.internalformat.copy_tex_image.rgb5_a1 = SKIP
// Depth/stencil related failures
3457 VULKAN : KHR-GLES3.core.internalformat.texture2d.depth_stencil_unsigned_int_24_8_depth24_stencil8 = FAIL
3457 VULKAN : KHR-GLES3.packed_pixels.rectangle.depth* = SKIP
3457 VULKAN : KHR-GLES3.packed_pixels.pbo_rectangle.depth* = SKIP
3457 VULKAN : KHR-GLES3.packed_depth_stencil.* = SKIP
// CopyTexImage conversion bugs.
3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.* = FAIL
// Require 3D textures.
3188 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.* = SKIP
// Shader related failure. Not Vulkan-specific.
3459 : KHR-GLES3.shaders.uniform_block.common.name_matching = FAIL
// Issues with repeat filtering mode.
3460 VULKAN : KHR-GLES3.texture_repeat_mode.* = FAIL
//
// 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.
//
// glcTestPackageEntry_override.cpp:
// Overrides for dEQP's OpenGL Conformance Test Package Entry Points.
//
#include "glcConfigPackage.hpp"
#include "es2cTestPackage.hpp"
#include "tes2TestPackage.hpp"
#include "es3cTestPackage.hpp"
#include "tes3TestPackage.hpp"
#include "es31cTestPackage.hpp"
#include "esextcTestPackage.hpp"
#include "tes31TestPackage.hpp"
#include "es32cTestPackage.hpp"
#include "gl3cTestPackages.hpp"
#include "gl4cTestPackages.hpp"
#include "glcNoDefaultContextPackage.hpp"
namespace glcts
{
// static tcu::TestPackage* createConfigPackage(tcu::TestContext& testCtx)
// {
// return new glcts::ConfigPackage(testCtx, "CTS-Configs");
// }
static tcu::TestPackage *createES2Package(tcu::TestContext &testCtx)
{
return new es2cts::TestPackage(testCtx, "KHR-GLES2");
}
static tcu::TestPackage *createES30Package(tcu::TestContext &testCtx)
{
return new es3cts::ES30TestPackage(testCtx, "KHR-GLES3");
}
static tcu::TestPackage *createES31Package(tcu::TestContext &testCtx)
{
return new es31cts::ES31TestPackage(testCtx, "KHR-GLES31");
}
static tcu::TestPackage *createESEXTPackage(tcu::TestContext &testCtx)
{
return new esextcts::ESEXTTestPackage(testCtx, "KHR-GLESEXT");
}
static tcu::TestPackage *createES32Package(tcu::TestContext &testCtx)
{
return new es32cts::ES32TestPackage(testCtx, "KHR-GLES32");
}
// static tcu::TestPackage* createNoDefaultCustomContextPackage(tcu::TestContext& testCtx)
// {
// return new glcts::NoDefaultContextPackage(testCtx, "KHR-NoContext");
// }
// static tcu::TestPackage* createGL30Package(tcu::TestContext& testCtx)
// {
// return new gl3cts::GL30TestPackage(testCtx, "KHR-GL30");
// }
// static tcu::TestPackage* createGL31Package(tcu::TestContext& testCtx)
// {
// return new gl3cts::GL31TestPackage(testCtx, "KHR-GL31");
// }
// static tcu::TestPackage* createGL32Package(tcu::TestContext& testCtx)
// {
// return new gl3cts::GL32TestPackage(testCtx, "KHR-GL32");
// }
// static tcu::TestPackage* createGL33Package(tcu::TestContext& testCtx)
// {
// return new gl3cts::GL33TestPackage(testCtx, "KHR-GL33");
// }
// static tcu::TestPackage* createGL40Package(tcu::TestContext& testCtx)
// {
// return new gl4cts::GL40TestPackage(testCtx, "KHR-GL40");
// }
// static tcu::TestPackage* createGL41Package(tcu::TestContext& testCtx)
// {
// return new gl4cts::GL41TestPackage(testCtx, "KHR-GL41");
// }
// static tcu::TestPackage* createGL42Package(tcu::TestContext& testCtx)
// {
// return new gl4cts::GL42TestPackage(testCtx, "KHR-GL42");
// }
// static tcu::TestPackage* createGL43Package(tcu::TestContext& testCtx)
// {
// return new gl4cts::GL43TestPackage(testCtx, "KHR-GL43");
// }
// static tcu::TestPackage* createGL44Package(tcu::TestContext& testCtx)
// {
// return new gl4cts::GL44TestPackage(testCtx, "KHR-GL44");
// }
// static tcu::TestPackage* createGL45Package(tcu::TestContext& testCtx)
// {
// return new gl4cts::GL45TestPackage(testCtx, "KHR-GL45");
// }
// static tcu::TestPackage* createGL46Package(tcu::TestContext& testCtx)
// {
// return new gl4cts::GL46TestPackage(testCtx, "KHR-GL46");
// }
void registerPackages(void)
{
tcu::TestPackageRegistry *registry = tcu::TestPackageRegistry::getSingleton();
// registry->registerPackage("CTS-Configs", createConfigPackage);
registry->registerPackage("KHR-GLES2", createES2Package);
registry->registerPackage("KHR-GLES3", createES30Package);
registry->registerPackage("KHR-GLES31", createES31Package);
registry->registerPackage("KHR-GLESEXT", createESEXTPackage);
registry->registerPackage("KHR-GLES32", createES32Package);
// registry->registerPackage("KHR-NoContext", createNoDefaultCustomContextPackage);
// registry->registerPackage("KHR-GL30", createGL30Package);
// registry->registerPackage("KHR-GL31", createGL31Package);
// registry->registerPackage("KHR-GL32", createGL32Package);
// registry->registerPackage("KHR-GL33", createGL33Package);
// registry->registerPackage("KHR-GL40", createGL40Package);
// registry->registerPackage("KHR-GL41", createGL41Package);
// registry->registerPackage("KHR-GL42", createGL42Package);
// registry->registerPackage("KHR-GL43", createGL43Package);
// registry->registerPackage("KHR-GL44", createGL44Package);
// registry->registerPackage("KHR-GL45", createGL45Package);
// registry->registerPackage("KHR-GL46", createGL46Package);
}
} // namespace glcts
class RegisterCTSPackages
{
public:
RegisterCTSPackages(void) { glcts::registerPackages(); }
};
RegisterCTSPackages g_registerCTS;
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