Apple has declined to update an unnamed game by an indie studio which leverages MoltenVK. This allows developers to use Vulkan in their programs, but the library then goes out and makes Metal API calls allowing the apps to run on iOS and macOS. The studio was using MoltenVK 1.1.73 without any modification, which indicates that Apple could be souring to the technology.
According to the developers, Apple’s reason for rejecting the update was because the app used “non-public API” calls, specifically relating to IOSurface which MoltenVK uses directly.
Apple initially allowed the game to be published to the App Store in May even though it used MoltenVK. However, the latest update - which is only a bug fix release with no major changes - was rejected over its use of a non-public API.
If it turns out that MoltenVK does use private APIs in order to function, it’ll be interesting to see whether the tool receives an update to remove support for those calls. If however it turns out these calls are essential, it’ll also be good to see whether they can work something out with Apple. As it stands now, Apple could just change those private APIs, and apps that use them might break.
Update: An employee from Valve posted that the rejection was likely legitimate, they said:
"I know app rejections and the Apple ecosystem rules can be frustrating and cause a lot of consternation, but in this case I *think* this is likely a legitimate rejection for using the kIOSurfaceIsGlobal=true flag when creating an IOSurface - Apple documents this as private and not allowed by sandboxed apps on iOS, and there are legitimate security & sandbox reasons to not support IOSurfaces that can be guessed and mapped to a foreign process using IOSurfaceLookup(). It's likely Apple's static analyzer found this during submission. We (Valve) worked to add this type of IOSurface-backed MTLTexture for Vulkan VR support for macOS and I suspect it slipped into the iOS build inadvertently - we don't need that support on iOS (yet? If somebody knows the developer and can point them my way (firstname.lastname@example.org) I'd be happy to figure out if this was the only issue, and I'll create a PR for MoltenVK to drop the global flag out of the iOS build.
Apple graphics folks I work with are fine with MoltenVK, and many Apple and AMD folks have provided concrete technical feedback to improve the performance of MoltenVK, and we have uncovered bugs in HLSL->GLSL->SPIR-V->MSL together which should help make the entire graphics ecosystem stronger."
Let us know in the comments, what you think the reason is behind this incident. Is Apple just protecting its walled-garden or is it MoltenVK using private APIs?