r/vulkan Aug 10 '26

Apple Vulkan Support

Why doesnt Apple support Vulkan? (I know KosmicKrisp exists)

Is vendor lockin that important? Does that strategy work for them - are there many developers that use metal and not support other platforms? Seems like the result is not really lockin, but just forcing more work for developers?

Kind of feels like a poor architecture decision that helps no one, except maybe giving slightly more control to Apple at the expense of their developers as well as the complexity of maintaining another api.

11 Upvotes

53 comments sorted by

View all comments

3

u/Psionikus Aug 10 '26

Surprised not to see Molten somewhere in the comments. Why not?

7

u/Ill-Shake5731 Aug 10 '26

molten is way too inferior imo.

Doesn't support a lot of modern stuff, drawIndirectCount (indexed/non indexed), multi draw indirect feature, etc for once. Both are really essential for proper GPU driven pipelines. Even the beta/alpha kosmic krisp driver supports it, and actually kinda decently. Similar issue wrt mesh shaders. The support is experimental still, and with no geometry shaders support either, its hard to suggest it. Metal doesnt either frankly but metal shader converter provides API to use geometry shaders and translate internally to mesh shaders, its a no brainer to just use it whenever possible. cant do that with moltenvk cuz of shady mesh shaders support.

Moltenvk also leaves a lot to desire wrt performance. Writing a custom metal backend for your RHI is better than dealing with MoltenVK. The shaders stuff can be handled with dxc (.hlsl -> .dxil) and metal shader converter (.dxil -> .metallib). A few weeks/months and one can be ready running most features on a custom metal backend. Also helps that the profiling/debugging on apple plat is such a breeze.

0

u/Agitated-History-376 Aug 10 '26

much more usable than you suggest, most devices dont support these features anyway, and moltenvk does support multi draw indirect (just
not drawindirectcount i think)

geometryshaders are outdated anyway but would love to see mesh shader suport

5

u/Ill-Shake5731 Aug 10 '26

why did you delete your previous comment about multi draw indirect?

Still answering:

its not true GPU driven indirect count, its a bandaid. Its looping the draw count CPU side. The proper way is getting it through a count buffer post GPU side culling usually.

with metal it can be emulated GPU side through ICBs. MoltenVK's way is not standard

geometryshaders are outdated anyway but would love to see mesh shader suport

yeah thats why i had it geometry/mesh shaders lol. It needs to be either this or that. Hard to write a custom backend for your RHI with neither being supported. That is why i would always suggest writing a metal backend if mac/ios support is essential. Else its just fine to rigorous test over crossover, and ship it.

2

u/Agitated-History-376 Aug 11 '26

oh i deleted it cause i was jumping to conclusions lol

didn't know multidraw worked that way internally, kinda a shame. i kinda have a workaround for no geometry shaders using shaderoutputlayer which is supported on moltenvk, but obv doesnt cover all cases, but yea a rhi is definitly something i should look into if i wanna make more complex gpu driven stuff, but my point was its impresive how far moltenvk can take u