1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2019 The Chromium Authors. All rights reserved. 2*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file. 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Worker 6*c8dee2aaSAndroid Build Coastguard Workerfrom __future__ import print_function 7*c8dee2aaSAndroid Build Coastguard Workerimport json 8*c8dee2aaSAndroid Build Coastguard Workerimport os 9*c8dee2aaSAndroid Build Coastguard Workerimport subprocess 10*c8dee2aaSAndroid Build Coastguard Workerimport sys 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Workerif len(sys.argv) != 3: 14*c8dee2aaSAndroid Build Coastguard Worker print(sys.argv[0], ' <compiler> <folder>') 15*c8dee2aaSAndroid Build Coastguard Worker sys.exit(1) 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Workercompiler = sys.argv[1] 18*c8dee2aaSAndroid Build Coastguard Workerfolder = sys.argv[2] 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Workerstats = {} 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Workerfor filename in os.listdir(folder): 23*c8dee2aaSAndroid Build Coastguard Worker basename, ext = os.path.splitext(filename) 24*c8dee2aaSAndroid Build Coastguard Worker if ext not in ['.frag', '.spv']: 25*c8dee2aaSAndroid Build Coastguard Worker continue 26*c8dee2aaSAndroid Build Coastguard Worker cmdline = [compiler] 27*c8dee2aaSAndroid Build Coastguard Worker if ext == '.spv': 28*c8dee2aaSAndroid Build Coastguard Worker cmdline.extend(['-f', '-p']) 29*c8dee2aaSAndroid Build Coastguard Worker cmdline.append(os.path.join(folder, filename)) 30*c8dee2aaSAndroid Build Coastguard Worker try: 31*c8dee2aaSAndroid Build Coastguard Worker output = subprocess.check_output(cmdline) 32*c8dee2aaSAndroid Build Coastguard Worker except subprocess.CalledProcessError: 33*c8dee2aaSAndroid Build Coastguard Worker continue 34*c8dee2aaSAndroid Build Coastguard Worker stats.setdefault(basename, {}) 35*c8dee2aaSAndroid Build Coastguard Worker for line in output.splitlines(): 36*c8dee2aaSAndroid Build Coastguard Worker if line.startswith('Instructions Emitted'): 37*c8dee2aaSAndroid Build Coastguard Worker inst = line.split(':')[1].split() 38*c8dee2aaSAndroid Build Coastguard Worker stats[basename][ext] = inst 39*c8dee2aaSAndroid Build Coastguard Worker 40*c8dee2aaSAndroid Build Coastguard Workerfor k, v in stats.iteritems(): 41*c8dee2aaSAndroid Build Coastguard Worker gl = v.get('.frag', ['', '', '']) 42*c8dee2aaSAndroid Build Coastguard Worker vk = v.get('.spv', ['', '', '']) 43*c8dee2aaSAndroid Build Coastguard Worker print('{0},{1},{2},{3},{4},{5},{6}'.format( 44*c8dee2aaSAndroid Build Coastguard Worker k, gl[0], gl[1], gl[2], vk[0], vk[1], vk[2])) 45