Remove @synchronized from MTLFunction specialization to avoid reentrant hang.
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm
index 0c0b3ed..55da1dc 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm
@@ -470,14 +470,12 @@
unique_lock<mutex> lock(_completionLock);
compile(lock, ^{
- @synchronized (_owner->getMTLDevice()) {
- [mtlLibrary newFunctionWithName: funcName
- constantValues: constantValues
- completionHandler: ^(id<MTLFunction> mtlFunc, NSError* error) {
- bool isLate = compileComplete(mtlFunc, error);
- if (isLate) { destroy(); }
- }];
- }
+ [mtlLibrary newFunctionWithName: funcName
+ constantValues: constantValues
+ completionHandler: ^(id<MTLFunction> mtlFunc, NSError* error) {
+ bool isLate = compileComplete(mtlFunc, error);
+ if (isLate) { destroy(); }
+ }];
});
return [_mtlFunction retain];