Metal: enable concurrent compilation only if available
Bug: https://bugs.dolphin-emu.org/issues/13404
On macOS 13.6 / Intel HD 5000, Dolphin crashes with this message:
> -[MTLIGAccelDevice setShouldMaximizeConcurrentCompilation:]: unrecognized selector
This should be available on all macOS 13.3+ systems – but when using OCLP drivers,
some devices use an older version of Metal.framework, which doesn't expose the selector.
This concerns Intel Ivy Bridge, Haswell and Nvidia Kepler when using OCLP on macOS 13.3
or newer.
(See
34676702f4/docs/PATCHEXPLAIN.md
?plain=1#L354C1-L354C83)
As the behavior is an optional optimization anyway, perform a dynamic
detection to avoid crashing if the feature is not available.
This commit is contained in:
parent
3a3a935b9a
commit
0ecfaf3b9e
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue