# Copyright 2019 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. from __future__ import print_function import json import os import subprocess import sys if len(sys.argv) != 3: print(sys.argv[0], ' ') sys.exit(1) compiler = sys.argv[1] folder = sys.argv[2] stats = {} for filename in os.listdir(folder): basename, ext = os.path.splitext(filename) if ext not in ['.frag', '.spv']: continue cmdline = [compiler] if ext == '.spv': cmdline.extend(['-f', '-p']) cmdline.append(os.path.join(folder, filename)) try: output = subprocess.check_output(cmdline) except subprocess.CalledProcessError: continue stats.setdefault(basename, {}) for line in output.splitlines(): if line.startswith('Instructions Emitted'): inst = line.split(':')[1].split() stats[basename][ext] = inst for k, v in stats.iteritems(): gl = v.get('.frag', ['', '', '']) vk = v.get('.spv', ['', '', '']) print('{0},{1},{2},{3},{4},{5},{6}'.format( k, gl[0], gl[1], gl[2], vk[0], vk[1], vk[2]))