http://bugs.winehq.org/show_bug.cgi?id=20053
--- Comment #53 from Patrick Rudolph patrick1804@web.de 2011-10-14 11:03:06 CDT --- Hi, I investigated some more time and found this:
PS 2.0 = DirectX 9.0 PS 2.1 = DirectX 9.0a/b PS 3.0 = DirectX 9.0c
by setting caps->PS20Caps.NumInstructionSlots = 512; HL2 detects PS3 by setting caps->PS20Caps.NumInstructionSlots = 511; HL2 detects PS2.0
actually HL2 uses PS2.1 whenever PS3 is detected (because if PS3 is supported, PS2.1 has to be supported too).
Have a look at WINEDEBUG=+d3d_shader
The problem is somewhere inside the PS2.1 code.
The only way to force PS2.0 are the hacks recently posted.
Patrick