> > I don't think that would work well. We would need some shader model > specific private data in each context(e.g. last vertexshader and last > vertexdeclaration) to allow the shader backend to find out what to do, > since the dirty state information won't suffice if the shader backend > doesn't know where it was called from. > > > Why not? How does e.g. ARB find out wether it has to reapply the pixelshader? Or how does GLSL find out if it has to apply a new GLSL program.
> I would argue that since shaders replace vertex and/or fragment > states, we shouldn't have to go through the state management for > replaced pipeline stages in the first place. And I argue that this should be the implementation's decision. (Read: The state manager and context.c should not treat some states specially)