mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
The 9-word kernel #3816 matches stores one dword per thread, loaded with s_buffer_load_dword through the descriptor in user[4..7]. Run as a compute dispatch, its stores are pending writes of unknown value, so a later read of DCC keys in that range waits for the GPU. fillBuffer now takes it as a uniform buffer fill when all of these hold: - the output descriptor's format is 32_UINT, 32_SINT or 32_FLOAT (20-22), so buffer_store_format_x stores the loaded dword unchanged; - the value descriptor covers the loaded dword: num_records times the stride (num_records alone when the stride is 0) is at least 4 bytes, the range the recompiler gives a scalar buffer load; - exactly 8 user SGPRs and group id X enabled, so the group id is s8; - a direct, non-partial dispatch, 64x1x1 threads, one group in Y and Z, and a 16-byte aligned range of whole 16-byte units. The value is read when the fill is recorded, after the labels queued before it, as the pattern-fill kernel's source is. When the value is one byte repeated and that byte is a DCC key code, the fill goes into the GPU key-store memo whatever ClassifyFill reports: the memo answers a key read only while this fill is still the newest pending write over the keys, and a fill over a color target's keys is not a storage image's keys fill. Co-Authored-By: Claude Opus 5.5 <[email protected]>