aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ben Wagner <benjaminwagner@google.com>2018-06-28 17:43:08 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-29 13:25:17 +0000
commita5e703043ff034afea41ea24e9d8f978f05ba678 (patch)
treeb32e2fe6c9a23832790d991d670de955199bc866
parent55a7d22beb635ac960b16858b0ffe67424402950 (diff)
Add OpenCL test job that runs hello-opencl.
Add NEO driver to opencl_linux asset. Bug: skia:8081 Change-Id: Ic36c670f3cabd73119845e94fcb2f54525e83443 Reviewed-on: https://skia-review.googlesource.com/138264 Commit-Queue: Mike Klein <mtklein@google.com> Auto-Submit: Ben Wagner <benjaminwagner@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
-rw-r--r--infra/bots/assets/opencl_intel_neo_linux/VERSION1
-rwxr-xr-xinfra/bots/assets/opencl_intel_neo_linux/common.py26
-rwxr-xr-xinfra/bots/assets/opencl_intel_neo_linux/create.py72
-rwxr-xr-xinfra/bots/assets/opencl_intel_neo_linux/create_and_upload.py42
-rwxr-xr-xinfra/bots/assets/opencl_intel_neo_linux/download.py16
-rwxr-xr-xinfra/bots/assets/opencl_intel_neo_linux/upload.py16
-rw-r--r--infra/bots/cfg.json1
-rw-r--r--infra/bots/gen_tasks.go10
-rw-r--r--infra/bots/jobs.json1
-rw-r--r--infra/bots/recipe_modules/flavor/default.py16
-rw-r--r--infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json197
-rw-r--r--infra/bots/recipe_modules/flavor/examples/full.py1
-rw-r--r--infra/bots/recipes/compute_test.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json59
-rw-r--r--infra/bots/recipes/compute_test.py34
-rw-r--r--infra/bots/tasks.json133
15 files changed, 625 insertions, 0 deletions
diff --git a/infra/bots/assets/opencl_intel_neo_linux/VERSION b/infra/bots/assets/opencl_intel_neo_linux/VERSION
new file mode 100644
index 0000000000..56a6051ca2
--- /dev/null
+++ b/infra/bots/assets/opencl_intel_neo_linux/VERSION
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/infra/bots/assets/opencl_intel_neo_linux/common.py b/infra/bots/assets/opencl_intel_neo_linux/common.py
new file mode 100755
index 0000000000..caa0ad899c
--- /dev/null
+++ b/infra/bots/assets/opencl_intel_neo_linux/common.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+#
+# Copyright 2017 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+"""Common vars used by scripts in this directory."""
+
+
+import os
+import sys
+
+FILE_DIR = os.path.dirname(os.path.abspath(__file__))
+INFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir, os.pardir))
+
+sys.path.insert(0, INFRA_BOTS_DIR)
+from assets import assets
+
+ASSET_NAME = os.path.basename(FILE_DIR)
+
+
+def run(cmd):
+ """Run a command, eg. "upload" or "download". """
+ assets.main([cmd, ASSET_NAME] + sys.argv[1:])
diff --git a/infra/bots/assets/opencl_intel_neo_linux/create.py b/infra/bots/assets/opencl_intel_neo_linux/create.py
new file mode 100755
index 0000000000..1cf22cbed4
--- /dev/null
+++ b/infra/bots/assets/opencl_intel_neo_linux/create.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+#
+# Copyright 2018 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+"""Create the asset."""
+
+
+import argparse
+import common
+import multiprocessing
+import os
+import shutil
+import subprocess
+import utils
+
+def create_asset(target_dir):
+ """Create the asset."""
+ # Check out and build the Intel NEO driver. Following instructions here:
+ # https://github.com/intel/compute-runtime/blob/master/documentation/BUILD_Ubuntu.md
+ with utils.tmp_dir():
+ # Install build deps.
+ neo_build_deps = ['ccache', 'flex', 'bison', 'clang-4.0', 'cmake', 'g++',
+ 'git', 'patch', 'zlib1g-dev', 'autoconf', 'xutils-dev',
+ 'libtool', 'pkg-config', 'libpciaccess-dev']
+ apt_get_cmd = ['sudo', 'apt-get', 'install'] + neo_build_deps
+ print 'Running "%s"' % ' '.join(apt_get_cmd)
+ subprocess.check_call(apt_get_cmd)
+ # Check out repos.
+ for [repo, branch, local_name] in [
+ ['llvm-mirror/clang', 'release_40', 'clang_source'],
+ ['intel/opencl-clang', 'master', 'common_clang'],
+ ['intel/llvm-patches', 'master', 'llvm_patches'],
+ ['llvm-mirror/llvm', 'release_40', 'llvm_source'],
+ ['intel/gmmlib', 'master', 'gmmlib'],
+ ['intel/intel-graphics-compiler', 'master', 'igc'],
+ ['KhronosGroup/OpenCL-Headers', 'master', 'opencl_headers'],
+ ['intel/compute-runtime', 'master', 'neo']
+ ]:
+ subprocess.check_call(['git', 'clone', '--depth', '1', '--branch', branch,
+ 'https://github.com/' + repo, local_name])
+ # Configure the build.
+ build_dir = os.path.join(os.getcwd(), 'build')
+ os.mkdir(build_dir)
+ os.chdir(build_dir)
+ subprocess.check_call(['cmake', '-DBUILD_TYPE=Release',
+ '-DCMAKE_BUILD_TYPE=Release', '../neo'])
+ # Build and package the library.
+ subprocess.check_call(['make', '-j%d' % multiprocessing.cpu_count(),
+ 'package'])
+ # Extract library and move necessary files to target_dir. We ignore the ICD
+ # file because it's generated on the bot after we know the path to the CIPD
+ # package.
+ subprocess.check_call(['dpkg-deb', '--extract',
+ 'intel-opencl-1.0-0.x86_64-igdrcl.deb', build_dir])
+ lib_dir = os.path.join(build_dir, 'usr', 'local', 'lib')
+ for f in os.listdir(lib_dir):
+ shutil.move(os.path.join(lib_dir, f), target_dir)
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--target_dir', '-t', required=True)
+ args = parser.parse_args()
+ create_asset(args.target_dir)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/infra/bots/assets/opencl_intel_neo_linux/create_and_upload.py b/infra/bots/assets/opencl_intel_neo_linux/create_and_upload.py
new file mode 100755
index 0000000000..de56a80fa8
--- /dev/null
+++ b/infra/bots/assets/opencl_intel_neo_linux/create_and_upload.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+#
+# Copyright 2017 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+"""Create the asset and upload it."""
+
+
+import argparse
+import common
+import os
+import subprocess
+import sys
+import utils
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--gsutil')
+ args = parser.parse_args()
+
+ with utils.tmp_dir():
+ cwd = os.getcwd()
+ create_script = os.path.join(common.FILE_DIR, 'create.py')
+ upload_script = os.path.join(common.FILE_DIR, 'upload.py')
+
+ try:
+ subprocess.check_call(['python', create_script, '-t', cwd])
+ cmd = ['python', upload_script, '-t', cwd]
+ if args.gsutil:
+ cmd.extend(['--gsutil', args.gsutil])
+ subprocess.check_call(cmd)
+ except subprocess.CalledProcessError:
+ # Trap exceptions to avoid printing two stacktraces.
+ sys.exit(1)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/infra/bots/assets/opencl_intel_neo_linux/download.py b/infra/bots/assets/opencl_intel_neo_linux/download.py
new file mode 100755
index 0000000000..ca999e0378
--- /dev/null
+++ b/infra/bots/assets/opencl_intel_neo_linux/download.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#
+# Copyright 2017 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+"""Download the current version of the asset."""
+
+
+import common
+
+
+if __name__ == '__main__':
+ common.run('download')
diff --git a/infra/bots/assets/opencl_intel_neo_linux/upload.py b/infra/bots/assets/opencl_intel_neo_linux/upload.py
new file mode 100755
index 0000000000..bdfbda783e
--- /dev/null
+++ b/infra/bots/assets/opencl_intel_neo_linux/upload.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#
+# Copyright 2017 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+"""Upload a new version of the asset."""
+
+
+import common
+
+
+if __name__ == '__main__':
+ common.run('upload')
diff --git a/infra/bots/cfg.json b/infra/bots/cfg.json
index ca9442ef62..a4eb77ae76 100644
--- a/infra/bots/cfg.json
+++ b/infra/bots/cfg.json
@@ -8,6 +8,7 @@
"ASAN",
"Coverage",
"MSAN",
+ "OpenCL",
"TSAN",
"UBSAN",
"Valgrind",
diff --git a/infra/bots/gen_tasks.go b/infra/bots/gen_tasks.go
index dafd403720..53e68db2bd 100644
--- a/infra/bots/gen_tasks.go
+++ b/infra/bots/gen_tasks.go
@@ -991,6 +991,10 @@ func test(b *specs.TasksCfgBuilder, name string, parts map[string]string, compil
recipe := "test"
if strings.Contains(name, "SKQP") {
recipe = "skqp_test"
+ } else if strings.Contains(name, "OpenCL") {
+ // TODO(dogben): Longer term we may not want this to be called a "Test" task, but until we start
+ // running hs_bench or kx, it will be easier to fit into the current job name schema.
+ recipe = "compute_test"
}
extraProps := map[string]string{}
iid := internalHardwareLabel(parts)
@@ -1291,6 +1295,12 @@ func process(b *specs.TasksCfgBuilder, name string) {
pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("linux_vulkan_intel_driver_debug"))
}
}
+ if strings.Contains(name, "OpenCL") {
+ pkgs = append(pkgs,
+ b.MustGetCipdPackageFromAsset("opencl_ocl_icd_linux"),
+ b.MustGetCipdPackageFromAsset("opencl_intel_neo_linux"),
+ )
+ }
}
if strings.Contains(name, "ProcDump") {
pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("procdump_win"))
diff --git a/infra/bots/jobs.json b/infra/bots/jobs.json
index 6d352868ca..d6a3b1977f 100644
--- a/infra/bots/jobs.json
+++ b/infra/bots/jobs.json
@@ -432,6 +432,7 @@
"Test-Debian9-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All",
"Test-Debian9-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan",
"Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All",
+ "Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL",
"Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan",
"Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Release-All",
"Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Release-All-Vulkan",
diff --git a/infra/bots/recipe_modules/flavor/default.py b/infra/bots/recipe_modules/flavor/default.py
index 7425bdaf06..b45f489bdf 100644
--- a/infra/bots/recipe_modules/flavor/default.py
+++ b/infra/bots/recipe_modules/flavor/default.py
@@ -175,6 +175,22 @@ class DefaultFlavor(object):
path.append(slave_dir.join('linux_vulkan_sdk', 'bin'))
ld_library_path.append(slave_dir.join('linux_vulkan_sdk', 'lib'))
+ if 'OpenCL' in extra_tokens:
+ ld_library_path.append(slave_dir.join('opencl_ocl_icd_linux'))
+ # TODO(dogben): Limit to the appropriate GPUs when we start running on
+ # GPUs other than IntelIris640.
+ # Skylake and later use the NEO driver.
+ neo_path = slave_dir.join('opencl_intel_neo_linux')
+ ld_library_path.append(neo_path)
+ # Generate vendors dir contaning the ICD file pointing to the NEO OpenCL
+ # library.
+ vendors_dir = self.m.vars.tmp_dir.join('OpenCL', 'vendors')
+ self.m.file.ensure_directory('mkdirs OpenCL/vendors', vendors_dir)
+ self.m.file.write_raw('write NEO OpenCL ICD',
+ vendors_dir.join('neo.icd'),
+ '%s\n' % neo_path.join('libigdrcl.so'))
+ env['OPENCL_VENDOR_PATH'] = vendors_dir
+
if 'SwiftShader' in extra_tokens:
ld_library_path.append(self.host_dirs.bin_dir.join('swiftshader_out'))
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json
new file mode 100644
index 0000000000..0f07c7a605
--- /dev/null
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json
@@ -0,0 +1,197 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "results_dir"
+ ],
+ "infra_step": true,
+ "name": "rmtree results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "results_dir"
+ ],
+ "infra_step": true,
+ "name": "makedirs results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "device_results_dir"
+ ],
+ "infra_step": true,
+ "name": "rmtree device_results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "device_results_dir"
+ ],
+ "infra_step": true,
+ "name": "makedirs device_results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "Get skp VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "42",
+ "[START_DIR]/tmp/SKP_VERSION"
+ ],
+ "infra_step": true,
+ "name": "write SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "Get skimage VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "42",
+ "[START_DIR]/tmp/SK_IMAGE_VERSION"
+ ],
+ "infra_step": true,
+ "name": "write SK_IMAGE_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "Get svg VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "42",
+ "[START_DIR]/tmp/SVG_VERSION"
+ ],
+ "infra_step": true,
+ "name": "write SVG_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[START_DIR]/tmp/OpenCL/vendors"
+ ],
+ "infra_step": true,
+ "name": "mkdirs OpenCL/vendors"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/opencl_intel_neo_linux/libigdrcl.so\n",
+ "[START_DIR]/tmp/OpenCL/vendors/neo.icd"
+ ],
+ "infra_step": true,
+ "name": "write NEO OpenCL ICD"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::flavor]/resources/symbolize_stack_trace.py",
+ "[START_DIR]",
+ "catchsegv",
+ "[START_DIR]/build/dm",
+ "--some-flag"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "LD_LIBRARY_PATH": "[START_DIR]/linux_vulkan_intel_driver_debug:[START_DIR]/opencl_ocl_icd_linux:[START_DIR]/opencl_intel_neo_linux",
+ "LIBGL_DRIVERS_PATH": "[START_DIR]/linux_vulkan_intel_driver_debug",
+ "OPENCL_VENDOR_PATH": "[START_DIR]/tmp/OpenCL/vendors",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "VK_ICD_FILENAMES": "[START_DIR]/linux_vulkan_intel_driver_debug/intel_icd.x86_64.json"
+ },
+ "name": "symbolized dm"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/flavor/examples/full.py b/infra/bots/recipe_modules/flavor/examples/full.py
index 254384b76a..3c7cd3dd51 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.py
+++ b/infra/bots/recipe_modules/flavor/examples/full.py
@@ -69,6 +69,7 @@ TEST_BUILDERS = [
'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Coverage',
'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-TSAN',
'Test-Debian9-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader',
+ 'Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL',
'Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan',
'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Debug-All-ASAN',
('Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All'
diff --git a/infra/bots/recipes/compute_test.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json b/infra/bots/recipes/compute_test.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json
new file mode 100644
index 0000000000..33a0fddce3
--- /dev/null
+++ b/infra/bots/recipes/compute_test.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL.json
@@ -0,0 +1,59 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[START_DIR]/tmp/OpenCL/vendors"
+ ],
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "mkdirs OpenCL/vendors"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/opencl_intel_neo_linux/libigdrcl.so\n",
+ "[START_DIR]/tmp/OpenCL/vendors/neo.icd"
+ ],
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "write NEO OpenCL ICD"
+ },
+ {
+ "cmd": [
+ "catchsegv",
+ "[START_DIR]/build/hello-opencl"
+ ],
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "LD_LIBRARY_PATH": "[START_DIR]/linux_vulkan_intel_driver_debug:[START_DIR]/opencl_ocl_icd_linux:[START_DIR]/opencl_intel_neo_linux",
+ "LIBGL_DRIVERS_PATH": "[START_DIR]/linux_vulkan_intel_driver_debug",
+ "OPENCL_VENDOR_PATH": "[START_DIR]/tmp/OpenCL/vendors",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "VK_ICD_FILENAMES": "[START_DIR]/linux_vulkan_intel_driver_debug/intel_icd.x86_64.json"
+ },
+ "name": "hello-opencl"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/compute_test.py b/infra/bots/recipes/compute_test.py
new file mode 100644
index 0000000000..cbe1fd277a
--- /dev/null
+++ b/infra/bots/recipes/compute_test.py
@@ -0,0 +1,34 @@
+# Copyright 2018 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.
+
+# Recipe for Skia Swarming compute testing.
+
+DEPS = [
+ 'flavor',
+ 'recipe_engine/file',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'run',
+ 'vars',
+]
+
+def RunSteps(api):
+ api.vars.setup()
+ api.flavor.setup()
+
+ api.run(api.flavor.step, 'hello-opencl', cmd=['hello-opencl'])
+
+ api.run.check_failure()
+
+def GenTests(api):
+ builder = ('Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All'
+ '-OpenCL')
+ yield (
+ api.test(builder) +
+ api.properties(buildername=builder,
+ buildbucket_build_id='123454321',
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]')
+ )
diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json
index a5de00c1e3..01a496a229 100644
--- a/infra/bots/tasks.json
+++ b/infra/bots/tasks.json
@@ -2610,6 +2610,12 @@
"Upload-Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All"
]
},
+ "Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL": {
+ "priority": 0.8,
+ "tasks": [
+ "Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL"
+ ]
+ },
"Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan": {
"priority": 0.8,
"tasks": [
@@ -53660,6 +53666,133 @@
],
"priority": 0.8
},
+ "Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL": {
+ "caches": [
+ {
+ "name": "vpython",
+ "path": "cache/vpython"
+ }
+ ],
+ "cipd_packages": [
+ {
+ "name": "infra/tools/luci/kitchen/${platform}",
+ "path": ".",
+ "version": "git_revision:546aae39f1fb9dce9add528e2011afa574535ecd"
+ },
+ {
+ "name": "infra/tools/luci-auth/${platform}",
+ "path": "cipd_bin_packages",
+ "version": "git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c"
+ },
+ {
+ "name": "infra/tools/luci/vpython/${platform}",
+ "path": "cipd_bin_packages",
+ "version": "git_revision:ad60019cb66a75b59991d43b95a43f68e3fff81b"
+ },
+ {
+ "name": "skia/bots/skimage",
+ "path": "skimage",
+ "version": "version:34"
+ },
+ {
+ "name": "skia/bots/skp",
+ "path": "skp",
+ "version": "version:132"
+ },
+ {
+ "name": "skia/bots/svg",
+ "path": "svg",
+ "version": "version:9"
+ },
+ {
+ "name": "skia/bots/linux_vulkan_intel_driver_debug",
+ "path": "linux_vulkan_intel_driver_debug",
+ "version": "version:4"
+ },
+ {
+ "name": "skia/bots/opencl_ocl_icd_linux",
+ "path": "opencl_ocl_icd_linux",
+ "version": "version:0"
+ },
+ {
+ "name": "skia/bots/opencl_intel_neo_linux",
+ "path": "opencl_intel_neo_linux",
+ "version": "version:1"
+ }
+ ],
+ "command": [
+ "./kitchen${EXECUTABLE_SUFFIX}",
+ "cook",
+ "-checkout-dir",
+ "recipe_bundle",
+ "-mode",
+ "swarming",
+ "-luci-system-account",
+ "system",
+ "-cache-dir",
+ "cache",
+ "-temp-dir",
+ "tmp",
+ "-known-gerrit-host",
+ "android.googlesource.com",
+ "-known-gerrit-host",
+ "boringssl.googlesource.com",
+ "-known-gerrit-host",
+ "chromium.googlesource.com",
+ "-known-gerrit-host",
+ "dart.googlesource.com",
+ "-known-gerrit-host",
+ "fuchsia.googlesource.com",
+ "-known-gerrit-host",
+ "go.googlesource.com",
+ "-known-gerrit-host",
+ "llvm.googlesource.com",
+ "-known-gerrit-host",
+ "skia.googlesource.com",
+ "-known-gerrit-host",
+ "webrtc.googlesource.com",
+ "-output-result-json",
+ "${ISOLATED_OUTDIR}/build_result_filename",
+ "-workdir",
+ ".",
+ "-recipe",
+ "compute_test",
+ "-properties",
+ "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-OpenCL\",\"patch_issue\":\"<(ISSUE)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"test\"}",
+ "-logdog-annotation-url",
+ "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
+ ],
+ "dependencies": [
+ "Housekeeper-PerCommit-BundleRecipes",
+ "Build-Debian9-Clang-x86_64-Debug-OpenCL"
+ ],
+ "dimensions": [
+ "gpu:8086:5926",
+ "os:Debian-9.4",
+ "pool:Skia"
+ ],
+ "env_prefixes": {
+ "PATH": [
+ "cipd_bin_packages",
+ "cipd_bin_packages/bin"
+ ],
+ "VPYTHON_VIRTUALENV_ROOT": [
+ "${cache_dir}/vpython"
+ ]
+ },
+ "execution_timeout_ns": 14400000000000,
+ "expiration_ns": 72000000000000,
+ "extra_tags": {
+ "log_location": "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
+ },
+ "io_timeout_ns": 14400000000000,
+ "isolate": "test_skia_bundled.isolate",
+ "max_attempts": 1,
+ "outputs": [
+ "test"
+ ],
+ "priority": 0.8
+ },
"Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan": {
"caches": [
{