Stefan Dösinger : wined3d: Handle modifiers in cmp.
Alexandre Julliard
julliard at winehq.org
Thu Sep 27 09:27:26 CDT 2007
Module: wine
Branch: master
Commit: c29112b60afad92dad6564ba51c58c891135c3a4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c29112b60afad92dad6564ba51c58c891135c3a4
Author: Stefan Dösinger <stefandoesinger at gmx.at>
Date: Wed Sep 5 16:10:26 2007 +0200
wined3d: Handle modifiers in cmp.
---
dlls/wined3d/arb_program_shader.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 2bb5448..419d485 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -857,21 +857,25 @@ void pshader_hw_cmp(SHADER_OPCODE_ARG* arg) {
char dst_wmask[20];
char dst_name[50];
char src_name[3][50];
+ DWORD shift = (arg->dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+ BOOL sat = (arg->dst & WINED3DSP_DSTMOD_MASK) & WINED3DSPDM_SATURATE;
/* FIXME: support output modifiers */
/* Handle output register */
pshader_get_register_name(arg->dst, dst_name);
shader_arb_get_write_mask(arg, arg->dst, dst_wmask);
- strcat(dst_name, dst_wmask);
/* Generate input register names (with modifiers) */
pshader_gen_input_modifier_line(buffer, arg->src[0], 0, src_name[0]);
pshader_gen_input_modifier_line(buffer, arg->src[1], 1, src_name[1]);
pshader_gen_input_modifier_line(buffer, arg->src[2], 2, src_name[2]);
- shader_addline(buffer, "CMP %s, %s, %s, %s;\n", dst_name,
- src_name[0], src_name[2], src_name[1]);
+ shader_addline(buffer, "CMP%s %s%s, %s, %s, %s;\n", sat ? "_SAT" : "", dst_name, dst_wmask,
+ src_name[0], src_name[2], src_name[1]);
+
+ if (shift != 0)
+ pshader_gen_output_modifier_line(buffer, FALSE, dst_wmask, shift, dst_name);
}
/* Map the opcode 1-to-1 to the GL code */
More information about the wine-cvs
mailing list