diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 5f19a99c29b..235778e40e7 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -220,6 +220,7 @@ static void shader_parse_dst_param(DWORD param, DWORD addr_param, struct wined3d dst->write_mask = param & WINED3DSP_WRITEMASK_ALL; dst->modifiers = param & WINED3DSP_DSTMOD_MASK; dst->shift = (param & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT; + dst->has_rel_addr = param & WINED3DSHADER_ADDRMODE_RELATIVE; dst->token = param; dst->addr_token = addr_param; } diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 042c33e4299..6a01ed78c63 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1278,8 +1278,7 @@ static DWORD shader_glsl_add_dst_param(const struct wined3d_shader_instruction * glsl_dst->reg_name[0] = '\0'; shader_glsl_get_register_name(wined3d_dst->register_type, wined3d_dst->register_idx, - wined3d_dst->token & WINED3DSHADER_ADDRMODE_RELATIVE, wined3d_dst->addr_token, - glsl_dst->reg_name, &is_color, ins); + wined3d_dst->has_rel_addr, wined3d_dst->addr_token, glsl_dst->reg_name, &is_color, ins); return shader_glsl_get_write_mask(wined3d_dst, glsl_dst->mask_str); } diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c index e0640e96845..32fba083c49 100644 --- a/dlls/wined3d/vertexshader.c +++ b/dlls/wined3d/vertexshader.c @@ -185,6 +185,7 @@ static void vshader_set_input( This->semantics_in[regnum].reg.write_mask = WINED3DSP_WRITEMASK_ALL; This->semantics_in[regnum].reg.modifiers = 0; This->semantics_in[regnum].reg.shift = 0; + This->semantics_in[regnum].reg.has_rel_addr = FALSE; This->semantics_in[regnum].reg.token = reg_token; This->semantics_in[regnum].reg.addr_token = 0; } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 0d1dfe22465..1e4f9ac468e 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -451,6 +451,7 @@ struct wined3d_shader_dst_param DWORD write_mask; DWORD modifiers; DWORD shift; + BOOL has_rel_addr; DWORD token; DWORD addr_token; };