mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-07-09 17:25:18 -06:00
Fallback unsupported database SPU decoder on ARM64 (#18651)
## Summary - fall back from database-applied `SPU Decoder: Recompiler (ASMJIT)` to `Recompiler (LLVM)` on ARM64 builds during boot - log the fallback in `fixup_settings()` instead of letting SPU initialization fail later ## Problem `Need for Speed: Most Wanted [BLES01659]` receives `SPU Decoder: Recompiler (ASMJIT)` from the config database. On ARM64 builds that decoder is unsupported, which caused RPCS3 to abort during SPU initialization with `Unsupported spu decoder` while the UI remained on the loading screen. ## Validation - built RPCS3 locally on macOS Apple Silicon - booted `BLES01659` through the database config path with the custom per-game override temporarily removed - verified the log now shows the ARM64 fallback warning and `SPU Decoder: Recompiler (LLVM)` instead of the previous fatal error - observed the title proceed past the old boot blocker into active RSX program compilation --------- Co-authored-by: Elad <18193363+elad335@users.noreply.github.com>
This commit is contained in:
parent
03647fdb4e
commit
6647c5a2bd
@ -336,6 +336,20 @@ static void fixup_settings(const psf::registry* _psf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(ARCH_ARM64)
|
||||||
|
if (g_cfg.core.spu_decoder == spu_decoder_type::asmjit)
|
||||||
|
{
|
||||||
|
#ifdef LLVM_AVAILABLE
|
||||||
|
constexpr auto arm64_spu_fallback = spu_decoder_type::dynamic;
|
||||||
|
#else
|
||||||
|
constexpr auto arm64_spu_fallback = spu_decoder_type::_static;
|
||||||
|
#endif
|
||||||
|
sys_log.warning("The setting '%s' is currently not supported on ARM64 builds and will therefore be changed from '%s' to '%s' during emulation.",
|
||||||
|
g_cfg.core.spu_decoder.get_name(), spu_decoder_type::asmjit, arm64_spu_fallback);
|
||||||
|
g_cfg.core.spu_decoder.set(arm64_spu_fallback);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (const u32 psf_resolution = _psf ? psf::get_integer(*_psf, "RESOLUTION", 0) : 0)
|
if (const u32 psf_resolution = _psf ? psf::get_integer(*_psf, "RESOLUTION", 0) : 0)
|
||||||
{
|
{
|
||||||
const std::map<video_resolution, u32> resolutions
|
const std::map<video_resolution, u32> resolutions
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user