[Piglit] [PATCH] tests/sanity: Rework sanity to be more useful

Dylan Baker dylan at pnwbakers.com
Tue Jul 3 17:24:27 UTC 2018


Originally sanity was billed as a sort of "check if the installation
works" sort of profile. No one seems to use sanity at all, so we'd like
to re-purpose it (a little) to be a sort of "driver sanity" check, in
other words, a minimal number of tests that are able to touch a broad
swath of OpenGL features.

Some of the things this touches now:
 - vertex shaders
 - fragment shaders
 - geometry shaders
 - tesselation shaders
 - compute shaders
 - transform feedback
 - ssbos
 - atomics
---
 tests/sanity.py | 66 +++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 61 insertions(+), 5 deletions(-)

cc: jordan.l.justen at intel.com

diff --git a/tests/sanity.py b/tests/sanity.py
index cb66bd33c..13f7859fb 100644
--- a/tests/sanity.py
+++ b/tests/sanity.py
@@ -1,20 +1,76 @@
-#
-# Minimal tests to check whether the installation is working
-#
+# Copyright © 2018 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.
+
+"""A minimal profile that aims to touch test most major OpenGL features with as
+few tests as possible.
+
+This is largely aimed at bring up of a new driver or a driver on new hardware,
+where performance and stability are not necessarily the best. The idea is to
+touch the main functionality of important features without running for too
+long. This *will* miss many corner cases, that's okay. For more stable
+hardware or software stacks the "gpu" or "quick" profiles are probably more
+appropriate.
+"""
 
 from __future__ import (
     absolute_import, division, print_function, unicode_literals
 )
+import os
 
 from framework import grouptools
 from framework.profile import TestProfile
 from framework.test import PiglitGLTest
+from framework.test.shader_test import ShaderTest
+from .py_modules.constants import GENERATED_TESTS_DIR, TESTS_DIR
 
 __all__ = ['profile']
 
+basepath = os.path.normpath(os.path.join(TESTS_DIR, '..'))
+gen_basepath = os.path.relpath(os.path.join(GENERATED_TESTS_DIR, '..'), basepath)
+
+
+def add_shader_test(shader):
+    """Given an adder, creates a group and adds a shader test."""
+    abs_path = os.path.abspath(shader)
+    if os.path.commonprefix([abs_path, GENERATED_TESTS_DIR]) == GENERATED_TESTS_DIR:
+        installpath = os.path.relpath(shader, gen_basepath)
+    else:
+        installpath = None
+
+    dirpath = os.path.dirname(shader)
+    groupname = grouptools.from_path(os.path.relpath(
+        dirpath, GENERATED_TESTS_DIR if installpath else TESTS_DIR))
+    testname = os.path.splitext(os.path.basename(shader))[0]
+
+    profile.test_list[grouptools.join(groupname, testname)] = \
+        ShaderTest.new(shader, installpath)
+
+
 profile = TestProfile()
 
+add_shader_test('tests/shaders/glsl-algebraic-add-zero.shader_test')
+add_shader_test('tests/spec/glsl-1.50/execution/geometry-basic.shader_test')
+add_shader_test('tests/spec/arb_tessellation_shader/execution/sanity.shader_test')
+add_shader_test('tests/spec/arb_compute_shader/execution/basic-ssbo.shader_test')
+
 with profile.test_list.group_manager(
         PiglitGLTest,
-        grouptools.join('spec', '!OpenGL 1.0')) as g:
-    g(['gl-1.0-readpixsanity'], run_concurrent=True)
+        grouptools.join('spec', 'glsl-1.50')) as g:
+    g(['glsl-1.50-transform-feedback-builtins'], 'transform-feedback-builtins')
-- 
2.18.0



More information about the Piglit mailing list