[Piglit] Nearly finished: shader_runner running THOUSANDS of tests per process

Marek Olšák maraeo at gmail.com
Sat Apr 16 22:16:34 UTC 2016


This makes shader_runner very fast. The expected result is 40%
decrease in quick.py running time, or a 12x faster piglit run if you
run shader tests alone.



1) Any number of test files can be specified as command-line
parameters. Those command lines can be insanely long.

2) shader_runner can re-create the window & GL context if test
requirements demand different settings when going from one test to

3) all.py generates one shader_runner instance per group of tests
(usually one or two directories - tests and generated_tests).
Individual tests are reported as subtests.

The shader_runner part is done. The python part needs more work.

What's missing:

Handling of crashes. If shader_runner crashes:
- The crash is not shown in piglit results (other tests with subtests
already have the same behavior)
- The remaining tests will not be run.

The ShaderTest python class has the list of all files and should be
able to catch a crash, check how many test results have been written,
and restart shader_runner with the remaining tests.

shader_runner prints TEST %i: and then the subtest result. %i is the
i-th file in the list. Python can parse that and re-run shader_runner
with the first %i tests removed. (0..%i-1 -> parse subtest results; %i
-> crash; %i+1.. -> run again)

I'm by no means a python expert, so here's an alternative solution (for me):
- Catch crash signals in shader_runner.
- In the single handler, re-run shader_runner with the remaining tests.

Opinions welcome,


More information about the Piglit mailing list