Stefan Dösinger : wined3d: Fix DP2ADD in GLSL.

Alexandre Julliard julliard at winehq.org
Thu Apr 24 15:56:35 CDT 2008


Module: wine
Branch: master
Commit: 9b2593575783cb73c76388e5b71046c56bd4f9df
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9b2593575783cb73c76388e5b71046c56bd4f9df

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Wed Apr 23 22:18:32 2008 +0200

wined3d: Fix DP2ADD in GLSL.

DP2ADD returns a scalar, and fglrx (correctly) complains that it can't
assign that to a 3 component vector.

---

 dlls/wined3d/glsl_shader.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 901d461..ebf3c09 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -2696,7 +2696,11 @@ void pshader_glsl_dp2add(SHADER_OPCODE_ARG* arg) {
     shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1, &src1_param);
     shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], WINED3DSP_WRITEMASK_0, &src2_param);
 
-    shader_addline(arg->buffer, "dot(%s, %s) + %s);\n", src0_param.param_str, src1_param.param_str, src2_param.param_str);
+    if (mask_size > 1) {
+        shader_addline(arg->buffer, "vec%d(dot(%s, %s) + %s));\n", mask_size, src0_param.param_str, src1_param.param_str, src2_param.param_str);
+    } else {
+        shader_addline(arg->buffer, "dot(%s, %s) + %s);\n", src0_param.param_str, src1_param.param_str, src2_param.param_str);
+    }
 }
 
 void pshader_glsl_input_pack(




More information about the wine-cvs mailing list