←back to thread

944 points 6a74 | 1 comments | | HN request time: 0s | source
Show context
Wowfunhappy ◴[] No.41803351[source]
> Tessellation enables games like The Witcher 3 to generate geometry. The M1 has hardware tessellation, but it is too limited for DirectX, Vulkan, or OpenGL. We must instead tessellate with arcane compute shaders

> Geometry shaders are an older, cruder method to generate geometry. Like tessellation, the M1 lacks geometry shader hardware so we emulate with compute.

Is this potentially a part of why Apple doesn't want to support Vulkan themselves? Because they don't want to implement common Vulkan features in hardware, which leads to less than ideal performance?

(I realize performance is still relatively fast in practice, which is awesome!)

replies(5): >>41803586 #>>41803686 #>>41805013 #>>41807048 #>>41811346 #
VHRanger ◴[] No.41803686[source]
> Is this potentially a part of why Apple doesn't want to support Vulkan? Because they don't want to implement common Vulkan features in hardware, which leads to less than ideal performance?

Yes, it's a big reason.

I tried to port the yuzu switch emulator to macos a few years ago, and you end up having to write compute shaders that emulate the geometry shaders to make that work.

Even fairly modern games like Mario Odyssey use geometry shaders.

Needless to say, I was not enough of a wizard to make this happen!

replies(2): >>41804084 #>>41805360 #
miohtama ◴[] No.41804084[source]
Why Apple does not just implement it? They have more resources than anyone in the world. Patents?
replies(6): >>41804267 #>>41804379 #>>41804459 #>>41805073 #>>41805741 #>>41807128 #
kelnos ◴[] No.41804267[source]
Because they don't care. They've decided that Metal is The One True Way to write 3D-accelerated apps on macOS, so they only implement the things in hardware that Metal requires.
replies(3): >>41804863 #>>41804919 #>>41805011 #
Wowfunhappy ◴[] No.41804863[source]
Maybe, but we got here because I asked "is it possible that Apple doesn't want to support Vulkan (in software) because they don't want to support the features it needs (in hardware)."

If the reason they don't support it in hardware is because they don't want to support it in software, then the logic gets a bit circular.

I'm interested in which came first, or if it's a little of both.

replies(1): >>41811747 #
1. p_l ◴[] No.41811747[source]
Vulkan very much is designed to give flexibility to hardware vendors. Where abstractions do paper over differences it's generally where it makes the abstraction cheap in runtime but you might take more code vs. less code but requiring a feature that would be otherwise optional (for example some of the complex pipeline manipulation Vs bindless)