summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/all.gyp12
-rw-r--r--gpu/gles2_conform_support/README15
-rwxr-xr-xgpu/gles2_conform_support/generate_gles2_conform_tests.py63
-rwxr-xr-xgpu/gles2_conform_support/generate_gles2_embedded_data.py120
-rw-r--r--gpu/gles2_conform_support/gles2_conform.gypi318
-rw-r--r--gpu/gles2_conform_support/gles2_conform_test.cc93
-rw-r--r--gpu/gles2_conform_support/gles2_conform_test.gyp248
-rw-r--r--gpu/gles2_conform_support/gles2_conform_test.h11
-rw-r--r--gpu/gles2_conform_support/gles2_conform_test_expectations.txt70
9 files changed, 940 insertions, 10 deletions
diff --git a/build/all.gyp b/build/all.gyp
index 5aaed3d..8f7a1bc 100644
--- a/build/all.gyp
+++ b/build/all.gyp
@@ -483,15 +483,11 @@
'../chrome/chrome.gyp:performance_ui_tests',
'../content/content_shell_and_tests.gyp:content_browsertests',
'../content/content_shell_and_tests.gyp:content_gl_tests',
+ '../gpu/gles2_conform_support/gles2_conform_test.gyp:gles2_conform_test',
'../gpu/gpu.gyp:gl_tests',
'../gpu/gpu.gyp:angle_unittests',
],
'conditions': [
- ['internal_gles2_conform_tests', {
- 'dependencies': [
- '../gpu/gles2_conform_test/gles2_conform_test.gyp:gles2_conform_test',
- ],
- }], # internal_gles2_conform
['OS!="ios" and OS!="win"', {
'dependencies': [
'../breakpad/breakpad.gyp:minidump_stackwalk',
@@ -521,15 +517,11 @@
'../chrome/chrome.gyp:chrome',
'../content/content_shell_and_tests.gyp:content_browsertests',
'../content/content_shell_and_tests.gyp:content_gl_tests',
+ '../gpu/gles2_conform_support/gles2_conform_test.gyp:gles2_conform_test',
'../gpu/gpu.gyp:gl_tests',
'../gpu/gpu.gyp:angle_unittests',
],
'conditions': [
- ['internal_gles2_conform_tests', {
- 'dependencies': [
- '../gpu/gles2_conform_test/gles2_conform_test.gyp:gles2_conform_test',
- ],
- }], # internal_gles2_conform
['OS!="ios" and OS!="win"', {
'dependencies': [
'../breakpad/breakpad.gyp:minidump_stackwalk',
diff --git a/gpu/gles2_conform_support/README b/gpu/gles2_conform_support/README
new file mode 100644
index 0000000..0430561
--- /dev/null
+++ b/gpu/gles2_conform_support/README
@@ -0,0 +1,15 @@
+To run OpenGL ES 2.0 conformance tests, do the following:
+(These require access to Google-internal sources.)
+1. Generate build files:
+ "python build/gyp_chromium gpu/gles2_conform_support/gles2_conform_test.gyp"
+ or set "GYP_DEFINES=internal_gles2_conform_tests=1" and rebuild your
+ projects using your standard method. Example:
+ "GYP_DEFINES=internal_gles2_conform_tests=1 gclient runhooks"
+2. Build any of the two targets:
+ - gles2_conform_test_angle which tests ANGLE
+ - gles2_conform_test_native which tests command-buffer service
+ - gles2_conform_test_windowless which tests command-buffer service on most platforms
+ - gles2_conform_test_pepper will be added later
+3. Run the targets as: "<path to>gles2_conform_test_native -noimagefileio
+ -run=<path to>third_party\gles2_conform\GTF_ES\glsl\GTF\mustpass.run"
+
diff --git a/gpu/gles2_conform_support/generate_gles2_conform_tests.py b/gpu/gles2_conform_support/generate_gles2_conform_tests.py
new file mode 100755
index 0000000..df2980a
--- /dev/null
+++ b/gpu/gles2_conform_support/generate_gles2_conform_tests.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+# 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.
+
+"""code generator for OpenGL ES 2.0 conformance tests."""
+
+import os
+import re
+import sys
+
+def ReadFileAsLines(filename):
+ """Reads a file, removing blank lines and lines that start with #"""
+ file = open(filename, "r")
+ raw_lines = file.readlines()
+ file.close()
+ lines = []
+ for line in raw_lines:
+ line = line.strip()
+ if len(line) > 0 and not line.startswith("#"):
+ lines.append(line)
+ return lines
+
+
+def GenerateTests(file):
+ """Generates gles2_conform_test_autogen.cc"""
+
+ tests = ReadFileAsLines(
+ "../../third_party/gles2_conform/GTF_ES/glsl/GTF/mustpass_es20.run")
+
+ file.write("""
+#include "gpu/gles2_conform_support/gles2_conform_test.h"
+#include "testing/gtest/include/gtest/gtest.h"
+""")
+
+ for test in tests:
+ file.write("""
+TEST(GLES2ConformTest, %(name)s) {
+ EXPECT_TRUE(RunGLES2ConformTest("%(path)s"));
+}
+""" % {
+ "name": re.sub(r'[^A-Za-z0-9]', '_', test),
+ "path": test,
+ })
+
+
+def main(argv):
+ """This is the main function."""
+
+ if len(argv) >= 1:
+ dir = argv[0]
+ else:
+ dir = '.'
+
+ file = open(os.path.join(dir, 'gles2_conform_test_autogen.cc'), 'wb')
+ GenerateTests(file)
+ file.close()
+
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))
diff --git a/gpu/gles2_conform_support/generate_gles2_embedded_data.py b/gpu/gles2_conform_support/generate_gles2_embedded_data.py
new file mode 100755
index 0000000..8d7330f
--- /dev/null
+++ b/gpu/gles2_conform_support/generate_gles2_embedded_data.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+# 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.
+
+"""generates files to embed the gles2 conformance test data in executable."""
+
+import os
+import sys
+
+class GenerateEmbeddedFiles(object):
+ """generates files to embed the gles2 conform test data in executable"""
+
+ paths_to_ignore = set([
+ ".",
+ "..",
+ ".svn",
+ ".git",
+ ".hg",
+ ])
+
+ extensions_to_include = set([
+ ".vert",
+ ".frag",
+ ".test",
+ ".run",
+ ])
+
+ def __init__(self, scan_dir, base_dir):
+ self.scan_dir = scan_dir
+ self.base_dir = base_dir
+ self.count = 0;
+ if self.base_dir != None:
+ self.files_data_h = open(os.path.join(base_dir, "FilesDATA.h"), "wb")
+ self.files_data_c = open(os.path.join(base_dir, "FilesDATA.c"), "wb")
+ self.files_toc_c = open(os.path.join(base_dir, "FilesTOC.c"), "wb")
+
+ self.files_data_h.write("#ifndef FilesDATA_h\n\n")
+ self.files_data_h.write("#define FilesDATA_h\n\n");
+
+ self.files_data_c.write("#include \"FilesDATA.h\"\n\n")
+
+ self.files_toc_c.write("#include \"FilesTOC.h\"\n\n");
+ self.files_toc_c.write("struct GTFVectorFileEntry tempFiles;\n\n");
+ self.files_toc_c.write("struct FileEntry files[] = {\n");
+
+ self.AddFiles(scan_dir)
+
+ if self.base_dir != None:
+ self.files_toc_c.write("\n};\n\n");
+ self.files_toc_c.write(
+ "int numFileEntrys = sizeof(files) / sizeof(struct FileEntry);\n");
+
+ self.files_data_h.write("\n\n#endif // FilesDATA_h\n");
+
+ self.files_data_c.close()
+ self.files_data_h.close()
+ self.files_toc_c.close()
+
+ def AddFiles(self, scan_dir):
+ """Scan a folder and embed the contents of files."""
+ files = os.listdir(scan_dir)
+ sub_dirs = []
+ for file in files:
+ full_path = os.path.join(scan_dir, file)
+ ext = os.path.splitext(file)[1]
+ base_path = full_path[len(self.scan_dir) + 1:]
+ if os.path.isdir(full_path):
+ if not file in GenerateEmbeddedFiles.paths_to_ignore:
+ sub_dirs.append(full_path)
+ elif ext in GenerateEmbeddedFiles.extensions_to_include:
+ if self.base_dir == None:
+ print full_path.replace("\\", "/")
+ else:
+ self.count += 1
+ name = "_FILE_%s_%d" % (ext.upper(), self.count)
+ name = name.replace(".", "_")
+
+ self.files_data_h.write("extern const char %s[];\n" % name)
+ self.files_data_c.write("const char %s[] = \n" % name)
+
+ data = open(full_path, "r")
+ lines = data.readlines();
+ data.close()
+
+ for line in lines:
+ line = line.replace("\n", "")
+ line = line.replace("\r", "")
+ line = line.replace("\\", "\\\\")
+ line = line.replace("\"", "\\\"")
+
+ self.files_data_c.write('"%s\\n"\n' % line)
+
+ self.files_data_c.write(";\n")
+ self.files_toc_c.write("\t{ \"%s\", %s, 0 },\n" % (
+ base_path.replace("\\", "/"), name))
+
+ for sub_dir in sub_dirs:
+ self.AddFiles(sub_dir)
+
+
+def main(argv):
+ """This is the main function."""
+
+ if len(argv) >= 1:
+ scan_dir = argv[0]
+ else:
+ scan_dir = '.'
+
+ if len(argv) >= 2:
+ base_dir = argv[1]
+ else:
+ base_dir = None
+
+ GenerateEmbeddedFiles(scan_dir, base_dir)
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))
diff --git a/gpu/gles2_conform_support/gles2_conform.gypi b/gpu/gles2_conform_support/gles2_conform.gypi
new file mode 100644
index 0000000..41e0f28
--- /dev/null
+++ b/gpu/gles2_conform_support/gles2_conform.gypi
@@ -0,0 +1,318 @@
+# 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.
+
+{
+ 'variables': {
+ 'gl2_extension_test_sources': [
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedETC1RGB8Texture.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedETC1RGB8Texture.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedPalettedTexture.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedPalettedTexture.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestConditionalQuery.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestConditionalQuery.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDataType1010102.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDataType1010102.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDebug.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDebug.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth24.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth24.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth32.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth32.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTexture.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTexture.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTextureCubeMap.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTextureCubeMap.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLCreateContext.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLCreateContext.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImage.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImage.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImageExternal.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImageExternal.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestElementIndexUINT.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestElementIndexUINT.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFBORenderMipmap.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFBORenderMipmap.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFragmentPrecisionHigh.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFragmentPrecisionHigh.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFramebufferObject.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFramebufferObject.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestMapBuffer.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestMapBuffer.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestOcclusionQuery.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestOcclusionQuery.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPackedDepthStencil.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPackedDepthStencil.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSizeArray.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSizeArray.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSprite.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSprite.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestReadFormat.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestReadFormat.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRequiredInternalformat.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRequiredInternalformat.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRGB8RGBA8.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRGB8RGBA8.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil1.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil1.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil4.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil4.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil8.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil8.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestSurfacelessContext.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestSurfacelessContext.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTexture3D.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTexture3D.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureCompressionASTCLDR.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureCompressionASTCLDR.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureCompressionASTCLDRVectors.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloat.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloat.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloatLinear.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloatLinear.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureNPOT.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureNPOT.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestUtilp.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestUtilp.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexArrayObject.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexArrayObject.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexHalfFloat.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexHalfFloat.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVisibilityQuery.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVisibilityQuery.h',
+ ],
+ 'gl2_fixed_test_sources': [
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBlend.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBlend.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferClear.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferClear.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferColor.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferColor.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferCorners.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferCorners.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferObjects.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferObjects.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestClip.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestClip.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestColorRamp.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestColorRamp.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestCopyTexture.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestCopyTexture.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferClear.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferClear.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferFunctions.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferFunctions.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDither.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDither.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDivideByZero.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDivideByZero.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestGets.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestGets.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsInterpolation.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsInterpolation.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsSelection.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsSelection.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointRasterization.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointRasterization.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointSprites.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointSprites.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPolygonCull.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPolygonCull.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestScissor.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestScissor.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneClear.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneClear.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneCorners.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneCorners.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneFunction.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneFunction.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneOperation.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneOperation.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTextureEdgeClamp.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTextureEdgeClamp.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTransformViewport.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTransformViewport.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleRasterization.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleRasterization.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleTiling.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleTiling.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestUserClipPlanes.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestUserClipPlanes.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestVertexOrder.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestVertexOrder.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestViewportClamp.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestViewportClamp.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilg.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilg.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilr.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilr.h',
+ ],
+ 'gl2_test_sources': [
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestAttributeGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestAttributeGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestBindAllAttributes.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestBindAllAttributes.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestCreateObjectGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestCreateObjectGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestDetachGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestDetachGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFixedDataType.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFixedDataType.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFramebufferObjects.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFramebufferObjects.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttachedObjects.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttachedObjects.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttributeLocation.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttributeLocation.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetBIFD.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetBIFD.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetExtensions.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetExtensions.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramInfoLog.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramInfoLog.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramiv.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramiv.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderInfoLog.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderInfoLog.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderiv.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderiv.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetUniform.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetUniform.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetVertexAttrib.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetVertexAttrib.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMaxVertexAttrib.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMaxVertexAttrib.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMultipleShaders.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMultipleShaders.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestRelinkProgram.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestRelinkProgram.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniform.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniform.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniformQueryGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniformQueryGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttribPointer.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttribPointer.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttributes.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttributes.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexProgramPointSize.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexProgramPointSize.h',
+ ],
+ 'gtf_es_sources': [
+ # Bootstrapping files commented out. We have different bootstrapping
+ # files for each platform.
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/egl_config_select.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/egl_config_select.h',
+ #'<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/eglNative.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/eglNative.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/eglu.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/eglu.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/eglut.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/eglut.h',
+ # Note: FilesDATA.h, FilesDATA.c, and FilesTOC.c are generated
+ # by GTF_ES/glsl/GTF/mergeTestFilesToCSource.pl
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data/FilesDATA.c',
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data/FilesDATA.h',
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data/FilesTOC.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/FilesTOC.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/gl2ext_missing.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/gl2Native.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/gl2Native.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFArguments.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFArguments.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFCoverageGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFCoverageGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFCoverageDict.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFDict.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFDictBase.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFFileReader.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFFileReader.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFgl.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFgl.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFInitEGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFLog.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFLog.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFMain.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFMain.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFMatrix.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFMemFile.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFMemFile.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFModelData.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFModelData.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFPort.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFPort.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFString.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFStringUtils.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFStringUtils.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTest.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTest.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestBuildGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestBuildGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestCompareGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestCompareGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestComplexityGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestComplexityGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestCoverageGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestCoverageGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestDriver.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestDriver.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestElement.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestElement.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestExtension.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestExtension.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestFixedGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestFixedGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestGL2Test.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestGL2Test.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestRasterizationGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestRasterizationGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestShaderLoadGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestShaderLoadGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestUtil.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFTestUtil.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFVec.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFVecBase.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFVector.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GTFVersion.h',
+ #'<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/main.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/MIMG.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/MIMG.h',
+ #'<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/Win32Console.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/XmlUtils.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/XmlUtils.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFAttDataGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFAttDataGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFDepthRangeParamGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFDepthRangeParamGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFModelDataGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFModelDataGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFPointParamGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFPointParamGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFReadPixelsGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFReadPixelsGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFShaderDataGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFShaderDataGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFShaderTextGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFShaderTextGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFStateDataGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFStateDataGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFTexDataGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFTexDataGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFTexParamGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFTexParamGL.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFUniDataGL.c',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/Source/GL/GTFUniDataGL.h',
+ '<@(gl2_extension_test_sources)',
+ '<@(gl2_fixed_test_sources)',
+ '<@(gl2_test_sources)',
+ ],
+ },
+ # We cannot have any targets here because these tests are compiled against
+ # multiple platforms - ANGLE, CommandBufferService, and Pepper. Each platform
+ # has different EGL headers.
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/gpu/gles2_conform_support/gles2_conform_test.cc b/gpu/gles2_conform_support/gles2_conform_test.cc
new file mode 100644
index 0000000..1948eab
--- /dev/null
+++ b/gpu/gles2_conform_support/gles2_conform_test.cc
@@ -0,0 +1,93 @@
+// 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.
+
+#include "gpu/gles2_conform_support/gles2_conform_test.h"
+
+#include <string>
+
+#include "base/at_exit.h"
+#include "base/base_paths.h"
+#include "base/command_line.h"
+#include "base/file_util.h"
+#include "base/files/file_path.h"
+#include "base/logging.h"
+#if defined(OS_MACOSX)
+#include "base/mac/scoped_nsautorelease_pool.h"
+#endif
+#include "base/path_service.h"
+#include "base/process/launch.h"
+#include "base/strings/string_util.h"
+#include "gpu/config/gpu_test_config.h"
+#include "gpu/config/gpu_test_expectations_parser.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+bool RunGLES2ConformTest(const char* path) {
+ // Load test expectations, and return early if a test is marked as FAIL.
+ base::FilePath src_path;
+ PathService::Get(base::DIR_SOURCE_ROOT, &src_path);
+ base::FilePath test_expectations_path =
+ src_path.Append(FILE_PATH_LITERAL("gpu")).
+ Append(FILE_PATH_LITERAL("gles2_conform_support")).
+ Append(FILE_PATH_LITERAL("gles2_conform_test_expectations.txt"));
+ if (!base::PathExists(test_expectations_path)) {
+ LOG(ERROR) << "Fail to locate gles2_conform_test_expectations.txt";
+ return false;
+ }
+ gpu::GPUTestExpectationsParser test_expectations;
+ if (!test_expectations.LoadTestExpectations(test_expectations_path)) {
+ LOG(ERROR) << "Fail to load gles2_conform_test_expectations.txt";
+ return false;
+ }
+ gpu::GPUTestBotConfig bot_config;
+ if (!bot_config.LoadCurrentConfig(NULL)) {
+ LOG(ERROR) << "Fail to load bot configuration";
+ return false;
+ }
+ if (!bot_config.IsValid()) {
+ LOG(ERROR) << "Invalid bot configuration";
+ return false;
+ }
+ std::string path_string(path);
+ std::string test_name;
+ base::ReplaceChars(path_string, "\\/.", "_", &test_name);
+ int32 expectation =
+ test_expectations.GetTestExpectation(test_name, bot_config);
+ if (expectation != gpu::GPUTestExpectationsParser::kGpuTestPass) {
+ LOG(WARNING) << "Test " << test_name << " is bypassed";
+ return true;
+ }
+
+ base::FilePath test_path;
+ PathService::Get(base::DIR_EXE, &test_path);
+ base::FilePath program(test_path.Append(FILE_PATH_LITERAL(
+ "gles2_conform_test_windowless")));
+
+ CommandLine cmdline(program);
+ cmdline.AppendSwitch(std::string("-run=") + path);
+
+ std::string output;
+ bool success = base::GetAppOutput(cmdline, &output);
+ if (success) {
+ size_t success_index = output.find("Conformance PASSED all");
+ size_t failed_index = output.find("FAILED");
+ success = (success_index != std::string::npos) &&
+ (failed_index == std::string::npos);
+ }
+ if (!success) {
+ LOG(ERROR) << output;
+ }
+ return success;
+}
+
+int main(int argc, char** argv) {
+ base::AtExitManager exit_manager;
+#if defined(OS_MACOSX)
+ base::mac::ScopedNSAutoreleasePool pool;
+#endif
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
+
+
+
diff --git a/gpu/gles2_conform_support/gles2_conform_test.gyp b/gpu/gles2_conform_support/gles2_conform_test.gyp
new file mode 100644
index 0000000..ba89e2a
--- /dev/null
+++ b/gpu/gles2_conform_support/gles2_conform_test.gyp
@@ -0,0 +1,248 @@
+# 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.
+
+{
+
+ 'includes': [
+ 'gles2_conform.gypi',
+ ],
+ 'target_defaults': {
+ 'msvs_disabled_warnings': [4005, 4013, 4018, 4101, 4716],
+ 'include_dirs': [
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data',
+ '../../third_party/gles2_conform/GTF_ES/glsl/GTF/Source',
+ ],
+ },
+ 'targets': [
+ {
+ 'target_name': 'gles2_conform_test',
+ 'type': 'executable',
+ 'dependencies': [
+ '<(DEPTH)/base/base.gyp:base',
+ '<(DEPTH)/gpu/gpu.gyp:gpu',
+ '<(DEPTH)/testing/gtest.gyp:gtest',
+ ],
+ 'sources': [
+ 'gles2_conform_test.cc',
+ ],
+ 'conditions': [
+ ['internal_gles2_conform_tests', {
+ 'dependencies': [
+ 'gles2_conform_test_windowless',
+ ],
+ 'variables': {
+ 'gles2_conform_test_output_dir': '<(SHARED_INTERMEDIATE_DIR)/gpu/gles2_conform_test',
+ },
+ 'sources': [
+ '<(gles2_conform_test_output_dir)/gles2_conform_test_autogen.cc',
+ ],
+ 'actions': [
+ {
+ 'action_name': 'generate_gles2_conform_tests',
+ 'inputs': [
+ 'generate_gles2_conform_tests.py',
+ 'gles2_conform_test.h',
+ '<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/mustpass_es20.run',
+ ],
+ 'outputs': [
+ '<(gles2_conform_test_output_dir)/gles2_conform_test_autogen.cc',
+ ],
+ 'action': [
+ 'python',
+ 'generate_gles2_conform_tests.py',
+ '<(gles2_conform_test_output_dir)',
+ ],
+ },
+ ],
+ }], # internal_gles2_conform_tests
+ ],
+ },
+ # TODO(alokp): Add gles2_conform_test_pepper target
+ ],
+ 'conditions': [
+ ['internal_gles2_conform_tests', {
+ 'targets': [
+ {
+ 'target_name': 'gles2_conform_test_embedded_data',
+ 'type': 'none',
+ 'hard_dependency': 1,
+ 'actions': [
+ {
+ 'action_name': 'generate_gles2_conform_embedded_files',
+ 'variables': {
+ 'generator_path': 'generate_gles2_embedded_data.py',
+ },
+ 'inputs': [
+ '<(generator_path)',
+ '<!@(python <(generator_path) ../../third_party/gles2_conform/GTF_ES/glsl/GTF)',
+ ],
+ 'outputs': [
+ #'../../third_party/gles2_conform/GTF_ES/glsl/GTF/Source/FilesDATA.c',
+ #'../../third_party/gles2_conform/GTF_ES/glsl/GTF/Source/FilesDATA.h',
+ #'../../third_party/gles2_conform/GTF_ES/glsl/GTF/Source/FilesTOC.c',
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data/FilesDATA.c',
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data/FilesDATA.h',
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data/FilesTOC.c',
+ ],
+ 'action': [
+ 'python',
+ '<(generator_path)',
+ '../../third_party/gles2_conform/GTF_ES/glsl/GTF',
+ '<(SHARED_INTERMEDIATE_DIR)/gles2_conform_test_embedded_data',
+ ],
+ },
+ ],
+ },
+ {
+ 'target_name': 'gles2_conform_test_windowless',
+ 'type': 'executable',
+ 'dependencies': [
+ 'gles2_conform_test_embedded_data',
+ '<(DEPTH)/gpu/gles2_conform_support/gles2_conform_support.gyp:egl_native',
+ '<(DEPTH)/gpu/gles2_conform_support/gles2_conform_support.gyp:egl_main_windowless',
+ '<(DEPTH)/gpu/gpu.gyp:gles2_c_lib_nocheck',
+ '<(DEPTH)/third_party/expat/expat.gyp:expat',
+ ],
+ 'conditions': [
+ ['OS=="linux"', {
+ 'dependencies': ['../../build/linux/system.gyp:gtk'],
+ }],
+ ['OS=="win"', {
+ 'dependencies': [
+ '<(DEPTH)/third_party/angle_dx11/src/build_angle.gyp:libGLESv2',
+ '<(DEPTH)/third_party/angle_dx11/src/build_angle.gyp:libEGL',
+ ],
+ 'defines': [
+ 'EGLAPI=',
+ 'EGLAPIENTRY=',
+ ],
+ 'msvs_disabled_warnings': [
+ 4018, # signed/unsigned mismatch
+ 4101, # unreferenced local variable
+ 4715, # not all control paths return a value
+ ],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'AdditionalOptions': ['/UNOMINMAX'],
+ },
+ },
+ }],
+ ['OS=="mac"', {
+ 'defines': [
+ '_STDINT',
+ '_STDINT_H',
+ ],
+ 'conditions': [
+ [ 'clang==1', {
+ 'cflags': [
+ '-Wno-pointer-sign',
+ '-Wno-array-bounds',
+ '-Wno-sizeof-pointer-memaccess',
+ '-Wno-implicit-function-declaration',
+ '-Wno-logical-op-parentheses',
+ '-Wno-tautological-compare',
+ '-Wno-parentheses-equality',
+ '-Wno-return-type',
+ ],
+ 'xcode_settings': {
+ 'LD': 'clang++',
+ 'WARNING_CFLAGS': [
+ '-Wno-pointer-sign',
+ '-Wno-array-bounds',
+ '-Wno-sizeof-pointer-memaccess',
+ '-Wno-implicit-function-declaration',
+ '-Wno-logical-op-parentheses',
+ '-Wno-tautological-compare',
+ '-Wno-parentheses-equality',
+ '-Wno-return-type',
+ ],
+ },
+ }],
+ ],
+ }],
+ ],
+ 'defines': [
+ 'GTF_API=GTF_GLES20',
+ 'HKEMBEDDEDFILESYSTEM',
+ ],
+ 'sources': [
+ '<@(gtf_es_sources)',
+ # Include a dummy c++ file to force linking of libstdc++.
+ '<(DEPTH)/gpu/gles2_conform_support/dummy.cc',
+ ],
+ 'run_as': {
+ 'conditions': [
+ ['OS=="win"', {
+ 'action': [
+ '$(TargetPath)',
+ '-noimagefileio',
+ '-run=<(DEPTH)/third_party/gles2_conform/GTF_ES/glsl/GTF/mustpass.run',
+ ],
+ }],
+ ],
+ },
+ },
+ ],
+ }], # internal_gles2_conform_tests
+ ['OS=="win" and internal_gles2_conform_tests', {
+ 'targets': [
+ {
+ 'target_name': 'gles2_conform_test_angle',
+ 'type': 'executable',
+ 'dependencies': [
+ 'gles2_conform_test_embedded_data',
+ '<(DEPTH)/base/base.gyp:base',
+ '<(DEPTH)/third_party/expat/expat.gyp:expat',
+ '<(DEPTH)/third_party/angle_dx11/src/build_angle.gyp:libGLESv2',
+ '<(DEPTH)/third_party/angle_dx11/src/build_angle.gyp:libEGL',
+ '<(DEPTH)/gpu/gles2_conform_support/gles2_conform_support.gyp:egl_main_native',
+ ],
+ 'defines': [
+ 'GTF_API=GTF_GLES20',
+ ],
+ 'include_dirs': [
+ '<(DEPTH)/third_party/angle_dx11/include',
+ ],
+ 'sources': [
+ '<@(gtf_es_sources)',
+ ],
+ },
+ ],
+ }],
+
+ ['chromeos==1 and internal_gles2_conform_tests', {
+ 'targets': [
+ {
+ 'target_name': 'gles2_conform_test_chromeos',
+ 'type': 'executable',
+ 'dependencies': [
+ 'gles2_conform_test_embedded_data',
+ '<(DEPTH)/base/base.gyp:*',
+ '<(DEPTH)/third_party/expat/expat.gyp:expat',
+ '../../build/linux/system.gyp:gtk',
+ '<(DEPTH)/gpu/gles2_conform_support/gles2_conform_support.gyp:egl_main_native',
+ ],
+ 'libraries': [
+ '-lEGL',
+ '-lGLESv2',
+ ],
+ 'defines': [
+ 'GTF_API=GTF_GLES20',
+ 'CHROMEOS_GLES2_CONFORMANCE',
+ ],
+ 'sources': [
+ '<@(gtf_es_sources)',
+ ],
+ },
+ ],
+ }],
+ ],
+}
+
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/gpu/gles2_conform_support/gles2_conform_test.h b/gpu/gles2_conform_support/gles2_conform_test.h
new file mode 100644
index 0000000..565774f
--- /dev/null
+++ b/gpu/gles2_conform_support/gles2_conform_test.h
@@ -0,0 +1,11 @@
+// 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.
+
+#ifndef GPU_GLES2_CONFORM_SUPPORT_GLES2_CONFORM_TEST_H
+#define GPU_GLES2_CONFORM_SUPPORT_GLES2_CONFORM_TEST_H
+
+bool RunGLES2ConformTest(const char* path);
+
+#endif // GPU_GLES2_CONFORM_SUPPORT_GLES2_CONFORM_TEST_H
+
diff --git a/gpu/gles2_conform_support/gles2_conform_test_expectations.txt b/gpu/gles2_conform_support/gles2_conform_test_expectations.txt
new file mode 100644
index 0000000..fa9086b
--- /dev/null
+++ b/gpu/gles2_conform_support/gles2_conform_test_expectations.txt
@@ -0,0 +1,70 @@
+// 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
+// NVIDIA AMD INTEL
+// 0x**** (this is a gpu's PCI device ID)
+// 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
+
+253674 LION INTEL : GL2ExtensionTests_dFdy_input_run = FAIL
+253674 LION INTEL : GL2FixedTests_point_sprites_input_run = FAIL
+253674 LION INTEL : GL2Tests_glUniform_input_run = FAIL
+253674 LION INTEL : GL2Tests_three_uniforms_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 : GL2Tests_glUniform_input_run = FAIL
+253674 LION AMD : GL2Tests_three_uniforms_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 : GL2Tests_glUniform_input_run = FAIL
+253674 MOUNTAINLION AMD : GL2Tests_three_uniforms_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 : GL2Tests_glUniform_input_run = FAIL
+253674 MOUNTAINLION INTEL : GL2Tests_three_uniforms_input_run = FAIL
+253674 MOUNTAINLION INTEL : GL_control_flow_input_run = FAIL
+253674 MOUNTAINLION INTEL : GL_operators_input_run = FAIL
+
+253674 MAC NVIDIA : GL2Tests_glUniform_input_run = FAIL
+253674 MAC NVIDIA : GL2Tests_three_uniforms_input_run = FAIL
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Temprory entries: they should be removed once the bugs are fixed.
+//
+////////////////////////////////////////////////////////////////////////////////
+