1*d83cc019SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*d83cc019SAndroid Build Coastguard Workerimport struct 3*d83cc019SAndroid Build Coastguard Workerimport sys 4*d83cc019SAndroid Build Coastguard Workerimport argparse 5*d83cc019SAndroid Build Coastguard Worker 6*d83cc019SAndroid Build Coastguard Workerparser=argparse.ArgumentParser( 7*d83cc019SAndroid Build Coastguard Worker description='''Script for converting shaders from binary to hex ''' ) 8*d83cc019SAndroid Build Coastguard Workerparser = argparse.ArgumentParser(prog='converter.py', usage='%(prog)s binary_file') 9*d83cc019SAndroid Build Coastguard Workerparser.add_argument('binary', nargs=1, help='binary_file') 10*d83cc019SAndroid Build Coastguard Workerargs=parser.parse_args() 11*d83cc019SAndroid Build Coastguard Worker 12*d83cc019SAndroid Build Coastguard Workerprint "static const uint32_t kernel[][4] = {" 13*d83cc019SAndroid Build Coastguard Workerwith open(sys.argv[1], 'r') as f: 14*d83cc019SAndroid Build Coastguard Worker fmt = '<LLLL' 15*d83cc019SAndroid Build Coastguard Worker step = struct.calcsize(fmt) 16*d83cc019SAndroid Build Coastguard Worker while True: 17*d83cc019SAndroid Build Coastguard Worker buf = f.read(step) 18*d83cc019SAndroid Build Coastguard Worker if not buf: 19*d83cc019SAndroid Build Coastguard Worker break 20*d83cc019SAndroid Build Coastguard Worker elif len(buf) < step: 21*d83cc019SAndroid Build Coastguard Worker buf += '\x00' * (step - len(buf)) 22*d83cc019SAndroid Build Coastguard Worker 23*d83cc019SAndroid Build Coastguard Worker val = struct.unpack('<LLLL', buf) 24*d83cc019SAndroid Build Coastguard Worker print "\t{{ 0x{:08x}, 0x{:08x}, 0x{:08x}, 0x{:08x} }},".format(*val) 25*d83cc019SAndroid Build Coastguard Worker 26*d83cc019SAndroid Build Coastguard Workerprint "};" 27