vkd3d-shader/fx: Fix condition when printing literal constant arguments.

To reproduce:

float4 v;

SamplerState s
{
    BorderColor = 0.1 + v*0.2;
};

Expression should use more than one literal constant,
as a scalar in operation that involves a vector.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov
2025-02-27 13:23:41 +01:00
committed by Henri Verbeet
parent aa032f31bb
commit 9f09ac6893
Notes: Henri Verbeet 2025-03-03 18:05:37 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1397

View File

@@ -3548,7 +3548,7 @@ static void fx_4_parse_fxlc_argument(struct fx_parser *parser, uint32_t offset,
for (unsigned int i = 1; i < code->comp_count; ++i)
{
vkd3d_string_buffer_printf(&parser->buffer, ", ");
vkd3d_string_buffer_print_f32(&parser->buffer, code->cli4[arg.address + code->scalar ? 0 : i]);
vkd3d_string_buffer_print_f32(&parser->buffer, code->cli4[arg.address + (code->scalar ? 0 : i)]);
}
vkd3d_string_buffer_printf(&parser->buffer, ")");
break;