D891 - An asynchronous compute stream waiting on a fence steps aside

Status: decided Date: 2026-10-18

A stream handed over with sceAgcDriverSubmitAcb runs on an asynchronous compute ring of its own. orbistoun carries it out on the one command processor, in order with the graphics streams, until it reaches a wait not yet satisfied. There it steps aside, kept with the byte it stopped at, and the graphics ring goes on. After every graphics submission the streams stepped aside are carried on from where they stopped, oldest first, each until it waits again; a compute stream submitted while one waits goes in behind it, as its ring would keep it. A graphics stream that stops at a wait is carried on again whenever a compute stream stepped aside goes further. A compute stream that stops for any other reason stops the queue, as a graphics one does (D710).

Why: PPSA04263 submits compute work that waits on a fence the graphics ring writes later: its first compute stream waits for the frame counter to reach the value a graphics submission queued after it releases. On the console the two rings run side by side and the compute ring simply waits. Carried out in submission order on one queue, the compute stream's wait was never satisfied and every graphics submission behind it waited forever.

Rejected: