- Mixing ARB and GLSL backends is pretty silly as well.
Why? I believe you can e.g. perfectly mix GLSL vertex programs together with multitexturing setups.
ARB as in ARB_vertex_program or ARB_fragment_program, I'm not sure what multitexturing has to do with it. You can't, for example, properly use ARB_fragment_program together with a GLSL vertex shader. (You might be able to get away with it due to the way GLSL is implemented on a specific implementation, but you're certainly not supposed to).
http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_shader.txt
Interactions with ARB_vertex_program and ARB_fragment_program
Mixing a high level ARB_vertex_shader shader with a low level ARB_fragment_program shader is allowed. However, a high level ARB_vertex_shader shader and a low level ARB_vertex_program shader cannot be active at the same time.
http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_shader.txt:
Interactions with ARB_vertex_program and ARB_fragment_program
Mixing a high level ARB_fragment_shader shader with a low level ARB_vertex_program shader is allowed. However, a high level ARB_fragment_shader shader and a low level ARB_fragment_program shader cannot be active at the same time.
allowing the mixing of types probably leads to a more complete feature set in the end.
Except that there are no actual meaningful combinations to make.
Well, at least you can turn the pixel and vertex shaders off individually, rather than turn off shaders completely (using the NONE backend). I think up until a few releases ago pixel shaders were off by default.