http://bugs.winehq.org/show_bug.cgi?id=14762
--- Comment #70 from Tobias Jakobi liquid.acid@gmx.net 2009-07-04 06:13:19 --- Short status update: (i) The constant packing code for GLSL is in git master, this should help with applications that use a lot of NP2 textures - however most apps don't do that and the FX won't run them at acceptable framerate anyway. The code still needs fallback implementation, which means that it should disable the fixup if the shader would fail because of too many uniforms (shader constants in GLSL) used. This isn't done currently since the used uniforms are counted nowhere.
(ii) NP2 fixup code for ARB also went into git master - this already implements constant packing and a fallback. Fallback was done because unsuccessfully compiled shaders generate a lot of GL error noise when wine attempts to draw with them. So we just disable the fixup once we run out of constants, peroid. This isn't going to look that good but at least it "works" to some extent. However I have yet to see a game that triggers the fallback.
(iii) All NP2 fixup code is currently exclusive to pixelshader mode, it won't kick in when there is only a vertexshader active. A GLSL implementation for vshader-only mode is planned - ARB.... maybe, but not very likely.
(iv) A testcase is still missing. Going to write one soon....