On Thu, Feb 20, 2014 at 4:55 PM, Mike Stroyan <m...@lunarg.com> wrote: > Ian, > > Here is a shader_test version. It lacks the sparkling uncertainty of the > pixel values in the previous animated example program. > It just gets all vertices uniformly wrong when I run it.
Thanks for the test Mike. I reproduced it locally. Comparing the vertex shader assembly before and after your patch, I get the attached diff. The good news is that it doesn't look like the math instructions' dependency control flags are broken. The bad news is that our dependency control optimization has a bug. :) After three math exp instructions write to g8.{x,y,z}, we mov.sat g8.xyz into g116.xyz which we use as a message register. The problem is that we wrote a 1.0 into g116.w before the exp instructions, and the dependency control optimization code recognized that the write to g116.xyz would stall waiting for the write to g116.w and marked the instructions with NoDDClr/NoDDChk. Unfortunately, marking the write to g116.xyz with NoDDChk means that the instruction doesn't wait on the writes to g8 to complete either!
--- pass 2014-02-20 18:45:43.227973145 -0800 +++ fail 2014-02-20 18:46:07.915975294 -0800 @@ -252,16 +252,16 @@ (assign (xyz) (var_ref R_1) (swiz xyz (expression vec4 * (swiz xxxx (var_ref conditional_tmp) )(expression vec4 neg (var_ref R_1) ) ) )) 0x00000550: mul(8) g7<1>.xyzF g70<4,4,1>.xF -g7<4,4,1>F { align16 WE_normal 1Q }; (assign (w) (var_ref gl_FrontColor) (constant float (1.000000)) ) -0x00000560: mov.sat(8) g116<1>.wF 1F { align16 WE_normal 1Q }; +0x00000560: mov.sat(8) g116<1>.wF 1F { align16 WE_normal NoDDClr 1Q }; (assign (x) (var_ref R_2) (swiz x (expression vec4 exp2 (swiz xxxx (var_ref R_1) )) )) -0x00000570: math exp(8) g8<1>.xF g7<4,4,1>.xF null { align16 WE_normal 1Q }; +0x00000570: math exp(8) g8<1>.xF g7<4,4,1>.xF null { align16 WE_normal NoDDClr 1Q }; (assign (y) (var_ref R_2) (swiz y (expression vec4 exp2 (expression vec4 + (swiz yyyy (var_ref R_1) )(constant float (0x1.5798eep-27)) ) ) )) 0x00000580: add(8) g80<1>F g7<4,4,1>.yF 1e-08F { align16 WE_normal 1Q }; -0x00000590: math exp(8) g8<1>.yF g80<4,4,1>F null { align16 WE_normal 1Q }; +0x00000590: math exp(8) g8<1>.yF g80<4,4,1>F null { align16 WE_normal NoDDClr,NoDDChk 1Q }; (assign (z) (var_ref R_2) (swiz z (expression vec4 exp2 (swiz zzzz (var_ref R_1) )) )) -0x000005a0: math exp(8) g8<1>.zF g7<4,4,1>.zF null { align16 WE_normal 1Q }; +0x000005a0: math exp(8) g8<1>.zF g7<4,4,1>.zF null { align16 WE_normal NoDDChk 1Q }; (assign (xyz) (var_ref gl_FrontColor) (swiz xyz (var_ref R_2) )) -0x000005b0: mov.sat(8) g116<1>.xyzF g8<4,4,1>.xyzxF { align16 WE_normal 1Q }; +0x000005b0: mov.sat(8) g116<1>.xyzF g8<4,4,1>.xyzxF { align16 WE_normal NoDDChk 1Q }; indices, point width, clip flags 0x000005c0: mov(8) g114<1>D 0D { align16 WE_normal 1Q }; gl_Position @@ -272,4 +272,7 @@ 0x00000600: send(8) null g113<4,4,1>F urb 0 urb_write used complete mlen 5 rlen 0 { align16 WE_normal 1Q EOT }; -PIGLIT: {'result': 'pass' } +Probe color at (1,1) + Expected: 0.000000 0.000000 0.000000 + Observed: 0.000000 0.000000 1.000000 +PIGLIT: {'result': 'fail' }
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev