Commit 7f165fd9 by Jamie Madill

dEQP: Hook up GPU test expectations code.

With the list of failures, this gives a 100% passing GLES2 test suite. BUG=angleproject:998 Change-Id: I20985c729104d7a114352d156c238bca3ea1698c Reviewed-on: https://chromium-review.googlesource.com/274423Reviewed-by: 's avatarKenneth Russell <kbr@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 6ffeb744
...@@ -1129,55 +1129,67 @@ ...@@ -1129,55 +1129,67 @@
], ],
}, },
# Helper target for synching our implementation with chrome's
{ {
'target_name': 'angle_deqp_googletest', 'target_name': 'angle_deqp_gtest_support',
'type': 'executable', 'type': 'none',
'dependencies': 'dependencies':
[ [
'angle_deqp_libgles2', 'angle_deqp_libgles2',
'angle_test_support', 'angle_test_support',
'angle_zlib', 'angle_zlib',
'angle_deqp_decpp',
'<(angle_path)/src/angle.gyp:angle_common', '<(angle_path)/src/angle.gyp:angle_common',
], ],
'includes': 'export_dependent_settings':
[ [
'../../build/common_defines.gypi', 'angle_test_support',
'angle_zlib',
'angle_deqp_decpp',
'<(angle_path)/src/angle.gyp:angle_common',
], ],
'defines': 'direct_dependent_settings':
{
'defines':
[
# Hard-code the path to dEQP. This lets the
# app locate the data folder without need
# for a copy. gyp recursive copies are not
# implemented properly on Windows.
'ANGLE_DEQP_DIR="<(DEPTH)/src/tests/<(deqp_dir)"',
],
'include_dirs':
[
'deqp_support',
],
'sources':
[
'deqp_support/angle_deqp_gtest.cpp',
],
},
},
{
'target_name': 'angle_deqp_googletest',
'type': 'executable',
'dependencies':
[ [
# Hard-code the path to dEQP. This lets the 'angle_deqp_gtest_support',
# app locate the data folder without need
# for a copy. gyp recursive copies are not
# implemented properly on Windows.
'ANGLE_DEQP_DIR="<(DEPTH)/src/tests/<(deqp_dir)"',
], ],
'include_dirs': 'include_dirs':
[ [
'deqp_support',
'third_party/gpu_test_expectations', 'third_party/gpu_test_expectations',
], ],
'sources': 'sources':
[ [
'deqp_support/angle_deqp_gtest_main.cpp', 'deqp_support/angle_deqp_gtest_main.cpp',
], 'third_party/gpu_test_expectations/gpu_info.cc',
'third_party/gpu_test_expectations/gpu_info.h',
'conditions': 'third_party/gpu_test_expectations/gpu_test_config.cc',
[ 'third_party/gpu_test_expectations/gpu_test_config.h',
['angle_standalone==1', 'third_party/gpu_test_expectations/gpu_test_expectations_parser.cc',
{ 'third_party/gpu_test_expectations/gpu_test_expectations_parser.h',
'sources':
[
'third_party/gpu_test_expectations/gpu_info.cc',
'third_party/gpu_test_expectations/gpu_info.h',
'third_party/gpu_test_expectations/gpu_test_config.cc',
'third_party/gpu_test_expectations/gpu_test_config.h',
'third_party/gpu_test_expectations/gpu_test_expectations_parser.cc',
'third_party/gpu_test_expectations/gpu_test_expectations_parser.h',
],
}]
], ],
}, },
], # targets ], # targets
......
//
// Copyright 2015 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.
//
// angle_deqp_gtest:
// dEQP and GoogleTest integration logic. Calls through to the random
// order executor.
#include <gtest/gtest.h>
#include <stdint.h>
#include <zlib.h>
#include <algorithm>
#include <fstream>
#include "angle_deqp_libtester.h"
#include "common/angleutils.h"
#include "common/debug.h"
#include "gpu_test_expectations_parser.h"
namespace
{
class dEQPCaseList
{
public:
dEQPCaseList(const char *caseListPath, const char *testExpectationsPath);
struct CaseInfo
{
CaseInfo(const std::string &dEQPName,
const std::string &gTestName,
int expectation)
: mDEQPName(dEQPName),
mGTestName(gTestName),
mExpectation(expectation)
{
}
std::string mDEQPName;
std::string mGTestName;
int mExpectation;
};
const CaseInfo &getCaseInfo(size_t caseIndex) const
{
ASSERT(caseIndex < mCaseInfoList.size());
return mCaseInfoList[caseIndex];
}
size_t numCases() const
{
return mCaseInfoList.size();
}
static dEQPCaseList *GetInstance();
static void FreeInstance();
private:
std::vector<CaseInfo> mCaseInfoList;
gpu::GPUTestExpectationsParser mTestExpectationsParser;
gpu::GPUTestBotConfig mTestConfig;
static dEQPCaseList *mInstance;
};
// static
dEQPCaseList *dEQPCaseList::mInstance = nullptr;
// static
dEQPCaseList *dEQPCaseList::GetInstance()
{
if (mInstance == nullptr)
{
mInstance = new dEQPCaseList("deqp_support/dEQP-GLES2-cases.txt.gz",
"deqp_support/deqp_test_expectations.txt");
}
return mInstance;
}
// Not currently called, assumed to be freed on program exit.
// static
void dEQPCaseList::FreeInstance()
{
SafeDelete(mInstance);
}
dEQPCaseList::dEQPCaseList(const char *caseListPath, const char *testExpectationsPath)
{
if (!mTestExpectationsParser.LoadTestExpectationsFromFile(std::string(testExpectationsPath)))
{
std::cerr << "Failed to load test expectations." << std::endl;
for (const auto &message : mTestExpectationsParser.GetErrorMessages())
{
std::cerr << " " << message << std::endl;
}
return;
}
if (!mTestConfig.LoadCurrentConfig(nullptr))
{
std::cerr << "Failed to load test configuration." << std::endl;
return;
}
std::stringstream caseListStream;
std::vector<char> buf(1024 * 1024 * 16);
gzFile *fi = static_cast<gzFile *>(gzopen(caseListPath, "rb"));
if (fi == nullptr)
{
return;
}
gzrewind(fi);
while (!gzeof(fi))
{
int len = gzread(fi, &buf[0], static_cast<unsigned int>(buf.size()) - 1);
buf[len] = '\0';
caseListStream << &buf[0];
}
gzclose(fi);
while (!caseListStream.eof())
{
std::string inString;
std::getline(caseListStream, inString);
if (inString.substr(0, 4) == "TEST")
{
std::string dEQPName = inString.substr(6);
std::string gTestName = dEQPName.substr(11);
std::replace(gTestName.begin(), gTestName.end(), '.', '_');
// Occurs in some luminance tests
gTestName.erase(std::remove(gTestName.begin(), gTestName.end(), '-'), gTestName.end());
int expectation = mTestExpectationsParser.GetTestExpectation(dEQPName, mTestConfig);
if (expectation != gpu::GPUTestExpectationsParser::kGpuTestSkip)
{
mCaseInfoList.push_back(CaseInfo(dEQPName, gTestName, expectation));
}
}
}
}
class dEQP_GLES2 : public testing::TestWithParam<size_t>
{
protected:
dEQP_GLES2() {}
void runTest()
{
const auto &caseInfo = dEQPCaseList::GetInstance()->getCaseInfo(GetParam());
std::cout << caseInfo.mDEQPName << std::endl;
bool result = deqp_libtester_run(caseInfo.mDEQPName.c_str());
if (caseInfo.mExpectation == gpu::GPUTestExpectationsParser::kGpuTestPass)
{
EXPECT_TRUE(result);
}
else if (result)
{
std::cout << "Test expected to fail but passed!" << std::endl;
}
}
};
// TODO(jmadill): add different platform configs, or ability to choose platform
TEST_P(dEQP_GLES2, Default)
{
runTest();
}
testing::internal::ParamGenerator<size_t> GetTestingRange()
{
return testing::Range<size_t>(0, dEQPCaseList::GetInstance()->numCases());
}
INSTANTIATE_TEST_CASE_P(, dEQP_GLES2, GetTestingRange());
} // anonymous namespace
...@@ -4,154 +4,17 @@ ...@@ -4,154 +4,17 @@
// found in the LICENSE file. // found in the LICENSE file.
// //
// angle_deqp_gtest_main: // angle_deqp_gtest_main:
// dEQP and GoogleTest integration logic. Calls through to the random // Entry point for standalone dEQP tests.
// order executor.
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include <stdint.h>
#include <zlib.h>
#include <algorithm>
#include <fstream>
#include "angle_deqp_libtester.h" #include "angle_deqp_libtester.h"
#include "common/angleutils.h"
#include "common/debug.h"
namespace
{
class dEQPCaseList
{
public:
dEQPCaseList(const char *caseListPath);
struct CaseInfo
{
CaseInfo(const std::string &dEQPName,
const std::string &gTestName)
: mDEQPName(dEQPName),
mGTestName(gTestName)
{
}
std::string mDEQPName;
std::string mGTestName;
};
const CaseInfo &getCaseInfo(size_t caseIndex) const
{
ASSERT(caseIndex < mCaseInfoList.size());
return mCaseInfoList[caseIndex];
}
size_t numCases() const
{
return mCaseInfoList.size();
}
static dEQPCaseList *GetInstance();
static void FreeInstance();
private:
std::vector<CaseInfo> mCaseInfoList;
static dEQPCaseList *mInstance;
};
// static
dEQPCaseList *dEQPCaseList::mInstance = nullptr;
// static
dEQPCaseList *dEQPCaseList::GetInstance()
{
if (mInstance == nullptr)
{
mInstance = new dEQPCaseList("deqp_support/dEQP-GLES2-cases.txt.gz");
}
return mInstance;
}
// static
void dEQPCaseList::FreeInstance()
{
SafeDelete(mInstance);
}
dEQPCaseList::dEQPCaseList(const char *caseListPath)
{
std::stringstream caseListStream;
std::vector<char> buf(1024 * 1024 * 16);
gzFile *fi = static_cast<gzFile *>(gzopen(caseListPath, "rb"));
if (fi == nullptr)
{
return;
}
gzrewind(fi);
while (!gzeof(fi))
{
int len = gzread(fi, &buf[0], buf.size() - 1);
buf[len] = '\0';
caseListStream << &buf[0];
}
gzclose(fi);
while (!caseListStream.eof())
{
std::string inString;
std::getline(caseListStream, inString);
if (inString.substr(0, 4) == "TEST")
{
std::string dEQPName = inString.substr(6);
std::string gTestName = dEQPName.substr(11);
std::replace(gTestName.begin(), gTestName.end(), '.', '_');
// Occurs in some luminance tests
gTestName.erase(std::remove(gTestName.begin(), gTestName.end(), '-'), gTestName.end());
mCaseInfoList.push_back(CaseInfo(dEQPName, gTestName));
}
}
}
class dEQP_GLES2 : public testing::TestWithParam<size_t>
{
protected:
dEQP_GLES2() {}
void runTest()
{
const auto &caseInfo = dEQPCaseList::GetInstance()->getCaseInfo(GetParam());
std::cout << caseInfo.mDEQPName << std::endl;
ASSERT_TRUE(deqp_libtester_run(caseInfo.mDEQPName.c_str()));
}
};
// TODO(jmadill): add different platform configs, or ability to choose platform
TEST_P(dEQP_GLES2, Default)
{
runTest();
}
testing::internal::ParamGenerator<size_t> GetTestingRange()
{
return testing::Range<size_t>(0, dEQPCaseList::GetInstance()->numCases());
}
INSTANTIATE_TEST_CASE_P(, dEQP_GLES2, GetTestingRange());
}
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
deqp_libtester_init_platform(argc, argv, ANGLE_DEQP_DIR "/data"); deqp_libtester_init_platform(argc, argv, ANGLE_DEQP_DIR "/data");
testing::InitGoogleTest(&argc, argv); testing::InitGoogleTest(&argc, argv);
int rt = RUN_ALL_TESTS(); int rt = RUN_ALL_TESTS();
dEQPCaseList::FreeInstance();
deqp_libtester_shutdown_platform(); deqp_libtester_shutdown_platform();
return rt; return rt;
} }
// Copyright 2015 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:
// 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
// TODO(jmadill): Add ANGLE Renderer selection modifiers
//
// 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.
//
// 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
// TODO(jmadill): triage these into temporary and permananet suppressions
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.basic.identifier_with_double_underscore_vertex = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.basic.identifier_with_double_underscore_fragment = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.predefined_macros.line_2_vertex = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.predefined_macros.line_2_fragment = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.conditional_inclusion.basic_2_vertex = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.conditional_inclusion.basic_2_fragment = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.undefined_identifiers.valid_undefined_identifier_* = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.builtin.line_expression_vertex = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.builtin.line_expression_fragment = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.builtin.line_and_file_expression_vertex = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.builtin.line_and_file_expression_fragment = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.extensions.after_non_preprocessing_tokens_vertex = FAIL
989 WIN : dEQP-GLES2.functional.shaders.preprocessor.extensions.after_non_preprocessing_tokens_fragment = FAIL
1015 WIN : dEQP-GLES2.functional.shaders.functions.misc.missing_returns_vertex = FAIL
1015 WIN : dEQP-GLES2.functional.shaders.functions.misc.missing_returns_fragment = FAIL
1015 WIN : dEQP-GLES2.functional.shaders.functions.invalid.return_array_in_struct_vertex = FAIL
1015 WIN : dEQP-GLES2.functional.shaders.functions.invalid.return_array_in_struct_fragment = FAIL
1015 WIN : dEQP-GLES2.functional.shaders.functions.invalid.local_function_prototype_vertex = FAIL
1015 WIN : dEQP-GLES2.functional.shaders.functions.invalid.local_function_prototype_fragment = FAIL
996 WIN : dEQP-GLES2.functional.shaders.functions.invalid.double_declare_vertex = FAIL
996 WIN : dEQP-GLES2.functional.shaders.functions.invalid.double_declare_fragment = FAIL
1016 WIN : dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_vertex = FAIL
1016 WIN : dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_fragment = FAIL
1016 WIN : dEQP-GLES2.functional.shaders.scoping.invalid.redeclare_function_vertex = FAIL
1016 WIN : dEQP-GLES2.functional.shaders.scoping.invalid.redeclare_function_fragment = FAIL
1017 WIN : dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_sequence_* = FAIL
1017 WIN : dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_tricky_dataflow_* = FAIL
1017 WIN : dEQP-GLES2.functional.shaders.loops.while_constant_iterations.nested_tricky_dataflow_* = FAIL
1017 WIN : dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.nested_tricky_dataflow_* = FAIL
504 WIN : dEQP-GLES2.functional.shaders.struct.uniform.sampler_vertex = FAIL
504 WIN : dEQP-GLES2.functional.shaders.struct.uniform.sampler_fragment = FAIL
504 WIN : dEQP-GLES2.functional.shaders.struct.uniform.sampler_nested_vertex = FAIL
504 WIN : dEQP-GLES2.functional.shaders.struct.uniform.sampler_nested_fragment = FAIL
504 WIN : dEQP-GLES2.functional.shaders.struct.uniform.sampler_array_vertex = FAIL
504 WIN : dEQP-GLES2.functional.shaders.struct.uniform.sampler_array_fragment = FAIL
1018 WIN : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
1018 WIN : dEQP-GLES2.functional.shaders.invariance.highp.loop_2 = FAIL
1018 WIN : dEQP-GLES2.functional.shaders.invariance.mediump.loop_2 = FAIL
913 WIN : dEQP-GLES2.functional.shaders.constant_expressions.builtin_functions.geometric.* = FAIL
913 WIN : dEQP-GLES2.functional.shaders.constant_expressions.builtin_functions.matrix.compMult_mat* = FAIL
1018 WIN : dEQP-GLES2.functional.shaders.random.all_features.fragment.76 = FAIL
1019 WIN : dEQP-GLES2.functional.texture.size.cube.256x256_rgba4444 = FAIL
1019 WIN : dEQP-GLES2.functional.texture.size.cube.512x512_rgba4444 = FAIL
1020 WIN : dEQP-GLES2.functional.texture.mipmap.2d.projected.* = FAIL
1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
1020 WIN : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_luminance = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_luminance_alpha = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_rgb = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_alpha = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_luminance = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_luminance_alpha = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgb = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgba = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_alpha = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_luminance = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_luminance_alpha = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgb = FAIL
1021 WIN : dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgba = FAIL
1023 WIN : dEQP-GLES2.functional.texture.completeness.cube.format_mismatch_rgb_rgba_level_0_pos_z = FAIL
1023 WIN : dEQP-GLES2.functional.texture.completeness.cube.format_mismatch_rgba_rgb_level_0_neg_z = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat = FAIL
1022 WIN : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.* = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.* = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.depth_stencil.random.* = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.random.* = FAIL
1025 WIN : dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.* = FAIL
1026 WIN : dEQP-GLES2.functional.fbo.api.valid_texcube_attachments = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.npot_tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.npot_tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.resize.tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.resize.tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.resize.rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.resize.rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.resize.rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_tex2d_rgb_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_tex2d_rgba_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgb565_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8 = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.repeated_clear.tex2d_rgb = FAIL
1027 WIN : dEQP-GLES2.functional.fbo.render.repeated_clear.tex2d_rgba = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.color0.r16f = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.color0.rg16f = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.color0.rgba16f = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.color0.rgb16f = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.renderbuffer.depth.depth_component32 = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb_float = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb_half_float_oes = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgba_float = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgba_half_float_oes = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.srgb8 = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8 = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_short = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_int = FAIL
1028 WIN : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8 = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.state.get_shaderiv = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.state.get_shader_info_log = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.state.get_shader_source = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.state.get_programiv = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.state.get_program_info_log = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.texture.compressedteximage_2d_invalid_format_tex2d = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.texture.compressedteximage_2d_invalid_format_cube = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_format = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_internalformat = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_type = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.texture.texsubimage2d_offset_allowed = FAIL
1029 WIN : dEQP-GLES2.functional.negative_api.texture.compressedtexsubimage2d_invalid_size = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_max_attributes.float = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_max_attributes.vec2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_max_attributes.vec3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_max_attributes.vec4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_float = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_float = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_inactive_float = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_vec2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_vec2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_inactive_vec2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_vec3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_vec3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_inactive_vec3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_vec4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_vec4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_inactive_vec4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat2_offset_1 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_mat2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat3_offset_1 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_mat3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_mat4_offset_1 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond_mat4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_hole.float = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_hole.vec2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_hole.vec3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_hole.vec4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_hole.mat2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_relink_hole.float = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_relink_hole.vec2 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_relink_hole.vec3 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_relink_hole.vec4 = FAIL
1030 WIN : dEQP-GLES2.functional.attribute_location.bind_relink_hole.mat2 = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.info_query.basic_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.info_query.struct_in_array.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.info_query.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.info_query.nested_structs_arrays.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.info_query.unused_uniforms.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.struct_in_array.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.nested_structs_arrays.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.nested_structs_arrays.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct.sampler2D_samplerCube_* = FAIL
504 WIN : dEQP-GLES2.functional.uniform_api.value.assigned.unused_uniforms.sampler2D_samplerCube_* = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.3 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.13 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.21 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.23 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.24 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.25 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.27 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.29 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.37 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.41 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.51 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.54 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.72 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.79 = FAIL
1031 WIN : dEQP-GLES2.functional.uniform_api.random.82 = FAIL
1032 WIN : dEQP-GLES2.functional.state_query.shader.program_attached_shaders = FAIL
1033 WIN : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
1034 WIN : dEQP-GLES2.functional.flush_finish.flush = FAIL
1034 WIN : dEQP-GLES2.functional.flush_finish.finish = FAIL
1034 WIN : dEQP-GLES2.functional.flush_finish.finish_wait = FAIL
// Don't run these tests for faster turnover
998 WIN : dEQP-GLES2.performance.* = SKIP
998 WIN : dEQP-GLES2.stress.* = SKIP
////////////////////////////////////////////////////////////////////////////////
//
// Temprory entries: they should be removed once the bugs are fixed.
//
////////////////////////////////////////////////////////////////////////////////
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