The eventual goal for the HLSL FFP pipeline is to set the shader to an internally constructed wined3d_shader object early, so that all the existing backend logic that works with real shaders can be reused.
Specifically, we want to construct this shader before e.g. context_gl_load_shader_resources() and context_update_stream_info(), both functions which currently execute before applying state tables but which operate on the currently bound shaders. In fact, because the HLSL FFP pipeline is intended to be backend-agnostic, the goal is to construct the replacement shaders from within wined3d_cs_exec_draw().
If we've given up on fixed-function hardware, as we seem to have, is there any reason we shouldn't just construct fixed-function shaders in wined3d_device_apply_stateblock(), and avoid having to worry about fixed-function at all in core wined3d?