diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp index a88f1b7c40..b766f4cbcd 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -148,7 +150,10 @@ Id EmitConvertU32U64(EmitContext& ctx, Id value) { } Id EmitConvertF16F32(EmitContext& ctx, Id value) { - return ctx.OpFConvert(ctx.F16[1], value); + const auto result = ctx.OpFConvert(ctx.F16[1], value); + const auto isOverflowing = ctx.OpIsNan(ctx.U1, result); + return ctx.OpSelect(ctx.F16[1], isOverflowing, ctx.Constant(ctx.F16[1], 0), result); + //return ctx.OpFConvert(ctx.F16[1], value); } Id EmitConvertF32F16(EmitContext& ctx, Id value) {