Module: vkd3d Branch: master Commit: eca2d90a6e843fc29fd4728bccb0d58c492ce2e9 URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=eca2d90a6e843fc29fd4728b...
Author: Zebediah Figura zfigura@codeweavers.com Date: Mon Nov 8 21:39:29 2021 -0600
vkd3d-shader/hlsl: Handle samplers in write_sm1_uniform().
Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com Signed-off-by: Matteo Bruni mbruni@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
libs/vkd3d-shader/hlsl_sm1.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_sm1.c b/libs/vkd3d-shader/hlsl_sm1.c index c3d27ee..875f521 100644 --- a/libs/vkd3d-shader/hlsl_sm1.c +++ b/libs/vkd3d-shader/hlsl_sm1.c @@ -352,8 +352,18 @@ static void write_sm1_uniforms(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffe if (!var->semantic.name && var->reg.allocated) { put_u32(buffer, 0); /* name */ - put_u32(buffer, vkd3d_make_u32(D3DXRS_FLOAT4, var->reg.id)); - put_u32(buffer, var->data_type->reg_size / 4); + if (var->data_type->type == HLSL_CLASS_OBJECT + && (var->data_type->base_type == HLSL_TYPE_SAMPLER + || var->data_type->base_type == HLSL_TYPE_TEXTURE)) + { + put_u32(buffer, vkd3d_make_u32(D3DXRS_SAMPLER, var->reg.id)); + put_u32(buffer, 1); + } + else + { + put_u32(buffer, vkd3d_make_u32(D3DXRS_FLOAT4, var->reg.id)); + put_u32(buffer, var->data_type->reg_size / 4); + } put_u32(buffer, 0); /* type */ put_u32(buffer, 0); /* FIXME: default value */ }