summaryrefslogtreecommitdiffstats
path: root/gpu/khronos_glcts_support
diff options
context:
space:
mode:
authorullysses.a.eoff <ullysses.a.eoff@intel.com>2014-09-30 18:07:59 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-01 01:08:15 +0000
commitffbb37ebec861db6e93471a5837727ea8d974f91 (patch)
tree8e1198ad97f236888e3eaa2d9711c7d263cc7882 /gpu/khronos_glcts_support
parent272faab02156ff5ecc05e93029fc0466b2491053 (diff)
downloadchromium_src-ffbb37ebec861db6e93471a5837727ea8d974f91.zip
chromium_src-ffbb37ebec861db6e93471a5837727ea8d974f91.tar.gz
chromium_src-ffbb37ebec861db6e93471a5837727ea8d974f91.tar.bz2
Implements a windowless chrome gpu command buffer platform for
the gles2 conformance tests in the khronos GL-CTS test suite using its new drawElements APIs. Requires the khronos GL-CTS source to be available in src/third_party/khronos_glcts. This support targets the Khronos 3.X branch of ogles/conform at rev 26950. Define the build option internal_khronos_glcts_tests=1 to build the tests. Initial support is for Chromium on ChromiumOS. Other targets may need to be ported for build support as well. v2: Fix AUTHORS. Change naming convention from khronos_conform to khronos_glcts. (piman, kbr) v3: Ran git cl format on egl_native_windowless.cc so it matches the chromium style. (piman) v4: Use AppendArg instead of AppendSwitch to hopefully circumvent a repeat of chromium:408251. (kbr) v5: Handle FilePath's correctly for Windows compatibility. v6: Rebase; Remove -fno-exceptions from cflags_cc BUG=chromium:412865 R=piman@chromium.org, kbr@chromium.org, darin, brettw, cpu TEST=Build and run the khronos_glcts_test binary Review URL: https://codereview.chromium.org/556333003 Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> Review URL: https://codereview.chromium.org/556333003 Cr-Commit-Position: refs/heads/master@{#297567}
Diffstat (limited to 'gpu/khronos_glcts_support')
-rw-r--r--gpu/khronos_glcts_support/DEPS3
-rwxr-xr-xgpu/khronos_glcts_support/generate_khronos_glcts_tests.py98
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts.gypi512
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts_cts.gyp92
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts_framework.gyp215
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts_gtf.gyp34
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts_test.cc104
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts_test.gyp101
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts_test.h11
-rw-r--r--gpu/khronos_glcts_support/khronos_glcts_test_expectations.txt32
-rw-r--r--gpu/khronos_glcts_support/native/egl_native_windowless.cc67
-rw-r--r--gpu/khronos_glcts_support/native/main.cc52
12 files changed, 1321 insertions, 0 deletions
diff --git a/gpu/khronos_glcts_support/DEPS b/gpu/khronos_glcts_support/DEPS
new file mode 100644
index 0000000..9d9bc74
--- /dev/null
+++ b/gpu/khronos_glcts_support/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+third_party/khronos_glcts",
+]
diff --git a/gpu/khronos_glcts_support/generate_khronos_glcts_tests.py b/gpu/khronos_glcts_support/generate_khronos_glcts_tests.py
new file mode 100755
index 0000000..3147286
--- /dev/null
+++ b/gpu/khronos_glcts_support/generate_khronos_glcts_tests.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+# Copyright 2014 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 khronos_glcts tests."""
+
+import os
+import re
+import sys
+import argparse
+
+TEST_DEF_TEMPLATE = """
+TEST(KhronosGLCTSTest, %(gname)s) {
+ EXPECT_TRUE(RunKhronosGLCTSTest("%(cname)s"));
+}
+"""
+
+RUN_FILE_SUITE_PREFIX = {
+ "mustpass_es20.run" : "ES2-CTS.gtf",
+}
+
+def ReadFileAsLines(filename):
+ """
+ Reads a file, yielding each non-blank line
+ and lines that don't begin with #
+ """
+ file = open(filename, "r")
+ lines = file.readlines()
+ file.close()
+ for line in lines:
+ line = line.strip()
+ if len(line) > 0 and not line.startswith("#"):
+ yield line
+
+def ReadRunFile(run_file):
+ """
+ Find all .test tests in a .run file and return their paths.
+ If the .run file contains another .run file, then that is inspected
+ too.
+ """
+ tests = list()
+ base_dir = os.path.dirname(run_file)
+ for line in ReadFileAsLines(run_file):
+ root, ext = os.path.splitext(line)
+ if ext == ".test":
+ tests.append(os.path.join(base_dir, line))
+ elif ext == ".run":
+ tests += ReadRunFile(os.path.join(base_dir, line))
+ else:
+ raise ValueError, "Unexpected line '%s' in '%s'" % (line, run_file)
+ return tests
+
+def GenerateTests(run_files, output):
+ """
+ Generates code for khronos_glcts_test test-cases that are
+ listed in the run_files.
+ """
+ output.write('#include "gpu/khronos_glcts_support/khronos_glcts_test.h"\n')
+ output.write('#include "testing/gtest/include/gtest/gtest.h"\n\n')
+
+ for run_file in run_files:
+ run_file_name = os.path.basename(run_file)
+ run_file_dir = os.path.dirname(run_file)
+ suite_prefix = RUN_FILE_SUITE_PREFIX[run_file_name]
+ output.write("// " + run_file_name + "\n")
+ for test in ReadRunFile(run_file):
+ rel_path = os.path.relpath(test, run_file_dir)
+ root, ext = os.path.splitext(rel_path)
+ name = root.replace('.', '_')
+ name = "%s.%s" % (suite_prefix, name.replace(os.path.sep, '.'))
+ output.write(TEST_DEF_TEMPLATE
+ % {
+ "gname": re.sub(r'[^A-Za-z0-9]', '_', name),
+ "cname": name,
+ })
+ output.write("\n");
+
+def main():
+ """This is the main function."""
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--outdir", default = ".")
+ parser.add_argument("run_files", nargs = "+")
+
+ args = parser.parse_args()
+
+ output = open(
+ os.path.join(args.outdir, "khronos_glcts_test_autogen.cc"), "wb")
+
+ try:
+ GenerateTests(args.run_files, output)
+ finally:
+ output.close()
+
+ return 0
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/gpu/khronos_glcts_support/khronos_glcts.gypi b/gpu/khronos_glcts_support/khronos_glcts.gypi
new file mode 100644
index 0000000..cfb8bde
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts.gypi
@@ -0,0 +1,512 @@
+# Copyright 2014 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.
+
+{
+ 'target_defaults': {
+ 'defines': [
+ 'DEQP_TARGET_NAME="chrome-gpu-command-buffer"',
+ 'DEQP_SUPPORT_GLES2=1',
+ 'DEQP_SUPPORT_EGL=1',
+ 'GTF_API=GTF_GLES20',
+ ],
+ 'conditions': [
+ ['OS=="linux"', {
+ 'defines': [
+ '_XOPEN_SOURCE=500',
+ ],
+ 'cflags!': [
+ '-fno-exceptions',
+ ],
+ 'cflags_cc!': [
+ '-fno-exceptions',
+ ],
+ 'target_conditions': [
+ ['_type=="static_library"', {
+ 'cflags_cc!': [
+ '-fno-rtti',
+ ],
+ }],
+ ],
+ }],
+ ],
+ },
+ 'variables': {
+ 'glcts_data_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/data',
+ ],
+ 'glcts_gtf_data_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/GL',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/GL2ExtensionTests',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/GL2FixedTests',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/GL2Tests',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/GLCoverage',
+ ],
+ 'glcts_gtf_runfiles': [
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/mustpass_es20.run',
+ ],
+ 'gtf_core_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFArguments.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTest.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestDriver.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/MIMG.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFLog.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/XmlUtils.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFMemFile.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/eglu.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/eglut.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/gl2Native.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFgl.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFPort.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFModelData.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFStringUtils.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestElement.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFFileReader.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestUtil.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestCompareGL.c',
+ ],
+ 'gtf_gl_core_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFAttDataGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFDepthRangeParamGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFModelDataGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFPointParamGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFReadPixelsGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFShaderDataGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFShaderTextGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFStateDataGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFTexDataGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFTexParamGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFUniDataGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFTestTextureFloatBase.c',
+ ],
+ 'gtf_gles2_srcs': [
+ # Base
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestGL2Test.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestAttributeGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestDetachGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestCreateObjectGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniformQueryGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestBindAllAttributes.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFramebufferObjects.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttachedObjects.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttributeLocation.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetBIFD.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetExtensions.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramInfoLog.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramiv.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderInfoLog.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderiv.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetUniform.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetVertexAttrib.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMaxVertexAttrib.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMultipleShaders.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestRelinkProgram.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniform.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttribPointer.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttributes.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexProgramPointSize.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFixedDataType.c',
+
+ # Build
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestBuildGL.c',
+
+ # Shader load
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestShaderLoadGL.c',
+
+ # Rasterization
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestRasterizationGL.c',
+
+ # Complexity
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestComplexityGL.c',
+
+ # Coverage
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFCoverageDict.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestCoverageGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFCoverageGL.c',
+
+ # Fixed-function
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestFixedGL.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBlend.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferClear.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferColor.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferCorners.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferObjects.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestClip.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestColorRamp.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestCopyTexture.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferClear.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferFunctions.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDither.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestUserClipPlanes.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDivideByZero.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestGets.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsInterpolation.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsSelection.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointRasterization.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointSprites.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPolygonCull.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestScissor.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneClear.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneCorners.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneFunction.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneOperation.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTextureEdgeClamp.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTransformViewport.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleRasterization.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleTiling.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestVertexOrder.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestViewportClamp.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilg.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilr.c',
+
+ # Extensions
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestExtension.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFramebufferObject.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil8.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDataType1010102.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDebug.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth24.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth32.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTexture.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestElementIndexUINT.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFBORenderMipmap.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFragmentPrecisionHigh.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestMapBuffer.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSizeArray.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSprite.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTexture3D.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloat.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloatLinear.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureNPOT.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestUtilp.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestOcclusionQuery.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestConditionalQuery.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPackedDepthStencil.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexArrayObject.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureCompressionASTCLDR.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTextureCubeMap.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil1.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil4.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexHalfFloat.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestReadFormat.c',
+ ],
+ 'gtf_gles2_es_only_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedPalettedTexture.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedETC1RGB8Texture.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRGB8RGBA8.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImage.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestSurfacelessContext.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImageExternal.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRequiredInternalformat.c',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLCreateContext.c',
+ ],
+ 'glcts_common_sources': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcConfigList.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcConfigList.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcConfigListCase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcConfigListCase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcConfigPackage.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcConfigPackage.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcContext.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcContext.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcFragDepthTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcFragDepthTests.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcInfoTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcInfoTests.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderIndexingTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderIndexingTests.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderIntegerMixTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderIntegerMixTests.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderLibrary.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderLibrary.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderLibraryCase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderLibraryCase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderLoopTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderLoopTests.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderRenderCase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderRenderCase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderStructTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderStructTests.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderSwitchTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcShaderSwitchTests.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestCase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestCase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestCaseWrapper.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestCaseWrapper.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestPackage.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestPackage.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestSubcase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcTestSubcase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcUniformBlockCase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcUniformBlockCase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcUniformBlockTests.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/common/glcUniformBlockTests.hpp',
+ ],
+ 'glcts_es2_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/gles2/es2cTestPackage.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/gles2/es2cTestPackage.hpp',
+ ],
+ 'glcts_gtf_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfTestCase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfTestCase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfTestGroup.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfTestGroup.hpp',
+ ],
+ 'glcts_gtf_wrapper_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfTestContext.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfTestContext.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfWrapper.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf/gtfWrapper.h',
+ ],
+ 'glcts_runner_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/runner/glcTestRunner.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/runner/glcTestRunner.hpp',
+ ],
+ 'qphelper_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpCommandLine.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpCommandLine.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpCrashHandler.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpCrashHandler.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpDebugOut.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpDebugOut.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpInfo.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpInfo.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpTestLog.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpTestLog.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpWatchDog.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpWatchDog.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpXmlWriter.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper/qpXmlWriter.h',
+ ],
+ 'tcutil_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuApp.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuApp.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuCommandLine.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuCommandLine.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuCompressedTexture.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuCompressedTexture.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuDefs.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuDefs.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuFloat.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuFormatUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuFuzzyImageCompare.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuFuzzyImageCompare.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuImageCompare.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuImageCompare.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuImageIO.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuImageIO.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuMatrix.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuMatrixUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuPixelFormat.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuPlatform.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuPlatform.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuRandomValueIterator.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuRandomValueIterator.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuRenderTarget.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuRenderTarget.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuResource.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuResource.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuRGBA.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuRGBA.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuStringTemplate.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuStringTemplate.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuSurface.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuSurface.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestCase.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestCase.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestCaseWrapper.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestCaseWrapper.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestContext.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestContext.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestExecutor.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestExecutor.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestLog.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestLog.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestPackage.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTestPackage.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTexture.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTexture.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTextureUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuTextureUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuVector.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuVectorType.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/common/tcuVectorUtil.hpp',
+ # Not used by anything...
+ #'<(DEPTH)/third_party/khronos_glcts/framework/common/tcuZipResource.cpp',
+ #'<(DEPTH)/third_party/khronos_glcts/framework/common/tcuZipResource.hpp',
+ ],
+ 'glutil_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluCallLogWrapper.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluCallLogWrapper.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluContextInfo.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluContextInfo.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluDefs.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluDefs.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluDrawUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluDrawUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluFboRenderContext.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluFboRenderContext.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluPixelTransfer.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluPixelTransfer.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluPlatform.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluProgram.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluProgram.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluRenderContext.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluRenderContext.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluShaderUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluShaderUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluStateReset.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluStateReset.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluStrUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluStrUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluTexture.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluTexture.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluTextureUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluTextureUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluVarType.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluVarType.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluVarTypeUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/gluVarTypeUtil.hpp',
+ ],
+ 'glwrapper_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glw.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwDefs.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwDefs.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwEnums.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwFunctionLoader.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwFunctions.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwFunctions.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwInitES20Direct.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwInitES20Direct.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwInitFunctions.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwInitFunctions.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwWrapper.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper/glwWrapper.hpp',
+ ],
+ 'tcutil_egl_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEgl.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEgl.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglCallLogWrapper.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglCallLogWrapper.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglConfigFilter.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglConfigFilter.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglConfigInfo.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglConfigInfo.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglPlatform.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglPlatform.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglStrUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl/tcuEglStrUtil.hpp',
+ ],
+ 'debase_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deDefs.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deDefs.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deFloat16.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deFloat16.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deInt32.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deInt32.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deInt32Test.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deMath.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deMath.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deMemory.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deMemory.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deRandom.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deRandom.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deString.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase/deString.h',
+ ],
+ 'depool_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/deMemPool.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/deMemPool.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolArray.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolArray.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHashArray.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHashArray.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHash.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHash.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHashSet.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHashSet.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHeap.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolHeap.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolMultiSet.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolMultiSet.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolSet.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolSet.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolStringBuilder.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolStringBuilder.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolTest.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool/dePoolTest.h',
+ ],
+ 'dethread_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deAtomic.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deAtomic.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deMutex.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deSemaphore.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deThread.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deThreadLocal.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deThreadTest.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/deThreadTest.h',
+ ],
+ 'dethread_unix_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/unix/deMutexUnix.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/unix/deSemaphoreUnix.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/unix/deThreadLocalUnix.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread/unix/deThreadUnix.c',
+ ],
+ 'deutil_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deClock.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deClock.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deCommandLine.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deCommandLine.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deDynamicLibrary.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deDynamicLibrary.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deFile.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deFile.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deProcess.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deProcess.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deSocket.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deSocket.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deTimer.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deTimer.h',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deTimerTest.c',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil/deTimerTest.h',
+ ],
+ 'decpp_srcs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deBlockBuffer.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deBlockBuffer.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deDefs.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deDefs.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deDirectoryIterator.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deDirectoryIterator.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deDynamicLibrary.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deDynamicLibrary.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deFilePath.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deFilePath.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deMemPool.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deMemPool.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deMutex.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deMutex.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/dePoolArray.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/dePoolArray.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/dePoolString.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/dePoolString.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deRandom.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deRandom.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deRingBuffer.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deRingBuffer.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deSemaphore.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deSemaphore.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deSharedPtr.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deSharedPtr.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deSocket.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deSocket.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deStringUtil.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deStringUtil.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deThread.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deThread.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deThreadSafeRingBuffer.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deThreadSafeRingBuffer.hpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deUniquePtr.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp/deUniquePtr.hpp',
+ ],
+ }
+}
diff --git a/gpu/khronos_glcts_support/khronos_glcts_cts.gyp b/gpu/khronos_glcts_support/khronos_glcts_cts.gyp
new file mode 100644
index 0000000..6e00afc
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts_cts.gyp
@@ -0,0 +1,92 @@
+# Copyright 2014 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': [
+ 'khronos_glcts.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'glcts_common',
+ 'type': 'static_library',
+ 'dependencies': [
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:delibs',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:tcutil',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:glutil',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:tcutil_egl',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/common',
+ ],
+ },
+ 'sources': [
+ '<@(glcts_common_sources)',
+ ],
+ },
+ {
+ 'target_name': 'glcts_gtf_wrapper',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'glcts_common',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:delibs',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:tcutil',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:glutil',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:tcutil_egl',
+ ],
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf',
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source'
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf',
+ ],
+ },
+ 'sources': [
+ '<@(glcts_gtf_wrapper_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'glcts_gtf',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'glcts_common', 'glcts_gtf_wrapper',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_gtf.gyp:gtf_es',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:delibs',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:tcutil',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:glutil',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/gtf',
+ ],
+ },
+ 'sources': [
+ '<@(glcts_gtf_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'glcts_es2',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'glcts_common', 'glcts_gtf',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:delibs',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:tcutil',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:glutil',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/gles2',
+ ],
+ },
+ 'export_dependent_settings': [
+ 'glcts_common',
+ ],
+ 'sources': [
+ '<@(glcts_es2_srcs)',
+ ],
+ },
+ ],
+}
diff --git a/gpu/khronos_glcts_support/khronos_glcts_framework.gyp b/gpu/khronos_glcts_support/khronos_glcts_framework.gyp
new file mode 100644
index 0000000..27a3962
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts_framework.gyp
@@ -0,0 +1,215 @@
+# Copyright 2014 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': [
+ 'khronos_glcts.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'khronos_glcts_framework',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'delibs', 'qphelper', 'tcutil', 'glutil', 'tcutil_egl',
+ ],
+ 'export_dependent_settings': [
+ 'delibs', 'qphelper', 'tcutil', 'glutil', 'tcutil_egl',
+ ],
+ },
+ {
+ 'target_name': 'delibs',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'debase', 'depool', 'dethread', 'deutil', 'decpp',
+ ],
+ 'export_dependent_settings': [
+ 'debase', 'depool', 'dethread', 'deutil', 'decpp',
+ ],
+ },
+ {
+ 'target_name': 'debase',
+ 'type': 'static_library',
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/debase',
+ ],
+ },
+ 'sources': [
+ '<@(debase_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'depool',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'debase',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/depool',
+ ],
+ },
+ 'sources': [
+ '<@(depool_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'dethread',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'debase',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread',
+ ],
+ },
+ 'sources': [
+ '<@(dethread_srcs)',
+ ],
+ 'conditions': [
+ ['OS=="linux"', {
+ 'sources': [
+ '<@(dethread_unix_srcs)',
+ ],
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/dethread',
+ ],
+ }],
+ ]
+ },
+ {
+ 'target_name': 'deutil',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'debase', 'depool', 'dethread',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/deutil',
+ ],
+ },
+ 'sources': [
+ '<@(deutil_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'decpp',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'debase', 'depool', 'dethread', 'deutil',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/decpp',
+ ],
+ },
+ 'sources': [
+ '<@(decpp_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'qphelper',
+ 'type': 'static_library',
+ 'defines': [
+ 'QP_SUPPORT_PNG',
+ ],
+ 'dependencies': [
+ 'debase', 'depool', 'dethread', 'deutil',
+ '<(DEPTH)/third_party/libpng/libpng.gyp:libpng',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/qphelper',
+ ],
+ },
+ 'sources': [
+ '<@(qphelper_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'tcutil',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'delibs', 'qphelper',
+ '<(DEPTH)/third_party/libpng/libpng.gyp:libpng',
+ ],
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/delibs/libpng', #png.hpp
+ ],
+ 'export_dependent_settings': [
+ 'qphelper',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/common',
+ ],
+ },
+ 'sources': [
+ '<@(tcutil_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'glwrapper',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'delibs',
+ '<(DEPTH)/gpu/gpu.gyp:gles2_c_lib_nocheck',
+ '<(DEPTH)/gpu/gpu.gyp:command_buffer_service',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl/wrapper',
+ ],
+ },
+ 'sources': [
+ '<@(glwrapper_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'glutil',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'glwrapper', 'delibs', 'tcutil',
+ ],
+ 'export_dependent_settings': [
+ 'glwrapper',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl',
+ ],
+ },
+ 'sources': [
+ '<@(glutil_srcs)',
+ ],
+ },
+ {
+ 'target_name': 'tcutil_egl',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'delibs', 'tcutil', 'glwrapper',
+ # TODO: We may want to phase out the old gles2_conform support in preference
+ # of this implementation. So eventually we'll need to move the egl_native
+ # stuff here or to a shareable location/path.
+ '<(DEPTH)/gpu/gles2_conform_support/gles2_conform_support.gyp:egl_native',
+ '<(DEPTH)/third_party/khronos/khronos.gyp:khronos_headers',
+ ],
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/opengl',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/framework/egl',
+ ],
+ },
+ 'export_dependent_settings': [
+ '<(DEPTH)/third_party/khronos/khronos.gyp:khronos_headers',
+ ],
+ 'sources': [
+ '<@(tcutil_egl_srcs)',
+ ],
+ },
+ ],
+}
diff --git a/gpu/khronos_glcts_support/khronos_glcts_gtf.gyp b/gpu/khronos_glcts_support/khronos_glcts_gtf.gyp
new file mode 100644
index 0000000..16e6694
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts_gtf.gyp
@@ -0,0 +1,34 @@
+# Copyright 2014 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': [
+ 'khronos_glcts.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'gtf_es',
+ 'type': 'static_library',
+ 'dependencies': [
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:debase',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_cts.gyp:glcts_gtf_wrapper',
+ '<(DEPTH)/third_party/expat/expat.gyp:expat',
+ ],
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '<(DEPTH)/third_party/khronos_glcts/GTF_ES/glsl/GTF/Source',
+ ],
+ },
+ 'sources': [
+ '<@(gtf_core_srcs)',
+ '<@(gtf_gl_core_srcs)',
+ '<@(gtf_gles2_srcs)',
+ '<@(gtf_gles2_es_only_srcs)',
+ ],
+ },
+ ],
+}
diff --git a/gpu/khronos_glcts_support/khronos_glcts_test.cc b/gpu/khronos_glcts_support/khronos_glcts_test.cc
new file mode 100644
index 0000000..b77bb8d
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts_test.cc
@@ -0,0 +1,104 @@
+// Copyright 2014 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/khronos_glcts_support/khronos_glcts_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"
+#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"
+
+base::FilePath g_deqp_log_dir;
+
+bool RunKhronosGLCTSTest(const char* test_name) {
+ // 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("khronos_glcts_support")).
+ Append(FILE_PATH_LITERAL("khronos_glcts_test_expectations.txt"));
+ if (!base::PathExists(test_expectations_path)) {
+ LOG(ERROR) << "Fail to locate khronos_glcts_test_expectations.txt";
+ return false;
+ }
+ gpu::GPUTestExpectationsParser test_expectations;
+ if (!test_expectations.LoadTestExpectations(test_expectations_path)) {
+ LOG(ERROR) << "Fail to load khronos_glcts_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;
+ }
+
+ const ::testing::TestInfo* const test_info =
+ ::testing::UnitTest::GetInstance()->current_test_info();
+ int32 expectation =
+ test_expectations.GetTestExpectation(test_info->name(), bot_config);
+ if (expectation != gpu::GPUTestExpectationsParser::kGpuTestPass) {
+ LOG(WARNING) << "Test " << test_info->name() << " is bypassed";
+ return true;
+ }
+
+ base::FilePath test_path;
+ PathService::Get(base::DIR_EXE, &test_path);
+ base::FilePath archive(test_path.Append(FILE_PATH_LITERAL(
+ "khronos_glcts_data")));
+ base::FilePath program(test_path.Append(FILE_PATH_LITERAL(
+ "khronos_glcts_test_windowless")));
+ base::FilePath log =
+ g_deqp_log_dir.AppendASCII(test_info->name()).
+ AddExtension(FILE_PATH_LITERAL(".log"));
+
+ CommandLine cmdline(program);
+ cmdline.AppendSwitchPath("--deqp-log-filename", log);
+ cmdline.AppendSwitchPath("--deqp-archive-dir", archive);
+ cmdline.AppendArg("--deqp-gl-config-id=-1");
+ cmdline.AppendArg(std::string("--deqp-case=") + test_name);
+
+ std::string output;
+ bool success = base::GetAppOutput(cmdline, &output);
+ if (success) {
+ size_t success_index = output.find("Pass (Pass)");
+ size_t failed_index = output.find("Fail (Fail)");
+ 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 at_exit;
+
+ ::testing::InitGoogleTest(&argc, argv);
+
+ if (argc == 2) {
+ g_deqp_log_dir = base::FilePath::FromUTF8Unsafe(argv[1]);
+ }
+ else {
+ base::GetTempDir(&g_deqp_log_dir);
+ }
+
+ return RUN_ALL_TESTS();
+}
+
diff --git a/gpu/khronos_glcts_support/khronos_glcts_test.gyp b/gpu/khronos_glcts_support/khronos_glcts_test.gyp
new file mode 100644
index 0000000..70b1932
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts_test.gyp
@@ -0,0 +1,101 @@
+# Copyright 2014 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': [
+ 'khronos_glcts.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'khronos_glcts_test',
+ 'type': 'executable',
+ 'dependencies': [
+ '<(DEPTH)/base/base.gyp:base',
+ '<(DEPTH)/gpu/gpu.gyp:gpu',
+ '<(DEPTH)/testing/gtest.gyp:gtest',
+ ],
+ 'sources': [
+ 'khronos_glcts_test.cc',
+ ],
+ 'conditions': [
+ ['internal_khronos_glcts_tests', {
+ 'dependencies': [
+ 'khronos_glcts_test_windowless',
+ ],
+ 'variables': {
+ 'khronos_glcts_test_output_dir': '<(SHARED_INTERMEDIATE_DIR)/gpu/khronos_glcts_test',
+ },
+ 'sources': [
+ '<(khronos_glcts_test_output_dir)/khronos_glcts_test_autogen.cc',
+ ],
+ 'actions': [
+ {
+ 'action_name': 'generate_khronos_glcts_tests',
+ 'inputs': [
+ 'generate_khronos_glcts_tests.py',
+ 'khronos_glcts_test.h',
+ '<@(glcts_gtf_runfiles)',
+ ],
+ 'outputs': [
+ '<(khronos_glcts_test_output_dir)/khronos_glcts_test_autogen.cc',
+ ],
+ 'action': [
+ 'python',
+ 'generate_khronos_glcts_tests.py',
+ '--outdir=<(khronos_glcts_test_output_dir)',
+ '<@(glcts_gtf_runfiles)',
+ ],
+ },
+ ],
+ }],
+ ],
+ },
+ ],
+ 'conditions': [
+ ['internal_khronos_glcts_tests', {
+ 'targets': [
+ {
+ 'target_name': 'tcutil_platform_windowless',
+ 'type': 'static_library',
+ 'dependencies': [
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:khronos_glcts_framework',
+ ],
+ 'sources': [
+ 'native/egl_native_windowless.cc',
+ ],
+ },
+ {
+ 'target_name': 'khronos_glcts_test_windowless',
+ 'type': 'executable',
+ 'dependencies': [
+ 'tcutil_platform_windowless',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_framework.gyp:khronos_glcts_framework',
+ '<(DEPTH)/gpu/khronos_glcts_support/khronos_glcts_cts.gyp:glcts_es2',
+ ],
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)/khronos_glcts_data/gl_cts',
+ 'files': [
+ '<@(glcts_data_dirs)',
+ ],
+ },
+ {
+ 'destination': '<(PRODUCT_DIR)/khronos_glcts_data/gl_cts/GTF',
+ 'files': [
+ '<@(glcts_gtf_data_dirs)',
+ '<@(glcts_gtf_runfiles)',
+ ],
+ },
+ ],
+ 'sources': [
+ '<(DEPTH)/third_party/khronos_glcts/cts/glcTestPackageEntry.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/glcTestPackageRegistry.cpp',
+ '<(DEPTH)/third_party/khronos_glcts/cts/glcTestPackageRegistry.hpp',
+ 'native/main.cc',
+ ],
+ },
+ ],
+ }],
+ ],
+}
diff --git a/gpu/khronos_glcts_support/khronos_glcts_test.h b/gpu/khronos_glcts_support/khronos_glcts_test.h
new file mode 100644
index 0000000..1f12129
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts_test.h
@@ -0,0 +1,11 @@
+// Copyright 2014 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_KHRONOS_GLCTS_SUPPORT_KHRONOS_GLCTS_TEST_H
+#define GPU_KHRONOS_GLCTS_SUPPORT_KHRONOS_GLCTS_TEST_H
+
+bool RunKhronosGLCTSTest(const char* test_name);
+
+#endif // GPU_KHRONOS_GLCTS_SUPPORT_KHRONOS_GLCTS_TEST_H
+
diff --git a/gpu/khronos_glcts_support/khronos_glcts_test_expectations.txt b/gpu/khronos_glcts_support/khronos_glcts_test_expectations.txt
new file mode 100644
index 0000000..54c2969
--- /dev/null
+++ b/gpu/khronos_glcts_support/khronos_glcts_test_expectations.txt
@@ -0,0 +1,32 @@
+// Copyright 2014 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 khronos_glcts conformance tests. The
+// expected format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list:
+// WIN XP VISTA WIN7 MAC LEOPARD SNOWLEOPARD LION LINUX CHROMEOS MOUNTAINLION
+// MAVERICKS
+// NVIDIA AMD INTEL
+// 0xabcd - GPU PCI device ID. Specifying a PCI id requires a vendor.
+// DEBUG RELEASE
+//
+// 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
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Temporary entries: they should be removed once the bugs are fixed.
+//
+////////////////////////////////////////////////////////////////////////////////
diff --git a/gpu/khronos_glcts_support/native/egl_native_windowless.cc b/gpu/khronos_glcts_support/native/egl_native_windowless.cc
new file mode 100644
index 0000000..ac0e908
--- /dev/null
+++ b/gpu/khronos_glcts_support/native/egl_native_windowless.cc
@@ -0,0 +1,67 @@
+// Copyright 2014 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.
+
+// Using egl_native from gles2_conform_support
+// TODO: We may want to phase out the old gles2_conform support in preference
+// of this implementation. So eventually we'll need to move the egl_native
+// stuff here or to a shareable location/path.
+#include "gpu/gles2_conform_support/egl/display.h"
+
+#include "third_party/khronos_glcts/framework/egl/tcuEglPlatform.hpp"
+
+namespace egl {
+namespace native {
+namespace windowless {
+
+class Window : public tcu::NativeWindow {
+ public:
+ Window(tcu::egl::Display& display,
+ EGLConfig config,
+ const EGLint* attribList,
+ int width,
+ int height)
+ : tcu::NativeWindow::NativeWindow(),
+ eglDisplay_(display),
+ eglSurface_(display, config, (EGLNativeWindowType)NULL, attribList) {}
+
+ virtual ~Window() {}
+
+ tcu::egl::Display& getEglDisplay() { return eglDisplay_; }
+
+ tcu::egl::WindowSurface& getEglSurface() { return eglSurface_; }
+
+ void processEvents() { return; }
+
+ private:
+ tcu::egl::Display& eglDisplay_;
+ tcu::egl::WindowSurface eglSurface_;
+};
+
+class Platform : public tcu::EglPlatform {
+ public:
+ Platform() : tcu::EglPlatform::EglPlatform() {}
+
+ virtual ~Platform() {}
+
+ tcu::NativeWindow* createWindow(tcu::NativeDisplay& dpy,
+ EGLConfig config,
+ const EGLint* attribList,
+ int width,
+ int height,
+ qpVisibility visibility) {
+ tcu::egl::Display& eglDisplay = dpy.getEglDisplay();
+ egl::Display* display =
+ static_cast<egl::Display*>(eglDisplay.getEGLDisplay());
+ display->SetCreateOffscreen(width, height);
+ return new Window(eglDisplay, config, attribList, width, height);
+ }
+};
+
+} // namespace windowless
+} // namespace native
+} // namespace egl
+
+tcu::Platform* createPlatform(void) {
+ return new egl::native::windowless::Platform();
+}
diff --git a/gpu/khronos_glcts_support/native/main.cc b/gpu/khronos_glcts_support/native/main.cc
new file mode 100644
index 0000000..8ffde05
--- /dev/null
+++ b/gpu/khronos_glcts_support/native/main.cc
@@ -0,0 +1,52 @@
+// Copyright 2014 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 <cstdio>
+
+#include "base/at_exit.h"
+#include "base/command_line.h"
+#include "base/message_loop/message_loop.h"
+
+#include "third_party/khronos_glcts/framework/common/tcuApp.hpp"
+#include "third_party/khronos_glcts/framework/common/tcuCommandLine.hpp"
+#include "third_party/khronos_glcts/framework/common/tcuDefs.hpp"
+#include "third_party/khronos_glcts/framework/common/tcuPlatform.hpp"
+#include "third_party/khronos_glcts/framework/common/tcuResource.hpp"
+#include "third_party/khronos_glcts/framework/common/tcuTestLog.hpp"
+#include "third_party/khronos_glcts/framework/delibs/decpp/deUniquePtr.hpp"
+
+// implemented in the native platform
+tcu::Platform* createPlatform ();
+
+void GTFMain(int argc, char* argv[]) {
+ setvbuf(stdout, DE_NULL, _IOLBF, 4*1024);
+
+ try {
+ tcu::CommandLine cmdLine(argc, argv);
+ tcu::DirArchive archive(cmdLine.getArchiveDir());
+ tcu::TestLog log(cmdLine.getLogFileName(), cmdLine.getLogFlags());
+ de::UniquePtr<tcu::Platform> platform(createPlatform());
+ de::UniquePtr<tcu::App> app(
+ new tcu::App(*platform, archive, log, cmdLine));
+
+ // Main loop.
+ for (;;) {
+ if (!app->iterate())
+ break;
+ }
+ }
+ catch (const std::exception& e) {
+ tcu::die("%s", e.what());
+ }
+}
+
+int main(int argc, char *argv[]) {
+ base::AtExitManager at_exit;
+ CommandLine::Init(argc, argv);
+ base::MessageLoopForUI message_loop;
+
+ GTFMain(argc, argv);
+
+ return 0;
+}