Apple Rejects iOS App for Using MoltenVK (Vulkan Over Metal)
phoronix.com
phoronix.com
>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 (natb@valvesoftware.com) 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.
https://www.phoronix.com/forums/forum/phoronix/latest-phoron...
So, no. Apple isn't out to get MoltenVK. On the contrary, they have been helping improve it's performance.
> We were alerted today by an indie game studio that one of their iOS games is now rejected by Apple over its MoltenVK usage. Specifically, the game was rejected for "non-public API" usage. Apple's rejection letter cites the use of non-public interfaces around IOSurface, which is used directly by MoltenVK.
Same reason they refused to provide cross platform Vulkan to begin with. And it's not a good reason obviously.
The article omitted the critical detail about which private API was used. I have received one of those letters before and they should contain those details. The fact that the article omitted that information makes it sound like they want to start a controversy instead of admitting a library developer probably made an easily remedied mistake. They were hoping for low-information-high-opinion internet audience to drive traffic.
If this game used Metal directly with no involvement of MoltenVK at all, it’d still get rejected if it as long as that IOSurface private API is in use. The title is borderline clickbait.
1. Apple didn't provide Vulkan support.
2. Developers of MoltenVK found "public" Metal API to be inadequate, and used something that Apple considers not public to implement Vulkan translation.
3. Apple found an excuse to ban usage of MoltenVK under pretense that their non public APIs shouldn't be used.
Surely, Apple could:
1. Provide Vulkan to begin with.
2. Provide public APIs in Metal that are adequate to implement Vulkan.
But doing that would reduce Apple's lock-in, so they are resorting to jerk moves. Apple being Apple.
I suppose you are asking, why should developers strive to use cross platform API, instead of using Apple's lock-in. The answer is simple - reducing work duplication. It's same reason you'd avoid using ActiveX, Silverlight and Flash and would use standard HTML/JavaScript.
Apple obviously are irritated that someone found a way to break their lock-in, so they are looking for ways to mess things up under some side pretenses.
AMD and Khronos were open about their plans and Apple was/is part of the group.
To answer your question, Khronos are trying to promote an open free API to help developers save time and effort, picking Metal as a closed source and late arrival would be unworkable.
This app used MoltenVK which used private APIs so Apple banned it, like all other applications that do so. Case closed.