skia2/tools/android/measure_fps.py
Chris Dalton 2d802ddba6 Simple script to measure SurfaceFlinger fps
Bug: skia:
Change-Id: I063c832f6d292e5e9f615c881e3325eb4ab9cdfa
Reviewed-on: https://skia-review.googlesource.com/44681
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
2017-09-14 20:55:21 +00:00

51 lines
1.3 KiB
Python

#!/usr/bin/env python
# Copyright 2017 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import optparse
import re
import subprocess
import time
def query_surfaceflinger_frame_count():
parcel = subprocess.Popen("adb shell service call SurfaceFlinger 1013",
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
shell=True).communicate()[0]
if not parcel:
raise Exception("FAILED: adb shell service call SurfaceFlinger 1013")
framecount = re.search("Result: Parcel\(([a-f0-9]+) ", parcel)
if not framecount:
raise Exception("Unexpected result from SurfaceFlinger: " + parcel)
return int(framecount.group(1), 16)
def main(interval):
startframe = query_surfaceflinger_frame_count()
starttime = time.time()
while True:
time.sleep(interval)
endframe = query_surfaceflinger_frame_count()
endtime = time.time()
fps = (endframe - startframe) / (endtime - starttime)
print "%.2f" % fps
startframe = endframe
starttime = endtime
if __name__ == '__main__':
parser = optparse.OptionParser()
parser.add_option("-i", "--interval", type="int", default="2",
help="Number of seconds to count frames.")
options, args = parser.parse_args()
main(options.interval)