vkd3d-shader/spirv: Handle uint2 to double bitcast in spirv_compiler_emit_mov().

Necessary for MakeDouble if the dst is SSA.
This commit is contained in:
Conor McCarthy 2024-04-03 13:40:55 +10:00 committed by Alexandre Julliard
parent c8eb7e1c81
commit 1c61776c18
Notes: Alexandre Julliard 2024-04-09 15:44:53 -05: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/749

View File

@ -7283,8 +7283,12 @@ static void spirv_compiler_emit_mov(struct spirv_compiler *compiler,
}
general_implementation:
write_mask = (src->reg.type == VKD3DSPR_IMMCONST64 && !data_type_is_64_bit(dst->reg.data_type))
? vsir_write_mask_64_from_32(dst->write_mask) : dst->write_mask;
write_mask = dst->write_mask;
if (src->reg.type == VKD3DSPR_IMMCONST64 && !data_type_is_64_bit(dst->reg.data_type))
write_mask = vsir_write_mask_64_from_32(write_mask);
else if (!data_type_is_64_bit(src->reg.data_type) && data_type_is_64_bit(dst->reg.data_type))
write_mask = vsir_write_mask_32_from_64(write_mask);
val_id = spirv_compiler_emit_load_src(compiler, src, write_mask);
if (dst->reg.data_type != src->reg.data_type)
{