On 16 December 2011 19:53, Kenneth Graunke <span dir="ltr">&lt;<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 12/14/2011 11:59 AM, Paul Berry wrote:<br>
&gt; This patch enables rasterizer discard functionality (a part of<br>
&gt; transform feedback) in Gen6, by generating an alternate GS program<br>
&gt; when rasterizer discard is active.  Instead of forwarding vertices<br>
&gt; down the pipeline, the alternate GS program uses a URB Write message<br>
&gt; to deallocate the URB entry that was allocated by FF sync and<br>
&gt; terminate the thread.<br>
&gt;<br>
&gt; Note: parts of the Sandy Bridge PRM seem to imply that we could do<br>
&gt; this more efficiently, by clearing the GEN6_GS_RENDERING_ENABLE bit,<br>
&gt; and not allocating a URB entry at all.  However, it&#39;s not clear how we<br>
&gt; are supposed to terminate the thread if we do that.  Volume 2 part 1,<br>
&gt; section 4.5.4, says &quot;GS threads must terminate by sending a URB_WRITE<br>
&gt; message with the EOT and Complete bits set.&quot;, and my experiments so<br>
&gt; far confirm that.<br>
&gt; ---<br>
&gt;<br>
&gt; This patch needs to be applied on top of the series &quot;[PATCH 0/8] i965<br>
&gt; gen6: Initial implementation of transform feedback.&quot;, which is still<br>
&gt; under review on the mailing list.<br>
<br>
</div>Assuming the dirty bit gets sorted out,<br>
Reviewed-by: Kenneth Graunke &lt;<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>&gt;<br>
<br>
</blockquote></div><br>Thanks, Ken.  Fortunately, this patch is independent of the dirty bit stuff (since this patch adds a use of ctx-&gt;TransformFeedback.RasterDiscard to brw_gs_prog, which already depends on _NEW_TRANSFORM).  So I&#39;ll push it as soon as the remaining discussion on my main transform feedback series is resolved.<br>