wined3d: Implement aoffimmi modifier for SM4 ld instruction in GLSL backend.

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Józef Kucia 2016-03-08 17:46:52 +01:00 committed by Alexandre Julliard
parent cd9b181275
commit 36c67c8a44
1 changed files with 6 additions and 3 deletions

View File

@ -4433,15 +4433,18 @@ static void shader_glsl_ld(const struct wined3d_shader_instruction *ins)
struct glsl_src_param coord_param, lod_param;
struct glsl_sample_function sample_function;
unsigned int sampler_bind_idx;
DWORD flags = WINED3D_GLSL_SAMPLE_LOAD;
shader_glsl_get_sample_function(ins->ctx, ins->src[1].reg.idx[0].offset, WINED3D_GLSL_SAMPLE_LOAD,
&sample_function);
if (wined3d_shader_instruction_has_texel_offset(ins))
flags |= WINED3D_GLSL_SAMPLE_OFFSET;
shader_glsl_get_sample_function(ins->ctx, ins->src[1].reg.idx[0].offset, flags, &sample_function);
shader_glsl_add_src_param(ins, &ins->src[0], sample_function.coord_mask, &coord_param);
shader_glsl_add_src_param(ins, &ins->src[0], WINED3DSP_WRITEMASK_3, &lod_param);
sampler_bind_idx = shader_glsl_find_sampler(&ins->ctx->reg_maps->sampler_map,
ins->src[1].reg.idx[0].offset, WINED3D_SAMPLER_DEFAULT);
shader_glsl_gen_sample_code(ins, sampler_bind_idx, &sample_function, ins->src[1].swizzle,
NULL, NULL, lod_param.param_str, NULL, "%s", coord_param.param_str);
NULL, NULL, lod_param.param_str, &ins->texel_offset, "%s", coord_param.param_str);
shader_glsl_release_sample_function(ins->ctx, &sample_function);
}