Clone this wiki locally
The PGRAPH is the engine of the GPU that actually performs graphics operations like blitting and drawing triangles. It can be programmed by directly writing to its registers in MMIO space or by feeding commands through the PFIFO engine.
You'll find the register map here:
NV50 & NVC0
This will stop PGRAPH from pulling commands from the PFIFO which will then starve of commands --> paused! We need to set UNK16 because otherwise, the PGRAPH could be stuck in a ctxprog context switch or an m2mf memory transfer.
Wait for the pause
We now need to wait for PGRAPH to actually stop.
The blob first checks on these registers (wait for them to come to 0):