I can answer myself here, as I finally managed to dump the shader as sent to the card: yes, the shader binary format used for vertex, fragment and geometry shaders on the G80 is the same as the cubin for CUDA. There appear to be some special instructions that are used to read input and write output registers absent from CUDA. Apart from those, decuda will be a good start if someones decides to tackle NV50 shaders in Nouveau.
<br><br>Wladimir<br><br><div class="gmail_quote">On Nov 11, 2007 10:04 PM, Wladimir van der Laan &lt;<a href="mailto:laanwj@gmail.com">laanwj@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello there,<br><br>With the use of CUDA and ptx I managed to make a disassembler for at least one of the nv50 microcode/shader formats. This might come in handy for some people, hence I&#39;m posting it here:<br><br><a href="http://www.cs.rug.nl/%7Ewladimir/decuda/" target="_blank">

http://www.cs.rug.nl/~wladimir/decuda/</a><br><br>I&#39;m not yet sure if pixel/vertex shaders use the same instruction format as the compute shaders used by CUDA, but you&#39;d think so, as nv50 is supposed to have unified shader units. If anyone can help me a bit in finding the shader instructions in valgrind-mmt-extend of mmiotrace dumps that&#39;d be a great help. I haven&#39;t had much luck yet with that. Is there a way to &quot;pretty print&quot; the output of those programs, I mean, fill in the registers already known?
<br><br>Greetings,<br>Wladimir J. van der Laan<br><br>
</blockquote></div><br>