mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader/hlsl: Always cast to bool in if() statements.
We emit sm4 if_nz for these, but that does a bitwise comparison to zero, which is wrong for floats.
This commit is contained in:
parent
183172eff4
commit
a8b0c03912
Notes:
Alexandre Julliard
2024-01-23 23:04:27 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/577
@ -6763,6 +6763,15 @@ selection_statement:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_condition_type(ctx, condition);
|
||||||
|
|
||||||
|
if (!(condition = add_cast(ctx, $4, condition, hlsl_get_scalar_type(ctx, HLSL_TYPE_BOOL), &@4)))
|
||||||
|
{
|
||||||
|
destroy_block($6.then_block);
|
||||||
|
destroy_block($6.else_block);
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(instr = hlsl_new_if(ctx, condition, $6.then_block, $6.else_block, &@2)))
|
if (!(instr = hlsl_new_if(ctx, condition, $6.then_block, $6.else_block, &@2)))
|
||||||
{
|
{
|
||||||
destroy_block($6.then_block);
|
destroy_block($6.then_block);
|
||||||
@ -6772,8 +6781,6 @@ selection_statement:
|
|||||||
destroy_block($6.then_block);
|
destroy_block($6.then_block);
|
||||||
destroy_block($6.else_block);
|
destroy_block($6.else_block);
|
||||||
|
|
||||||
check_condition_type(ctx, condition);
|
|
||||||
|
|
||||||
$$ = $4;
|
$$ = $4;
|
||||||
hlsl_block_add_instr($$, instr);
|
hlsl_block_add_instr($$, instr);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user