From: Francisco Casas fcasas@codeweavers.com
--- libs/vkd3d-shader/hlsl_sm4.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_sm4.c b/libs/vkd3d-shader/hlsl_sm4.c index 452a2f83..94bb4ed9 100644 --- a/libs/vkd3d-shader/hlsl_sm4.c +++ b/libs/vkd3d-shader/hlsl_sm4.c @@ -737,10 +737,13 @@ static void write_sm4_rdef(struct hlsl_ctx *ctx, struct dxbc_writer *dxbc)
if (profile->major_version >= 5) { - put_u32(&buffer, 0); /* texture start */ - put_u32(&buffer, 0); /* texture count */ - put_u32(&buffer, 0); /* sampler start */ - put_u32(&buffer, 0); /* sampler count */ + unsigned int tex_alloc = !!var->regs[HLSL_REGSET_TEXTURES].allocated; + unsigned int sam_alloc = !!var->regs[HLSL_REGSET_SAMPLERS].allocated; + + put_u32(&buffer, tex_alloc * var->regs[HLSL_REGSET_TEXTURES].id); + put_u32(&buffer, tex_alloc * var->regs[HLSL_REGSET_TEXTURES].count); + put_u32(&buffer, sam_alloc * var->regs[HLSL_REGSET_SAMPLERS].id); + put_u32(&buffer, sam_alloc * var->regs[HLSL_REGSET_SAMPLERS].count); } } }