mirror of
https://github.com/lucannez64/darling-lol.git
synced 2026-10-27 19:54:38 +00:00
Game process (ARAM Hexgate: 84 -> 127 FPS average, slowest stretches ~110): - Local pthread mutexes, condition variables and Mach semaphores are on by default in the game process only, with /tmp/rclol-no-local-* opt-outs. The main thread's darlingserver waits fell from 1.36 to 0.10 ms per frame. - Local semaphores: the count and the slot generation change in one compare-exchange, a destroy leaves a negative marker, the table is reset after fork, and names the table did not create go to the server. - Metal: drop identical re-binds (keyed on the Indium object, depth-stencil retained), pass blit resources by reference, and stop resetting vertex descriptors twice. - Core isolation of the main thread is opt-in (/tmp/rclol-core-isolation); it lowered FPS in its only match. - Optimized libc/libc++/Foundation overlays, AVX2 string primitives, real CPU topology and their installers and offline checks. Tools and docs: - tools/riot-match-capture: passive /proc sampler, user-space IP profiler and reports, plus a comparison against the game's netstats. - tools/riot-lsem-model and tools/riot-metal-bind-model: host models that extract the shipped code and check it. - tools/install-riot-metal-pair.sh installs Metal and Indium together. - Status, setup, testing and troubleshooting docs updated with the measured matches and the switch table; manifest file counts match the patches. Co-Authored-By: Claude Opus 5.5 <[email protected]>
21 lines
1.3 KiB
Python
21 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Rebuild changed IPC code into owned outputs, preserving configured objects."""
|
|
from pathlib import Path
|
|
import shlex,subprocess
|
|
project=Path(__file__).resolve().parent.parent
|
|
build=project/'build/darling-src/build/src/external/darlingserver'
|
|
flags={}
|
|
for line in (build/'CMakeFiles/darlingserver.dir/flags.make').read_text().splitlines():
|
|
if line.startswith('CXX_') and ' = ' in line:
|
|
k,v=line.split(' = ',1);flags[k]=shlex.split(v)
|
|
link=shlex.split((build/'CMakeFiles/darlingserver.dir/link.txt').read_text())
|
|
for name in ['call','message','darlingserver','process','server']:
|
|
obj=project/f'build/riot-server-{name}.o'
|
|
subprocess.run(['clang++',*flags['CXX_DEFINES'],*flags['CXX_INCLUDES'],*flags['CXX_FLAGS'],'-c',str(project/f'build/darling-src/src/external/darlingserver/src/{name}.cpp'),'-o',str(obj)],check=True)
|
|
link[link.index(f'CMakeFiles/darlingserver.dir/src/{name}.cpp.o')]=str(obj)
|
|
link[link.index('-o')+1]=str(project/'build/riot-darlingserver')
|
|
subprocess.run(link,cwd=build,check=True)
|
|
subprocess.run(['clang++',*flags['CXX_DEFINES'],*flags['CXX_INCLUDES'],*flags['CXX_FLAGS'],
|
|
'-D_GNU_SOURCE','-Wno-macro-redefined',str(project/'tools/riot-host-message-check.cpp'),
|
|
str(project/'build/riot-server-message.o'),'-o',str(project/'build/riot-host-message-check')],check=True)
|