xref: /aosp_15_r20/external/igt-gpu-tools/lib/i915/shaders/converter.py (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
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