<div class="gmail_quote">On 5 December 2011 18:42, Eric Anholt <span dir="ltr">&lt;<a href="mailto:eric@anholt.net">eric@anholt.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Mon, 5 Dec 2011 15:14:13 -0800, Paul Berry &lt;<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>&gt; wrote:<br>
&gt; On 5 December 2011 14:53, Eric Anholt &lt;<a href="mailto:eric@anholt.net">eric@anholt.net</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; On Mon,  5 Dec 2011 09:40:45 -0800, Paul Berry &lt;<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>&gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt; &gt; Previously, the geometry shader program key was storing all the<br>
&gt; &gt; &gt; information necessary to compute the exact structure of the VUE map<br>
&gt; &gt; &gt; (attrs and userclip_active).  However, the GS program doesn&#39;t depend<br>
&gt; &gt; &gt; on the exact structure of the VUE map; only on the size (in 256-bit<br>
&gt; &gt; &gt; registers) of the VUE.  So we were recompiling the GS program<br>
&gt; &gt; &gt; unnecessarily when the VUE map changed in structure but not in size.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; This patch changes the key to store just the size of the VUE map, not<br>
&gt; &gt; &gt; its structure.<br>
&gt; &gt;<br>
&gt; &gt; Hmm.  I&#39;m betting that brw_compute_vue_map() is way more expensive than<br>
&gt; &gt; the extra couple bytes of key data to compare.<br>
&gt; &gt;<br>
&gt;<br>
&gt; True, but it&#39;s way less expensive than unnecessarily compiling (and<br>
&gt; uploading to the GPU) a brand new GS program that is identical to the one<br>
&gt; that&#39;s already there.  That&#39;s what this patch is avoiding.<br>
<br>
</div>That still happens a limited number of times, while key setup is per<br>
drawing operation.  And if you&#39;ve got the same program code, you should<br>
even end up associating the same instructions with the identical copies.<br>
</blockquote></div><br><div>So am I correct in assuming you&#39;re ok with this patch, provided that I do a follow-on patch that computes the vue map at the top of the pipeline, as previously discussed?</div>