Mirek wrote:
Ok, i just found why is it not working with this patch, and why is it working without this patch. It is based on position of definition MOVA in vertexshader.c, if MOVA is on "after patch" position it is not working, but if i move line " {WINED3DSIO_MOVA, "mova", NULL, 1, 2, vshader_mova, vshader_hw_map2gl, shader_glsl_mov, WINED3DVS_VERSION(2,0), -1}," to position of definition before patch, evrything is working.
... that's because Jason seems to have introduced order requirements on the table that weren't previously there. The mnxn implementation will attempt to access the table as an array, which will break once MOVA is moved before DP3:
glsl_shader.c: tmpArg.opcode = &IWineD3DVertexShaderImpl_shader_ins[WINED3DSIO_DP4]; glsl_shader.c: tmpArg.opcode = &IWineD3DVertexShaderImpl_shader_ins[WINED3DSIO_DP3];
The instruction table currently does not support this, and it only happens to work for the first few instructions [ which the MOVA change breaks ].