http://bugs.winehq.org/show_bug.cgi?id=6577
------- Additional Comments From stefandoesinger@gmx.at 2007-09-02 04:57 ------- You can test if the secound regression is caused by incorrect dirtification of the state, or by (accidental) changes to the loading code. You can tell that by simply forcing an update of shader constants before each draw, as described here:
http://wiki.winehq.com/D3DStateManagement, chapter "Debugging".
So basically add the following line dlls/wined3d/drawprim.c, function drawPrimitive(), after the applying loop after ENTER_GL():
StateTable[STATE_VERTEXSHADERCONSTANT].apply(STATSTATE_VERTEXSHADERCONSTANT, This->stateBlock);
If you are using the latest git code, and my patches from yesterday are in, the location changed slightly, from drawprim.c to context.c, and the line would be StateTable[STATE_VERTEXSHADERCONSTANT].apply(STATE_VERTEXSHADERCONSTANT, This->stateBlock, context); . Search for "case CTXUSAGE_DRAWPRIM", and insert that line after the for loop.
If that fixes the problem, the state is not dirtified correctly. Otherwise, the code applying the state has a bug.