As of this patch, Wine now supports more opcodes in GLSL than ARB_vp/fp and we can handle many of the shader 2.0+ instructions not available before. There are a few missing texture operations compared to ARB still, and we're not properly handling textures for any shaders <2.0, but that's true in ARB as well.
Yes, the missing texture operations are kind of important, I think [ but they are valid in SM 1.x only ]. Other suggestions I have: - fix swizzle, make it work consistently across all instructions (see cmp). - may be a good idea to centralize casting in one place to avoid failures [ yes, I probably should have done that when adding casting in my patch :) - merge the rest of the SHADER_ARB code, and organize it the same as the SHADER_GLSL code (in arb_shader.c or something like that). Then go through and compare the two and make sure modifiers and other such things work the same way.
===== For 1.x texture support we could delay compilation until we know what kind of textures will be bound, and then recompile if textures change their dimensionality [ which hopefully they won't ].