D886 - An end-of-pipe action's data is patched where radeonsi emits it

Status: decided Known by: assumed Date: 2026-10-15

sceAgcQueueEndOfPipeActionPatchData(packet, data) writes data into the RELEASE_MEM packet a builder reserved, as the value its end-of-pipe action stores: the low half into dw5, the high half into dw6, the rest of the packet as built. It answers 0x0.

Why: Grand Theft Auto V calls it once per submission, with values 1 and 2, on the RELEASE_MEM its sceAgcCbReleaseMem reserved: the fence each frame's end-of-pipe action writes. Answered with the placeholder, every release stored the value the packet was built with, and the fence never counted.

dw5 and dw6 are where radeonsi emits an end-of-pipe write's immediate data, after the destination address in dw3 and dw4 (Mesa src/amd/common/ac_cmdbuf_cp.c:494-501). The destination half is measured: sceAgcQueueEndOfPipeActionPatchAddress replaced dw3 and nothing else (166-agc/patch-queue-eop-address) and answered 0x0, which is the answer assumed here.

Rejected: