Driver picker, SHM vs GPU, userspace DRM/KMS/GBM, tvOS ANGLE/MoltenVK on Metal, watchOS SpriteKit present and blocked GL/VK.

Pixels come from wl_shm (CPU) or GPU buffers imported through userspace DRM/KMS/GBM (iland). iland emulates connector/CRTC/plane/GBM. It never opens /dev/dri or /dev/kgsl.

On macOS Mode A, present is an in-window Metal layer while Aqua stays up. On Classic Desktop Replacement (Mode B dylib + wwn-igetty), WindowServer is down and iland presents fullscreen Metal. See iland and Desktop and LockScreen.

Drivers

APIApple GPU targetsAndroid
VulkanKosmicKrisp (Apple Silicon + macOS 26+ default), else MoltenVKSystem or SwiftShader
GLES / GLANGLEANGLE or system

KosmicKrisp is macOS only. iOS, iPadOS, visionOS, and tvOS use MoltenVK. No kernel DRM/KGSL ICDs. No opening /dev/dri or /dev/kgsl.

Platform ceilings

  • tvOS GPU is available. OpenGL ES goes through ANGLE to Metal. Vulkan goes through MoltenVK to Metal. The Vulkan loader does not work on tvOS, so clients dispatch straight to the ICD (WWN_VULKAN_LIBRARY). No KosmicKrisp. No IOKit.
  • watchOS present is SpriteKit GPU blit of SHM frames. watchOS GL/VK is blocked (no public Metal). WWN_WATCHOS_METAL=1 is research only and never in the store Watch IPA.

Settings → Graphics picks the ICD. Nested clients and waypipe follow that choice.