You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Draw with no pixel program fails: "prepared shader artifact is missing for the requested static ABI" (null pixel program) #1901
Stray (PPSA02100 v1.05, Unreal Engine 4) gets to its window and then aborts before its first frame:
[videoout] presentation failed: AGC driver: prepared shader artifact is missing for the requested static ABI: address=140571275516160 stage=5 wave=64 pushOffset=20 pushCapacity=108 preparedLayouts= [0,128] [0,0]
Setup: Linux (Nobara 44, kernel 7.2), RTX 5070 Ti, NVIDIA 595.91.07. Base is main1be6f9f + #861 + #1836 + #1893.
The address is not a guest shader. It is the driver's own NullPixelCode (libSceAgcDriver.prx + 0x715900). The null pixel program is prepared once, with 0 user SGPRs and wave64. When a draw has no pixel program, DrawDecode gives the null program the queue's current SPI_SHADER_PGM_RSRC2_PS user SGPR count and SPI_PS_IN_CONTROL wave bit. Those values are left over from the last pixel shader the title bound (4 user SGPRs here). The prepared shader key then never matches. Guest pixel shaders get their per-draw variant through ResolveShaderAbi, but nothing does that for the null program.
Fix: when a fragment request for the null pixel program misses, prepare it at the draw and cache the result in its entries. Unregistered compute shaders are already handled this way. The PR has a test that fails on main and passes with the fix. PR: #____
Activity