framework: gl es tests are wrongly skipped at TestSkip
STEPS TO REPRODUCE
Assuming a driver (like i965 for coffe-lake) that supports gles3, a test like this is passing:
$./bin/shader_runner_gles3 tests/spec/glsl-es-3.00/execution/varying-struct-interpolation.shader_test -auto
PIGLIT: {"result": "pass" }
But if we try to execute it through piglit run we get them skipped:
./piglit run tests/shader.py -t varying-struct-interpolation ../piglit_results/20190502-one-test/
[1/1] skip: 1
TRIAGGING
After some investigation, the test is skipped at base.py, when doing a previous skip-check before calling shader_runner:
try: self.is_skip() except TestIsSkip as e: self.result.result = status.SKIP for each in six.iterkeys(self.result.subtests): self.result.subtests[each] = status.SKIP self.result.out = e.reason self.result.returncode = None return
After passing for some classes, a TestIsSkip exception is raised at opengl.py FastSkip class. This one checks the required glsl es version, with the one returned by wflinfo.
If we take a look to wflinfo glsl-es_version, we found a worrying comment:
# GLSL ES version numbering is insane. # For version >= 3 the numbers are 3.00, 3.10, etc. # For version 2, they are 1.0.xx
The worrying part is that if we call wflinfo on the terminal using api=gles3 we get version 1.30 or 1.40 (depends on the systems I tried). Based on that comment, thats wrong.
WORKAROUNDS
Locally I found two workarounds:
- As the glsl-es version is broken, remove the glsl-es check from opengl.py
- Remove wflinfo from my system (but that removes the other checks).
I would be willing to try to work on a real fix, but I would appreciate some guidance. I suspect that the problem is on wflinfo, but perhaps it is just how it is called on the piglit framework. But I don't have too much experience with it.