AnyPS5/core
XairRrR 94cffec3a7 perf(agc-driver): prepare shader ABI variants before taking the preparation lock
A shader preparation transaction took the global writers lock when it
was constructed and kept it to its end. ResolveShaderAbi, reached from
sceAgcCreateInterpolantMapping and sceAgcLinkShaders, compiled its
variants inside such a transaction, so every game thread creating or
linking shaders waited behind one compile: Uncharted's stalled frames
spent about half a second each in shader registration.

The root transaction now takes the lock on its first Read, Edit or
Hold. ResolveShaderAbi prepares the variants before reading the
prepared state when its ABI was not committed yet. Registry
publication holds the lock as before: PublishRegisteredShader holds
it, and RegisterShader holds it before the driver mutex, so the lock
order is unchanged. Commit takes no lock: a transaction with changes
already holds it.
2026-10-11 14:54:48 +02:00
..
Decoder fix(png): bound transparency chunk detection to the input 2026-10-10 09:28:30 +08:00
libs perf(agc-driver): prepare shader ABI variants before taking the preparation lock 2026-10-11 14:54:48 +02:00
relinker Merge pull request #3495 from Lorkydey/fix/relinker-registry-input-preservation 2026-10-11 13:56:53 +02:00
shader/recompiler Merge pull request #3441 from MarcZX100/codex/fold-unordered-infinity-compares-3355 2026-10-11 13:55:17 +02:00