Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Unified Diff: tools/test_gpuveto.py

Issue 257723003: First version of gpuveto testing script (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: added new line Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/test_gpuveto.py
===================================================================
--- tools/test_gpuveto.py (revision 0)
+++ tools/test_gpuveto.py (revision 0)
@@ -0,0 +1,147 @@
+#!/usr/bin/env python
+
+# Copyright 2014 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Script to test out suitableForGpuRasterization (via gpuveto)"""
+
+import argparse
+import glob
+import os
+import re
+import subprocess
+import sys
+
+# Set the PYTHONPATH to include the tools directory.
+sys.path.append(
+ os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir))
+import find_run_binary
+
+def list_files(dir_or_file):
+ """Returns a list of all the files from the provided argument
+
+ @param dir_or_file: either a directory or skp file
+
+ @returns a list containing the files in the directory or a single file
+ """
+ files = []
+ for globbedpath in glob.iglob(dir_or_file): # useful on win32
+ if os.path.isdir(globbedpath):
+ for filename in os.listdir(globbedpath):
+ newpath = os.path.join(globbedpath, filename)
+ if os.path.isfile(newpath):
+ files.append(newpath)
+ elif os.path.isfile(globbedpath):
+ files.append(globbedpath)
+ return files
+
+
+def execute_program(args):
+ """Executes a process and waits for it to complete.
+
+ @param args: is passed into subprocess.Popen().
+
+ @returns a tuple of the process output (returncode, output)
+ """
+ proc = subprocess.Popen(args, stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
+ output, _ = proc.communicate()
+ errcode = proc.returncode
+ return (errcode, output)
+
+
+class GpuVeto(object):
+
+ def __init__(self):
+ self.bench_pictures = find_run_binary.find_path_to_program(
+ 'bench_pictures')
+ self.gpuveto = find_run_binary.find_path_to_program('gpuveto')
+ assert os.path.isfile(self.bench_pictures)
+ assert os.path.isfile(self.gpuveto)
+ self.truePositives = 0
+ self.falsePositives = 0
+ self.trueNegatives = 0
+ self.falseNegatives = 0
+
+ def process_skps(self, dir_or_file):
+ for skp in enumerate(dir_or_file):
+ self.process_skp(skp[1])
+
+ sys.stdout.write('TP %d FP %d TN %d FN %d\n' % (self.truePositives,
+ self.falsePositives,
+ self.trueNegatives,
+ self.falseNegatives))
+
+
+ def process_skp(self, skp_file):
+ assert os.path.isfile(skp_file)
+
+ # run gpuveto on the skp
+ args = [self.gpuveto, '-r', skp_file]
+ returncode, output = execute_program(args)
+ if (returncode != 0):
+ return
+
+ if ('unsuitable' in output):
+ suitable = False
+ else:
+ assert 'suitable' in output
+ suitable = True
+
+ # run raster config
+ args = [self.bench_pictures, '-r', skp_file,
+ '--repeat', '20',
+ '--config', '8888']
+ returncode, output = execute_program(args)
+ if (returncode != 0):
+ return
+
+ matches = re.findall('[\d.]+', output)
+ if len(matches) != 4:
+ return
+
+ rasterTime = float(matches[3])
+
+ # run gpu config
+ args2 = [self.bench_pictures, '-r', skp_file,
+ '--repeat', '20',
+ '--config', 'gpu']
+ returncode, output = execute_program(args2)
+ if (returncode != 0):
+ return
+
+ matches = re.findall('[\d.]+', output)
+ if len(matches) != 4:
+ return
+
+ gpuTime = float(matches[3])
+
+ sys.stdout.write('%s: gpuveto: %d raster %.2f gpu: %.2f\n' % (
+ skp_file, suitable, rasterTime, gpuTime))
+
+ if suitable:
+ if gpuTime < rasterTime:
+ self.truePositives += 1
+ else:
+ self.falsePositives += 1
+ else:
+ if gpuTime < rasterTime:
+ self.falseNegatives += 1
+ else:
+ self.trueNegatives += 1
+
+
+def main(main_argv):
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--skp_path',
+ help='Path to the SKP(s). Can either be a directory ' \
+ 'containing SKPs or a single SKP.',
+ required=True)
+
+ args = parser.parse_args()
+ GpuVeto().process_skps(list_files(args.skp_path))
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1]))
Property changes on: tools\test_gpuveto.py
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698