AnyPS5/core/libs/prx/libSceAgcDriver
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
..
Eq feat(agc): implement sceAgcDriverGetEqContextId 2026-10-07 21:53:21 +02:00
Execution perf(agc-driver): prepare shader ABI variants before taking the preparation lock 2026-10-11 14:54:48 +02:00
Graphics Merge pull request #3482 from MarcZX100/codex/rx-cross-block-3475 2026-10-11 14:02:02 +02:00
Resource fix(libSceAgcDriver): report unavailable bulk resource registration 2026-10-10 09:34:26 +02:00
State fix(agc): correct the default tessellation factor ring address 2026-10-09 11:45:53 +08:00
Submit feat(libSceAgcDriver): implement sceAgcDriverSubmitMultiAcbs 2026-10-07 22:04:58 +02:00
tests perf(agc-driver): prepare shader ABI variants before taking the preparation lock 2026-10-11 14:54:48 +02:00
tools feat(agc): let agc_shader_replay write a request's code words for other disassemblers 2026-10-03 21:45:10 +13:00
CMakeLists.txt Merge pull request #2258 from krishalivaibhav/codex/spirv13-image-regression 2026-10-11 13:53:14 +02:00
PostCompile.cmake feat(shader): translate NGG geometry programs to mesh shaders 2026-09-30 23:57:47 +13:00
Unimplemented.cpp fix(libSceAgcDriver): report unavailable bulk resource registration 2026-10-10 09:34:26 +02:00
embed_spirv.cmake build(agc): wire agc texture support into cmake 2026-09-23 07:40:22 +03:00