http://bugs.winehq.org/show_bug.cgi?id=17818
--- Comment #87 from Indirectly Indexed burp@nurfuerspam.de 2010-06-15 06:00:04 ---
Looks like a typical case of running out of available uniforms.
Not really. The shader program uses indirect addressing, which means wine doesn't know which uniforms are used and reserves the maximum (which is 256 - 3 in glsl_shader.c).
Unfortunately the shader program also uses c254. It might be possible to remap 254 to something lower in this special case, but that might interfere with the indirect addressing.
What would help in this specific case (without breaking others) were to fixup the cutting in glsl_shader.c. From my understanding you only need 3 uniforms on nvidia cards and even then not in every case of shader program. Instead of hardcoded 3 the analyzer/rewriter code should check what it actually needs, but I guess that's very very low priority for so little gain.
I can only say that RoM mostly works fine on my ATI 4870 card by only taking 1 instead of 3 uniforms (i.e. declaration ends up to be VC[255]). (There are shader issues over a *long* play session, but that seems to be a problem of RoM in general.)