http://bugs.winehq.org/show_bug.cgi?id=20922
Stefan Dösinger stefandoesinger@gmx.at changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefandoesinger@gmx.at
--- Comment #1 from Stefan Dösinger stefandoesinger@gmx.at 2009-12-06 05:46:02 --- Hi, Can you run the program with WINEDEBUG=d3d_shader ? I suspect that the input shader is already incorrect. src1 and src2 - where the double swizzle occurs - are supposed to be 4 component constant registers. The double swizzle occurs because the app sets a swizzle on src1 and src2(2nd and third param) and the shader_addline code simply concatenates ".w" without looking at the input swizzle. The question is if it should. C4.w is a single scalar, it can't possibly work with what the helper constants are supposed to do.
I'll have to write a test case to figure out how Wine is supposed to behave here. I suspect we should reject the shader and return an error when the app tries to create it. Its also possible that we should simply ignore the swizzle and treat "C4.w" as "C4" in this specific instruction. Or, maybe we should honor the swizzle and return incorrect results because the taylor coefficients aren't correct.