-class TestCase:
+class AppDriver(Driver):
cmd = None
cwd = None
threshold_precision = 12.0
def __init__(self):
+ Driver.__init__(self)
self.stateCache = {}
def runApp(self):
p = popen(self.cmd, cwd=self.cwd)
p.wait()
- if p.returncode:
+ if p.returncode != 0:
skip('application returned code %i' % p.returncode)
- api_map = {
+ api_trace_map = {
'gl': 'gl',
'egl_gl': 'egl',
'egl_gles1': 'egl',
'egl_gles2': 'egl',
+ 'd3d7': 'd3d7',
+ 'd3d8': 'd3d8',
+ 'd3d9': 'd3d9',
+ 'd3d10': 'd3d10',
+ 'd3d10_1': 'd3d10_1',
+ 'd3d11': 'd3d11',
+ 'd3d11_1': 'd3d11',
+ }
+
+ api_retrace_map = {
+ 'gl': 'glretrace',
+ 'egl_gl': 'eglretrace',
+ 'egl_gles1': 'eglretrace',
+ 'egl_gles2': 'eglretrace',
+ #'d3d8': 'd3dretrace',
+ 'd3d9': 'd3dretrace',
+ 'd3d10': 'd3dretrace',
+ 'd3d10_1': 'd3dretrace',
+ 'd3d11': 'd3dretrace',
+ 'd3d11_1': 'd3dretrace',
}
def traceApp(self):
cmd = [
options.apitrace, 'trace',
- '--api', self.api_map[self.api],
+ '--api', self.api_trace_map[self.api],
'--output', self.trace_file,
'--'
] + cmd
p = popen(cmd, env=env, cwd=self.cwd)
p.wait()
+ if p.returncode != 0:
+ fail('`apitrace trace` returned code %i' % p.returncode)
if not os.path.exists(self.trace_file):
fail('no trace file generated\n')
self.doubleBuffer = checker.doubleBuffer
+ if self.api not in self.api_retrace_map:
+ return
+
for callNo, refImageFileName in checker.images:
self.checkImage(callNo, refImageFileName)
for callNo, refStateFileName in checker.states:
open(filename, 'wt').write(s)
def retrace(self):
+ if self.api not in self.api_retrace_map:
+ return
+
p = self._retrace()
p.wait()
if p.returncode != 0:
except KeyError:
return
- # On NVIDIA drivers glGetIntegerv(GL_INDEX_WRITEMASK) returns -1
+ # On NVIDIA drivers glGetIntegerv(GL_INDEX_WRITEMASK) returns 255
self.replaceState(parameters, 'GL_INDEX_WRITEMASK', 255, -1)
- # On Gallium
- if 'Gallium' in parameters['GL_RENDERER'].split():
- # Gallium drivers have wrong defaults for draw/read buffer state
- self.replaceState(parameters, 'GL_DRAW_BUFFER', 'GL_BACK_LEFT', 'GL_BACK')
- self.replaceState(parameters, 'GL_DRAW_BUFFER0', 'GL_BACK_LEFT', 'GL_BACK')
- self.replaceState(parameters, 'GL_READ_BUFFER', 'GL_BACK_LEFT', 'GL_BACK')
- self.replaceState(parameters, 'GL_DRAW_BUFFER', 'GL_FRONT_LEFT', 'GL_FRONT')
- self.replaceState(parameters, 'GL_DRAW_BUFFER0', 'GL_FRONT_LEFT', 'GL_FRONT')
- self.replaceState(parameters, 'GL_READ_BUFFER', 'GL_FRONT_LEFT', 'GL_FRONT')
-
def adjustRefState(self, state):
# Do some adjustments on reference state to eliminate failures from
# bugs/issues outside of apitrace
pass
def _retrace(self, args = None, stdout=subprocess.PIPE):
- retrace = self.api_map[self.api] + 'retrace'
- cmd = [get_build_program(retrace)]
+ retrace = self.api_retrace_map[self.api]
+ #cmd = [get_build_program(retrace)]
+ cmd = [options.apitrace, 'retrace']
if self.doubleBuffer:
cmd += ['-db']
else:
cmd += [self.trace_file]
return popen(cmd, stdout=stdout)
- def run(self):
- self.runApp()
- self.traceApp()
- self.checkTrace()
- self.retrace()
-
- pass_()
-
-
-class AppMain(Main):
-
def createOptParser(self):
- optparser = Main.createOptParser(self)
+ optparser = Driver.createOptParser(self)
optparser.add_option(
'-a', '--api', metavar='API',
return optparser
- def main(self):
+ def run(self):
global options
(options, args) = self.parseOptions()
if not os.path.exists(options.results):
os.makedirs(options.results)
- test = TestCase()
- test.verbose = options.verbose
+ self.verbose = options.verbose
- test.cmd = args
- test.cwd = options.cwd
- test.api = options.api
- test.ref_dump = options.ref_dump
- test.results = options.results
+ self.cmd = args
+ self.cwd = options.cwd
+ self.api = options.api
+ self.ref_dump = options.ref_dump
+ self.results = options.results
- test.run()
+ self.runApp()
+ self.traceApp()
+ self.checkTrace()
+ self.retrace()
+ pass_()
if __name__ == '__main__':
- AppMain().main()
+ AppDriver().run()