[Nouveau] SERIALIZE command

Marcin Kościelnicki koriakin at 0x04.net
Fri Apr 9 08:11:04 PDT 2010


> I am trying to use the 0x110 SERIALIZE (or 0x108 WAIT_FOR_IDLE?) command to
> barrier the PGRAPH commands.
> Unfortunately, I do not find any examples either in nouveau or gallium.

There are some examples in DDX, but they don't use the symbolic name

> If it plays just a barrier, I guess it should work by something like (in
> case of m2mf):
> BEGIN_RING(chan, m2mf, 0x110, 1);
> OUT_RING(chan, 1);
>
> Otherwise, it may actually play to serialize some commands, then I would
> rather use as follows:
> BEGIN_RING(chan, m2mf, 0x110, 1);
> OUT_RING(chan, NUMBER_OF_FOLLOWING_COMMANDS);
>
> I have tried both approaches, and the application runs without any
> problems, but I am not sure if barriers have happened or not ;-)
> I would appreciate if anyone can tell me how to use the barrier command.

The WAIT_FOR_IDLE/SERIALIZE methods [they're really the same, I just didn't 
know it when I named the 0x110 on nv50] ignore the data value. Whenever 
they're on the tip of the internal PGRAPH command FIFO, they'll stall all 
processing until all PGRAPH subunits are idled, effectively acting as a full 
barrier.

Yes, SERIALIZE should be renamed to WAIT_FOR_IDLE.

> Best,
> - Shinpei

Marcin Kościelnicki


More information about the Nouveau mailing list