diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c index 53578ce71..1c7ed0d9e 100644 --- a/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d-shader/dxil.c @@ -2271,9 +2271,19 @@ static inline bool sm6_value_is_constant(const struct sm6_value *value) static bool sm6_value_is_constant_zero(const struct sm6_value *value) { - if (value->value_type != VALUE_TYPE_CONSTANT || value->type->class != TYPE_CLASS_INTEGER) + if (value->value_type != VALUE_TYPE_CONSTANT) return false; + switch (value->type->class) + { + case TYPE_CLASS_INTEGER: + case TYPE_CLASS_FLOAT: + break; + + default: + return false; + } + if (value->type->u.width == 64) return value->u.constant.immconst.immconst_u64[0] == 0; else