Files
UniXNU/scripts/save-turnip-builtin-patch.py
T
rpone 6c56ecec19 feat(gpu): import the native Adreno and Metal stack
Bring the current NativeAdreno, NativeMetal, AdrenoFirmware, AdrenoPM4,
AirNir and ArmSmmu4K sources, the Mesa pipeline-cache and builtin-shader
patches, and the Turnip host cache tools.
2026-10-20 18:08:40 +08:00

39 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""Record only the builtin-cache change over the other pinned Mesa patches."""
import json
from pathlib import Path
import shutil
import subprocess
import tempfile
ROOT = Path(__file__).resolve().parents[1]
MESA = ROOT / '.cache/mesa-work'
OUT = ROOT / 'patches/mesa/turnip-builtin-shader-pack.patch'
FILES = ['meson.options', 'src/freedreno/vulkan/meson.build', 'src/freedreno/vulkan/tu_device.cc',
'src/freedreno/vulkan/tu_device.h', 'src/freedreno/vulkan/tu_shader.cc',
'src/freedreno/vulkan/tu_clear_blit.cc']
NEW = ['src/freedreno/vulkan/tu_builtin_cache.cc', 'src/freedreno/vulkan/tu_builtin_cache.h']
def git(directory, *args):
return subprocess.check_output(['git', '-c', 'user.email=a@b', '-c', 'user.name=n', *args], cwd=directory)
with tempfile.TemporaryDirectory(dir=ROOT / '.cache', prefix='builtin-patch-') as name:
tmp = Path(name)
git(tmp, 'init', '-q')
for path in FILES:
(tmp / path).parent.mkdir(parents=True, exist_ok=True)
(tmp / path).write_bytes(git(MESA, 'show', 'HEAD:' + path))
for patch in json.loads((ROOT / 'scripts/data/adreno-compiler-inputs.json').read_text())['patches']:
if patch != str(OUT.relative_to(ROOT)):
git(tmp, 'apply', *['--include=' + path for path in FILES], str(ROOT / patch))
git(tmp, 'add', '-A')
git(tmp, 'commit', '-q', '-m', 'recorded-base')
for path in FILES + NEW:
(tmp / path).parent.mkdir(parents=True, exist_ok=True)
shutil.copyfile(MESA / path, tmp / path)
git(tmp, 'add', '-N', *NEW)
OUT.write_bytes(git(tmp, 'diff', '--binary'))
print('Recorded builtin-cache source patch')