Module: wine Branch: refs/heads/master Commit: 3529e0ceeb633a3dbc2335f2c74727734468e23e URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=3529e0ceeb633a3dbc2335f2...
Author: Jason Green jave27@gmail.com Date: Wed Jul 5 22:35:56 2006 -0400
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.
---
dlls/wined3d/arb_program_shader.c | 1 + dlls/wined3d/glsl_shader.c | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 47791bc..e4d7e4d 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -809,6 +809,7 @@ void vshader_hw_mnxn(SHADER_OPCODE_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) { diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index d15874c..d7ec6a2 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -995,6 +995,7 @@ void shader_glsl_mnxn(SHADER_OPCODE_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* 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); } }