mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Don't cast all expressions to float.
Instead, allow half, bool, int, and uint, expressions that map to the same float op to reach sm1_generate_vsir_instr_expr().
This commit is contained in:
committed by
Henri Verbeet
parent
0ce2b1359f
commit
7cb1970952
Notes:
Henri Verbeet
2025-03-03 18:04:53 +01:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1391
@@ -298,6 +298,35 @@ bool hlsl_type_is_patch_array(const struct hlsl_type *type)
|
||||
|| type->e.array.array_type == HLSL_ARRAY_PATCH_OUTPUT);
|
||||
}
|
||||
|
||||
bool hlsl_type_is_integer(const struct hlsl_type *type)
|
||||
{
|
||||
if (!hlsl_is_numeric_type(type))
|
||||
return false;
|
||||
|
||||
switch (type->e.numeric.type)
|
||||
{
|
||||
case HLSL_TYPE_BOOL:
|
||||
case HLSL_TYPE_INT:
|
||||
case HLSL_TYPE_UINT:
|
||||
return true;
|
||||
|
||||
case HLSL_TYPE_DOUBLE:
|
||||
case HLSL_TYPE_FLOAT:
|
||||
case HLSL_TYPE_HALF:
|
||||
return false;
|
||||
}
|
||||
|
||||
vkd3d_unreachable();
|
||||
}
|
||||
|
||||
bool hlsl_type_is_floating_point(const struct hlsl_type *type)
|
||||
{
|
||||
if (!hlsl_is_numeric_type(type))
|
||||
return false;
|
||||
|
||||
return !hlsl_type_is_integer(type);
|
||||
}
|
||||
|
||||
/* Only intended to be used for derefs (after copies have been lowered to components or vectors) or
|
||||
* resources, since for both their data types span across a single regset. */
|
||||
static enum hlsl_regset type_get_regset(const struct hlsl_type *type)
|
||||
|
Reference in New Issue
Block a user