[Piglit] [PATCH] tests: Add integration for khronos CTS runner.

Dylan Baker baker.dylan.c at gmail.com
Mon Sep 28 15:04:42 PDT 2015


This adds support for running Khronos' deqp-based conformance suite with
piglit. This gives access to all of the powerful features of pigilt,
per-process tests, the junit and json backends, the summary tools, and
the familiar interface, with minimal fuss.

This is a very small change, since it is deqp-based, and piglit has a
framework for handling deqp based suites already.

cc: Mark Janes <mark.a.janes at intel.com>
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 piglit.conf.example | 10 +++++++++
 tests/cts.py        | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100644 tests/cts.py

diff --git a/piglit.conf.example b/piglit.conf.example
index e1f421c..0d85401 100644
--- a/piglit.conf.example
+++ b/piglit.conf.example
@@ -71,6 +71,16 @@ testB
 ; overrides the value set here.
 ;extra_args=--deqp-visibility hidden
 
+[cts]
+; path to the cts executable
+; can be overwritten by PIGILT_CTS_BIN environment variable
+;bin=/home/knuth/cts/cts/glcts
+
+; Space-separated list of extra command line arguments for cts. The
+; option is not required. The environment variable PIGLIT_CTS_EXTRA_ARGS
+; overrides the value set here.
+;extra_args=--deqp-visibility hidden
+
 ; Section for specific oclconform test.  One of these sections is required for
 ; each test list in the oclconform section and must be called:
 ; oclconform-$testname
diff --git a/tests/cts.py b/tests/cts.py
new file mode 100644
index 0000000..5669f88
--- /dev/null
+++ b/tests/cts.py
@@ -0,0 +1,63 @@
+# Copyright (c) 2015 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+"""Piglit integration for Khronos CTS tests.
+
+By default this will run GLES2, GLES3, GLES31, and GLESEXT test cases. Those
+desiring to run only a subset of them should consider using the -t or -x
+options to include or exclude tests.
+
+for example:
+./piglit run cts -c foo -t ES3- would run only ES3 tests (note the dash to
+exclude ES31 tests)
+
+"""
+
+from __future__ import absolute_import, division, print_function
+import itertools
+
+from framework.test import deqp
+
+__all__ = ['profile']
+
+_CTS_BIN = deqp.get_option('PIGLIT_CTS_BIN', ('cts', 'bin'))
+
+_EXTRA_ARGS = deqp.get_option('PIGLIT_CTS_EXTRA_ARGS', ('cts', 'extra_args'),
+                              default='').split()
+
+
+class DEQPCTSTest(deqp.DEQPBaseTest):
+    deqp_bin = _CTS_BIN
+    extra_args = [x for x in _EXTRA_ARGS if not x.startswith('--deqp-case')]
+
+
+profile = deqp.make_profile(  # pylint: disable=invalid-name
+    itertools.chain(
+        deqp.iter_deqp_test_cases(
+            deqp.gen_caselist_txt(_CTS_BIN, 'ES2-CTS-cases.txt', _EXTRA_ARGS)),
+        deqp.iter_deqp_test_cases(
+            deqp.gen_caselist_txt(_CTS_BIN, 'ES3-CTS-cases.txt', _EXTRA_ARGS)),
+        deqp.iter_deqp_test_cases(
+            deqp.gen_caselist_txt(_CTS_BIN, 'ES31-CTS-cases.txt', _EXTRA_ARGS)),
+        deqp.iter_deqp_test_cases(
+            deqp.gen_caselist_txt(_CTS_BIN, 'ESEXT-CTS-cases.txt',
+                                  _EXTRA_ARGS)),
+    ),
+    DEQPCTSTest)
-- 
2.5.3



More information about the Piglit mailing list