if not os.path.exists(trace_dir):
os.makedirs(trace_dir)
+ cmd = self.args
env = os.environ.copy()
system = platform.system()
wrapper = _get_build_path('wrappers/opengl32.dll')
local_wrapper = os.path.join(os.path.dirname(self.args[0]), os.path.basename(wrapper))
shutil.copy(wrapper, local_wrapper)
- elif system == 'Darwin':
- wrapper = _get_build_path('wrappers/OpenGL')
- env['DYLD_LIBRARY_PATH'] = os.path.dirname(wrapper)
+ env['TRACE_FILE'] = self.trace_file
else:
- wrapper = _get_build_path('glxtrace.so')
- env['LD_PRELOAD'] = wrapper
-
- env['TRACE_FILE'] = self.trace_file
+ apitrace = _get_build_program('apitrace')
+ cmd = [
+ apitrace, 'trace',
+ '-o', self.trace_file,
+ '--'
+ ] + cmd
if self.max_frames is not None:
env['TRACE_FRAMES'] = str(self.max_frames)
try:
- p = popen(self.args, env=env, cwd=self.cwd)
+ p = popen(cmd, env=env, cwd=self.cwd)
p.wait()
finally:
if local_wrapper is not None:
def dump(self):
- cmd = [_get_build_program('tracedump'), '--color=never', self.trace_file]
+ cmd = [_get_build_program('apitrace'), 'dump', '--color=never', self.trace_file]
p = popen(cmd, stdout=subprocess.PIPE)
swapbuffers = 0
flushes = 0
ref_line = ''
+ src_lines = []
if self.ref_dump is not None:
ref = open(self.ref_dump, 'rt')
ref_line = ref.readline().rstrip()
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:
- self.fail('tracedump returned code %i' % p.returncode)
+ self.fail('`apitrace dump` returned code %i' % p.returncode)
if ref_line:
- self.fail('missing call %s' % ref_line)
+ if src_lines:
+ self.fail('missing call `%s` (found `%s`)' % (ref_line, src_lines[0]))
+ else:
+ self.fail('missing call %s' % ref_line)
def run(self):
self.standalone()