http://bugs.winehq.org/show_bug.cgi?id=34266
--- Comment #4 from Andrew Church achurch+wine@achurch.org 2013-08-17 03:58:19 CDT --- Thanks for the insight. (For reference, I'm using an NVIDIA GTX450; I'm not familiar with the ISA, but I assume it has a similar zeroing MUL instruction for use with D3D9.)
It looks like D3D10 and later follow the IEEE rules as well, so I'm not sure how much support we could get for an OpenGL extension just to support legacy shaders. I wonder if we could work around the problem with the mix() function from GLSL 1.30? Something like:
dest = mix(vecN(0), a * b, equal(a, vecN(0)) || equal(b, vecN(0)))