<div dir="ltr"><div>Ian,<br><br></div> Here is a shader_test version. It lacks the sparkling uncertainty of the pixel values in the previous animated example program.<br>It just gets all vertices uniformly wrong when I run it.<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 20, 2014 at 4:31 PM, Ian Romanick <span dir="ltr"><<a href="mailto:idr@freedesktop.org" target="_blank">idr@freedesktop.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On 02/12/2014 04:24 PM, <a href="mailto:mike@lunarg.com">mike@lunarg.com</a> wrote:<br>
> From: Mike Stroyan <mike@LunarG.com><br>
><br>
> Putting NoDDClr and NoDDChk dependency control on instruction<br>
> sequences that include math opcodes can cause corruption of channels.<br>
> Treat math opcodes like send opcodes and suppress dependency hinting.<br>
<br>
</div>Since you've analyised the failure in the real application, can you<br>
produce a minimal shader_runner test case that exhibits the same<br>
problem? Eric mentioned to me that he'd like to play with it to better<br>
understand what's going on...<br>
<div class="HOEnZb"><div class="h5"><br>
> Signed-off-by: Mike Stroyan <mike@LunarG.com><br>
> Tested-by: Tony Bertapelli <<a href="mailto:anthony.p.bertapelli@intel.com">anthony.p.bertapelli@intel.com</a>><br>
> ---<br>
> src/mesa/drivers/dri/i965/brw_vec4.cpp | 8 ++++++++<br>
> 1 file changed, 8 insertions(+)<br>
><br>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp<br>
> index dd23ed4..1c42ca8 100644<br>
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp<br>
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp<br>
> @@ -717,6 +717,14 @@ vec4_visitor::opt_set_dependency_control()<br>
> continue;<br>
> }<br>
><br>
> + /* Dependency control does not work well over math instructions.<br>
> + */<br>
> + if (inst->is_math()) {<br>
> + memset(last_grf_write, 0, sizeof(last_grf_write));<br>
> + memset(last_mrf_write, 0, sizeof(last_mrf_write));<br>
> + continue;<br>
> + }<br>
> +<br>
> /* Now, see if we can do dependency control for this instruction<br>
> * against a previous one writing to its destination.<br>
> */<br>
><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><br> Mike Stroyan - Software Architect<br> LunarG, Inc. - The Graphics Experts<br> Cell: (970) 219-7905<br> Email: Mike@LunarG.com<br> Website: <a href="http://www.lunarg.com">http://www.lunarg.com</a>
</div>