X-Git-Url: https://git.cworth.org/git?p=apitrace-tests;a=blobdiff_plain;f=app_driver.py;h=cb5f229e651ebfde69e68d4aff27bd83cbe72043;hp=33d2d5e65dccfa09326a92ecf00c232242400eca;hb=660ae172b47404abb185e2ab74deac02cda7260e;hpb=1017d793714f4d3d2fe2b4d29e1eaf564d5db855 diff --git a/app_driver.py b/app_driver.py index 33d2d5e..cb5f229 100755 --- a/app_driver.py +++ b/app_driver.py @@ -167,14 +167,34 @@ class AppDriver(Driver): 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): @@ -202,7 +222,7 @@ class AppDriver(Driver): cmd = [ options.apitrace, 'trace', - '--api', self.api_map[self.api], + '--api', self.api_trace_map[self.api], '--output', self.trace_file, '--' ] + cmd @@ -211,6 +231,8 @@ class AppDriver(Driver): 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') @@ -227,6 +249,9 @@ class AppDriver(Driver): 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: @@ -293,6 +318,9 @@ class AppDriver(Driver): 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: @@ -352,19 +380,9 @@ class AppDriver(Driver): 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 @@ -395,7 +413,7 @@ class AppDriver(Driver): pass def _retrace(self, args = None, stdout=subprocess.PIPE): - retrace = self.api_map[self.api] + 'retrace' + retrace = self.api_retrace_map[self.api] cmd = [get_build_program(retrace)] if self.doubleBuffer: cmd += ['-db']