The low-end graphics systems' FIFO allows the CPU and the graphics subsystem to work in parallel. For optimum performance, follow these guidelines:
Make sure the graphics subsystem always has enough in the queue.
Let the CPU perform preprocessing or non-graphic aspects of the application while the graphics hardware works on the commands in the FIFO.
For example, a full screen clear takes about 3 ms. Let the application do something else immediately after a clear, the FIFO otherwise fills up and forces a stall.
Note that FIFOs in low-end systems are much smaller than those in high-end systems. Not all graphics processing happens in hardware, and the time spent therefore differs greatly. To detect imbalances between the CPU and the graphics FIFO, execute the gr_osview command and observe gfxf in the CPU bar and fiwt and finowt in the gfx bar.
gfxf: time spent waiting for the graphics FIFO to drain.
fiwt: FIFO filled up and host went to sleep waiting for it to drain.
finowt: FIFO filled up but drained fast enough that host continued.