wined3d: Fix D3DSIO_M#X# instruction for both ARB and GLSL shaders.

This instruction was being handled incorrectly in the case where the
2nd src argument contained a relatively addressed constant.
This commit is contained in:
Jason Green 2006-07-05 22:35:56 -04:00 committed by Alexandre Julliard
parent 05bdf67d2e
commit 3529e0ceeb
2 changed files with 2 additions and 1 deletions

View File

@ -809,6 +809,7 @@ void vshader_hw_mnxn(SHADER_OPCODE_ARG* arg) {
tmpArg.buffer = arg->buffer;
tmpArg.src[0] = arg->src[0];
tmpArg.src_addr[0] = arg->src_addr[0];
tmpArg.src_addr[1] = arg->src_addr[1];
tmpArg.reg_maps = arg->reg_maps;
switch(arg->opcode->opcode) {

View File

@ -995,6 +995,7 @@ void shader_glsl_mnxn(SHADER_OPCODE_ARG* arg) {
tmpArg.buffer = arg->buffer;
tmpArg.src[0] = arg->src[0];
tmpArg.src_addr[0] = arg->src_addr[0];
tmpArg.src_addr[1] = arg->src_addr[1];
tmpArg.reg_maps = arg->reg_maps;
switch(arg->opcode->opcode) {
@ -1025,7 +1026,6 @@ void shader_glsl_mnxn(SHADER_OPCODE_ARG* arg) {
for (i = 0; i < nComponents; i++) {
tmpArg.dst = ((arg->dst) & ~D3DSP_WRITEMASK_ALL)|(D3DSP_WRITEMASK_0<<i);
tmpArg.src[1] = arg->src[1]+i;
tmpArg.src_addr[1] = arg->src[1]+i;
shader_glsl_dot(&tmpArg);
}
}