File: gen-shader-header.py

package info (click to toggle)
libcamera 0.7.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,488 kB
  • sloc: cpp: 85,656; python: 18,099; ansic: 12,763; sh: 1,309; makefile: 60
file content (37 lines) | stat: -rwxr-xr-x 971 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2025, Bryan O'Donoghue.
#
# Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
#
# A Python script which takes a list of shader files and converts each of them
# into a C header.
#
import sys

try:
    with open(sys.argv[2], "rb") as file:
        data = file.read()
        data_len = len(data)

        name = sys.argv[1].replace(".", "_")
        name_len = name + "_len"

        j = 0
        print("unsigned char const", name, "[] = {")
        for ch in data:
            print(f"0x{ch:02x}, ", end="")
            j = (j + 1) % 16
            if j == 0:
                print()
        if j != 0:
            print()
        print("};")

        print()
        print(f"const unsigned int {name_len}={data_len};")

except FileNotFoundError:
    print(f"File {sys.argv[2]} not found", file=sys.stderr)
except IOError:
    print(f"Unable to read {sys.argv[2]}", file=sys.stderr)