http://bugs.winehq.org/show_bug.cgi?id=17437
--- Comment #8 from hpestilence hpestilence@gmail.com 2009-02-19 07:51:13 --- A temporary workaround this driver bug is to use glxinfo -l to get the value of GL_MAX_VARYING_FLOATS_ARB divide it by 4 and then subtract 4. For my HD4850 this would be 68 / 4 - 4 = 13.
Go into dlls/wined3d/glsl_shader.c and replace every "(GL_LIMITS(glsl_varyings) / 4" with the value that you calculated, for me that would be "13". This hardcodes the varying value to wine so it isn't a clean fix but it'll work temporarily at least until the bug gets fixed.