Browse Source

[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 <sahyno1996@gmail.com>
Reviewed-by: DraVee <dravee@eden-emu.dev>
Co-authored-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
Co-committed-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
pull/3462/head
PavelBARABANOV 3 days ago
committed by crueter
parent
commit
b8456394f1
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 8
      src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp

8
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-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
@ -148,10 +151,13 @@ Id EmitConvertU32U64(EmitContext& ctx, Id value) {
} }
Id EmitConvertF16F32(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 result = ctx.OpFConvert(ctx.F16[1], value);
const auto isOverflowing = ctx.OpIsNan(ctx.U1, result); const auto isOverflowing = ctx.OpIsNan(ctx.U1, result);
return ctx.OpSelect(ctx.F16[1], isOverflowing, ctx.Constant(ctx.F16[1], 0), 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) { Id EmitConvertF32F16(EmitContext& ctx, Id value) {

Loading…
Cancel
Save