Merge pull request #12311 from kemenaran/fix-metal-adapter-unknown-selector

Metal: fix crash by enabling concurrent compilation only if available
This commit is contained in:
Admiral H. Curtiss 2023-11-24 21:52:32 +01:00 committed by GitHub
commit afb4be1a90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 1 deletions

View File

@ -96,8 +96,23 @@ bool Metal::VideoBackend::Initialize(const WindowSystemInfo& wsi)
Util::PopulateBackendInfoFeatures(&g_Config, adapter);
#if TARGET_OS_OSX
if (@available(macOS 13.3, *))
// This should be available on all macOS 13.3+ systems but when using OCLP drivers, some devices
// fail with "Unrecognized selector -[MTLIGAccelDevice setShouldMaximizeConcurrentCompilation:]"
//
// This concerns Intel Ivy Bridge, Haswell and Nvidia Kepler on macOS 13.3 or newer.
// (See
// https://github.com/dortania/OpenCore-Legacy-Patcher/blob/34676702f494a2a789c514cc76dba19b8b7206b1/docs/PATCHEXPLAIN.md?plain=1#L354C1-L354C83)
//
// Perform the feature detection dynamically instead.
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability"
if ([adapter respondsToSelector:@selector(setShouldMaximizeConcurrentCompilation:)])
{
[adapter setShouldMaximizeConcurrentCompilation:YES];
}
#pragma clang diagnostic pop
#endif
UpdateActiveConfig();