I&#39;ve had a look at it and come with more efficient variants of the two opcodes. Actually, we don&#39;t need the native r5xx SGT instruction, not idea why it exists. See the commit <a href="http://cgit.freedesktop.org/mesa/mesa/commit/?id=f0896e7f80c2c00d263b3ecd7bb18dfffa9a01a8" target="_blank">f0896e7f80c2c00d263b3ecd7bb18dfffa9a01a8</a>.<br>


<br>Anyway, thank you for the (bug) report.<br><br>-Marek<br><br><div class="gmail_quote">On Tue, May 25, 2010 at 9:25 PM, gianluca <span dir="ltr">&lt;<a href="mailto:gianluca@sottospazio.it" target="_blank">gianluca@sottospazio.it</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div>On Tue, May 25, 2010 at 11:57:23AM +0200, Marek Olšák wrote:<br>
&gt; The patch looks good but it&#39;s r5xx-only. I&#39;ll commit this when an r3xx<br>
&gt; version is implemented too.<br>
<br>
</div>yes I realized that the opcode is R500 only. I&#39;ve taken a different approach<br>
using transformations which works too, but I don&#39;t know if it&#39;s acceptable.<br>
<br>
I&#39;m attaching the patch which also handles the SLE case.<br>
<div><div></div><div><br>
&gt;<br>
&gt; -Marek<br>
&gt;<br>
&gt; On Mon, May 24, 2010 at 6:00 PM, Gianluca Anzolin<br>
&gt; &lt;<a href="mailto:gianluca@sottospazio.it" target="_blank">gianluca@sottospazio.it</a>&gt;wrote:<br>
&gt;<br>
&gt; &gt; Hello,<br>
&gt; &gt;<br>
&gt; &gt; Yesterday I was trying to run an example taken from chapter 6 of the book<br>
&gt; &gt; OpenGl<br>
&gt; &gt; Shading Language with the new gallium driver (I have a RV570 graphic card),<br>
&gt; &gt; but<br>
&gt; &gt; I got this error when compiling the vertex shader: Unknown opcode 35.<br>
&gt; &gt;<br>
&gt; &gt; Digging in the source code I found that the opcode 35 is for the &gt; operator<br>
&gt; &gt; between two vectors (RC_OPCODE_SGT). It&#39;s related to the following vertex<br>
&gt; &gt; shader code:<br>
&gt; &gt;<br>
&gt; &gt;    if (diffuse &gt; 0.0)<br>
&gt; &gt;    {<br>
&gt; &gt;        spec = max(dot(reflectVec, viewVec), 0.0);<br>
&gt; &gt;        spec = pow(spec, 16.0);<br>
&gt; &gt;    }<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; When I changed the comparison to &quot;&gt;=&quot; the problem disappeared. Infact there<br>
&gt; &gt; is<br>
&gt; &gt; no switch case for RC_OPCODE_SGT in the file r3xx_vertprog.c. I added that<br>
&gt; &gt; case<br>
&gt; &gt; to the switch statement (see the patch attached) and I got it working even<br>
&gt; &gt; with<br>
&gt; &gt; the &quot;&gt;&quot; operator.<br>
&gt; &gt;<br>
&gt; &gt; I hope the patch is correct, if there is a better fix I&#39;d really like to<br>
&gt; &gt; know.<br>
&gt; &gt;<br>
&gt; &gt; Thanks,<br>
&gt; &gt;<br>
&gt; &gt; Gianluca<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; mesa-dev mailing list<br>
&gt; &gt; <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
&gt; &gt; <a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
</div></div></blockquote></div><br>