<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>