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 ].