if p.returncode:
self.skip('application returned code %i' % p.returncode)
+ api_map = {
+ 'gl': 'gl',
+ 'egl_gl': 'egl',
+ 'egl_gles1': 'egl',
+ 'egl_gles2': 'egl',
+ }
+
def trace(self):
if self.trace_file is None:
self.trace_file = os.path.abspath(os.path.join(self.results, self.name + '.trace'))
apitrace = _get_build_program('apitrace')
cmd = [
apitrace, 'trace',
- '--api', self.api,
+ '--api', self.api_map[self.api],
'--output', self.trace_file,
'--'
] + cmd
ref_line = ref.readline().rstrip()
for line in p.stdout:
line = line.rstrip()
+ print line
mo = self.call_re.match(line)
- assert mo
if mo:
call_no = int(mo.group(1))
function_name = mo.group(2)
if function_name in ('glFlush', 'glFinish'):
flushes += 1
src_line = line[mo.start(2):]
- if ref_line:
- if src_line == ref_line:
- sys.stdout.write(src_line + '\n')
- ref_line = ref.readline().rstrip()
- src_lines = []
- else:
- src_lines.append(src_line)
+ else:
+ src_line = line
+ if ref_line:
+ if src_line == ref_line:
+ sys.stdout.write(src_line + '\n')
+ ref_line = ref.readline().rstrip()
+ src_lines = []
+ else:
+ src_lines.append(src_line)
p.wait()
if p.returncode != 0:
else:
self.fail('missing call %s' % ref_line)
+ def retrace(self):
+ retrace = self.api_map[self.api] + 'retrace'
+ args = [_get_build_path(retrace)]
+ args += [self.trace_file]
+ p = popen(args, stdout=subprocess.PIPE)
+ p.wait()
+ if p.returncode != 0:
+ self.fail('`%s` returned code %i' % (retrace, p.returncode))
+
def run(self):
self.standalone()
self.trace()
self.dump()
+ self.retrace()
self.pass_()
return
if not os.path.isfile(trace):
sys.stdout.write('SKIP (no trace)\n')
return
- args = [_get_build_path('glretrace')]
+
+ retrace = self.api_map[self.api] + 'retrace'
+ args = [_get_build_path(retrace)]
if swapbuffers:
args += ['-db']
frames = swapbuffers