Module: vkd3d Branch: master Commit: d6ac823dd61efdff3890e89f69a4597d94e44ed0 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/d6ac823dd61efdff3890e89f69a459...
Author: Zebediah Figura zfigura@codeweavers.com Date: Wed Jun 21 12:21:19 2023 -0500
vkd3d-shader/hlsl: Don't set "allocated" for unused reserved variables.
---
libs/vkd3d-shader/hlsl_codegen.c | 7 +++---- tests/register-reservations.shader_test | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index 36b66982..37afdc2d 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -2710,11 +2710,10 @@ static void allocate_register_reservations(struct hlsl_ctx *ctx) type_string->buffer, get_regset_name(regset)); hlsl_release_string_buffer(ctx, type_string); } - else + else if (var->regs[regset].bind_count) { var->regs[regset].allocated = true; var->regs[regset].id = var->reg_reservation.reg_index; - var->regs[regset].bind_count = var->data_type->reg_size[regset]; TRACE("Allocated reserved %s to %c%u-%c%u.\n", var->name, var->reg_reservation.reg_type, var->reg_reservation.reg_index, var->reg_reservation.reg_type, var->reg_reservation.reg_index + var->regs[regset].bind_count); @@ -4124,10 +4123,10 @@ int hlsl_emit_bytecode(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry if (TRACE_ON()) rb_for_each_entry(&ctx->functions, dump_function, ctx);
- allocate_register_reservations(ctx); - calculate_resource_register_counts(ctx);
+ allocate_register_reservations(ctx); + allocate_temp_registers(ctx, entry_func); if (profile->major_version < 4) { diff --git a/tests/register-reservations.shader_test b/tests/register-reservations.shader_test index f5b3da17..23d4ae5c 100644 --- a/tests/register-reservations.shader_test +++ b/tests/register-reservations.shader_test @@ -114,7 +114,7 @@ probe all rgba (4.0, 4.0, 4.0, 99.0)
% Overlapping reservations, both overlapping objects are unused. -[pixel shader todo] +[pixel shader] Texture2D tex1 : register(t0); Texture2D tex2 : register(t0); Texture2D tex3; @@ -125,12 +125,12 @@ float4 main() : sv_target }
[test] -todo draw quad +draw quad probe all rgba (1.0, 1.0, 1.0, 99.0)
% Overlapping reservations -[pixel shader todo] +[pixel shader] Texture2D tex1 : register(t2); Texture2D tex2 : register(t2);
@@ -140,5 +140,5 @@ float4 main() : sv_target }
[test] -todo draw quad +draw quad probe all rgba (2.0, 2.0, 2.0, 99.0)