Module: vkd3d Branch: master Commit: 3bafd036bb53bf211cb8b05651835aba6fb47ebc URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/3bafd036bb53bf211cb8b05651835a...
Author: Francisco Casas fcasas@codeweavers.com Date: Thu Dec 1 20:17:08 2022 -0300
vkd3d-shader/hlsl: Don't allocate all texture registers for synthetic separated samplers.
---
libs/vkd3d-shader/hlsl_codegen.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index 5b0169ca..09a3ea4c 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -3277,9 +3277,12 @@ static void calculate_resource_register_counts(struct hlsl_ctx *ctx) { for (i = 0; i < type->reg_size[k]; ++i) { - /* Samplers are only allocated until the last used one. */ + bool is_separated = var->is_separated_resource; + + /* Samplers (and textures separated from them) are only allocated until the last + * used one. */ if (var->objects_usage[k][i].used) - var->regs[k].bind_count = (k == HLSL_REGSET_SAMPLERS) ? i + 1 : type->reg_size[k]; + var->regs[k].bind_count = (k == HLSL_REGSET_SAMPLERS || is_separated) ? i + 1 : type->reg_size[k]; } } }