Module: wine Branch: master Commit: 1c18112339cdeba99acad928894ada743ef69a83 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1c18112339cdeba99acad92889...
Author: Stefan Dösinger stefan@codeweavers.com Date: Wed Sep 5 17:13:04 2007 +0200
wined3d: Add proper input register handling to texreg2ar/gb.
---
dlls/wined3d/arb_program_shader.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 1fc3338..526e435 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -1090,12 +1090,13 @@ void pshader_hw_texreg2ar(SHADER_OPCODE_ARG* arg) { DWORD flags;
DWORD reg1 = arg->dst & WINED3DSP_REGNUM_MASK; - DWORD reg2 = arg->src[0] & WINED3DSP_REGNUM_MASK; char dst_str[8]; + char src_str[50];
sprintf(dst_str, "T%u", reg1); - shader_addline(buffer, "MOV TMP.r, T%u.a;\n", reg2); - shader_addline(buffer, "MOV TMP.g, T%u.r;\n", reg2); + pshader_gen_input_modifier_line(buffer, arg->src[0], 0, src_str); + shader_addline(buffer, "MOV TMP.r, %s.a;\n", src_str); + shader_addline(buffer, "MOV TMP.g, %s.r;\n", src_str); flags = reg1 < MAX_TEXTURES ? deviceImpl->stateBlock->textureState[reg1][WINED3DTSS_TEXTURETRANSFORMFLAGS] : 0; shader_hw_sample(arg, reg1, dst_str, "TMP", flags & WINED3DTTFF_PROJECTED, FALSE); } @@ -1108,12 +1109,13 @@ void pshader_hw_texreg2gb(SHADER_OPCODE_ARG* arg) { DWORD flags;
DWORD reg1 = arg->dst & WINED3DSP_REGNUM_MASK; - DWORD reg2 = arg->src[0] & WINED3DSP_REGNUM_MASK; char dst_str[8]; + char src_str[50];
sprintf(dst_str, "T%u", reg1); - shader_addline(buffer, "MOV TMP.r, T%u.g;\n", reg2); - shader_addline(buffer, "MOV TMP.g, T%u.b;\n", reg2); + pshader_gen_input_modifier_line(buffer, arg->src[0], 0, src_str); + shader_addline(buffer, "MOV TMP.r, %s.g;\n", src_str); + shader_addline(buffer, "MOV TMP.g, %s.b;\n", src_str); flags = reg1 < MAX_TEXTURES ? deviceImpl->stateBlock->textureState[reg1][WINED3DTSS_TEXTURETRANSFORMFLAGS] : 0; shader_hw_sample(arg, reg1, dst_str, "TMP", FALSE, FALSE); }