<div class="gmail_quote">On Fri, Mar 11, 2011 at 2:56 PM, Keith Whitwell <span dir="ltr">&lt;<a href="mailto:keithw@vmware.com">keithw@vmware.com</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 class="im">On Fri, 2011-03-11 at 06:05 +0100, Marek Olšák wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; these 2 patches add GL_NV_texture_barrier to Mesa and Gallium,<br>
&gt; respectively. The extension can be used for programmable<br>
&gt; blending, where the same texture can be bound as both a sampler<br>
&gt; and renderbuffer. The same feature exists in Direct10 and<br>
&gt; the entry point is:<br>
&gt;<br>
&gt; VOID APIENTRY ResourceReadAfterWriteHazard(<br>
&gt;   __in  D3D10DDI_HDEVICE hDevice,<br>
&gt;   __in  D3D10DDI_HRESOURCE hResource<br>
&gt; )<br>
&gt;<br>
&gt; I have chosen the same name for Gallium:<br>
&gt;<br>
&gt; void (*resource_read_after_write_hazard)(struct pipe_context *,<br>
&gt;                                          struct pipe_resource *)<br>
&gt;<br>
&gt; The function is documented in the second patch.<br>
&gt; There is a new piglit test too, called blending-in-shader.<br>
&gt; I only have working r300g support, but I may add softpipe<br>
&gt; if needed.<br>
<br>
</div>I support this goal, but think you&#39;ve probably chosen the wrong name for<br>
the function.<br>
<br>
The call you&#39;re introducing is a method for the application to cooperate<br>
with the driver to get meaningful results when a single resource is<br>
bound for read &amp; write at the same time.<br>
<br>
In DX10-land, ResourceReadAfterWriteHazard() is something generated<br>
internally by the runtime when a resource which was previously bound to<br>
write is being rebound to read from, ie. something like:<br>
<br>
   if (ctx-&gt;is_resource_referenced(ctx, resource))<br>
       ctx-&gt;flush(ctx);<br>
<br>