Jason Green : wined3d:
Fix D3DSIO_M#X# instruction for both ARB and GLSL shaders.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jul 6 10:44:09 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 3529e0ceeb633a3dbc2335f2c74727734468e23e
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=3529e0ceeb633a3dbc2335f2c74727734468e23e
Author: Jason Green <jave27 at 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);
}
}
More information about the wine-cvs
mailing list