diff options
-rw-r--r-- | build/all.gyp | 12 | ||||
-rw-r--r-- | gpu/gles2_conform_support/README | 15 | ||||
-rwxr-xr-x | gpu/gles2_conform_support/generate_gles2_conform_tests.py | 63 | ||||
-rwxr-xr-x | gpu/gles2_conform_support/generate_gles2_embedded_data.py | 120 | ||||
-rw-r--r-- | gpu/gles2_conform_support/gles2_conform.gypi | 318 | ||||
-rw-r--r-- | gpu/gles2_conform_support/gles2_conform_test.cc | 93 | ||||
-rw-r--r-- | gpu/gles2_conform_support/gles2_conform_test.gyp | 248 | ||||
-rw-r--r-- | gpu/gles2_conform_support/gles2_conform_test.h | 11 | ||||
-rw-r--r-- | gpu/gles2_conform_support/gles2_conform_test_expectations.txt | 70 |
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. +// +//////////////////////////////////////////////////////////////////////////////// + |