In the last episode we had a brief look at the nv44 mthd microcode - the only thing it did was handling the DMA object setting methods. The nv50 version of this microcode is even simpler - only method 0 is handled.
This strongly suggests there are some other handlers for methods. Let's scan the method space and see which ones trigger the mthd microcode.
The following ones don't (on NV50):
Let's see what happens when they're submitted.
So it seems that $x registers store method state between microcode executions, 0x400-0x4bc and 0x304 are parameter method like on VP2 and VP3, and 0x300 is "execute" method like on VP2/VP3.
The clearing of $x0-$x47 by method 0x304 can likewise be explained by VP3 similarities: on VP3, 0x304 selects the microcode piece to be loaded and executed. In other words, the parameters loaded previously are assumed to be for a different program and are discarded.
Elapsed time: 2hShare on Twitter Share on Facebook