Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

PGRAPH

mupuf edited this page · 14 revisions

PGRAPH

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.

Registers

You'll find the register map here:

Pause/Unpause

NV04

TODO

NV50 & NVC0

Pause

To pause the PGRAPH, you'll need to change the CONTROL register to UNK16.

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):

Then, you'll need to wait for the STATUS register's bit ALL to go down to 0.

Un-pause

Un-pausing is done by setting the CONTROL register to PULL|UNK16.

Something went wrong with that request. Please try again.