[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