From b8456394f1bdbdc20aad0f27150681c96136823b Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Wed, 4 Feb 2026 00:44:03 +0100 Subject: [PATCH] [spirv] Fix F16 conversion on Android (skip NaN check) (#3458) Fixes the yellow texture issue in Outer Wilds on Android. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3458 Reviewed-by: Maufeat Reviewed-by: DraVee Co-authored-by: PavelBARABANOV Co-committed-by: PavelBARABANOV --- .../backend/spirv/emit_spirv_convert.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp index bfe71358b1..115e9ed4ed 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 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,10 +151,13 @@ Id EmitConvertU32U64(EmitContext& ctx, Id value) { } Id EmitConvertF16F32(EmitContext& ctx, Id value) { +#ifdef ANDROID + return ctx.OpFConvert(ctx.F16[1], value); +#else 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); +#endif } Id EmitConvertF32F16(EmitContext& ctx, Id value) {