mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-23 00:53:02 -05:00
RADV initializes and fast-clears DCC keys with its fill_memory compute kernel, which stores through a global address. Run as an ordinary dispatch, its stores name no range. The DCC key tracking therefore saw a key fill only once it had landed in guest memory, which could be after later writes to the surface had already been recorded. vkQuake (PPSA99010) hits this on every item pickup: - the scene renders into a second color buffer; - RADV's UNDEFINED -> GENERAL barrier fills color buffer 0's keys with DCC_CLEAR_0000; - a screen-effects compute pass writes color buffer 0; - the UI pass draws on color buffer 0. The keys landed while the UI pass was being recorded. The refresh took them for a clear made after the compute pass, dropped its results and cleared the image to black. For the length of the pickup flash the scene was black, with only the HUD drawn. The fill HLE now matches the 16-byte variant of the kernel as a fill of min(threads * 16, user[4] + 16) bytes. The kernel takes its address in user[2..3], its largest store offset in user[4] and its value in user[5]. A key fill through it is handled where it is in the command stream.