vkd3d-shader/fx: Add a helper to print literals.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov
2025-06-07 20:53:20 +02:00
committed by Henri Verbeet
parent b098af3ef8
commit d403705de9
Notes: Henri Verbeet 2025-06-11 20:37:36 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1559

View File

@@ -4901,6 +4901,11 @@ static void fx_parse_fxlc_argument(struct fx_parser *parser, struct fxlc_arg *ar
arg->address = fxlvm_read_u32(code);
}
static void fx_print_fxlc_literal(struct fx_parser *parser, uint32_t address, struct fxlvm_code *code)
{
vkd3d_string_buffer_print_f32(&parser->buffer, code->cli._4[address]);
}
static void fx_print_fxlc_argument(struct fx_parser *parser, const struct fxlc_arg *arg, struct fxlvm_code *code)
{
uint32_t count;
@@ -4917,11 +4922,11 @@ static void fx_print_fxlc_argument(struct fx_parser *parser, const struct fxlc_a
}
vkd3d_string_buffer_printf(&parser->buffer, "(");
vkd3d_string_buffer_print_f32(&parser->buffer, code->cli._4[arg->address]);
fx_print_fxlc_literal(parser, arg->address, code);
for (unsigned int i = 1; i < code->comp_count; ++i)
{
vkd3d_string_buffer_printf(&parser->buffer, ", ");
vkd3d_string_buffer_print_f32(&parser->buffer, code->cli._4[arg->address + (code->scalar ? 0 : i)]);
fx_print_fxlc_literal(parser, arg->address + (code->scalar ? 0 : i), code);
}
vkd3d_string_buffer_printf(&parser->buffer, ")");
break;