Posted on

Graphics Drivers & Validation

Vulkan, OpenGL, and Metal driver configuration for Wawona across macOS, iOS, and Android.


Quick Reference

PlatformNative Vulkan?Default DriverAlternatives
macOSNo (Metal)MoltenVKKosmicKrisp
iOSNo (Metal)MoltenVKKosmicKrisp
AndroidYesSystemSwiftShader, Turnip

Driver Settings

Configure graphics drivers in Settings → Graphics.

Vulkan Drivers

PlatformOptionsDefault
macOSNone, MoltenVK, KosmicKrispmoltenvk
iOSNone, MoltenVK, KosmicKrispmoltenvk
AndroidNone, SwiftShader, Turnip, Systemsystem
  • MoltenVK — Mature Vulkan-over-Metal implementation
  • KosmicKrisp — Mesa-based Vulkan-on-Metal (experimental)
  • SwiftShader — Software Vulkan renderer (fallback)
  • Turnip — Qualcomm Adreno Vulkan driver

OpenGL Drivers

PlatformOptionsDefault
macOSNone, ANGLE, MoltenGLangle
iOSNone, ANGLEangle
AndroidNone, ANGLE, Systemsystem

Driver Validation (CTS)

Run Khronos Conformance Test Suites to validate your driver:

# Quick Vulkan probe (JSON output)
nix run .#graphics-smoke

# Full validation (smoke + Vulkan CTS + GL CTS)
nix run .#graphics-validate-macos

# iOS Vulkan CTS (in simulator)
nix run .#vulkan-cts-ios

# Android CTS (requires adb)
nix run .#vulkan-cts-android
nix run .#graphics-validate-android

All CTS Outputs

OutputPlatformDescription
graphics-smokemacOSVulkan probe, JSON output
graphics-validate-macosmacOSFull validation suite
graphics-validate-iosmacOS hostiOS Simulator Vulkan CTS
graphics-validate-androidAnyAndroid CTS via adb
vulkan-ctsmacOSKhronos Vulkan CTS
gl-ctsmacOSKhronos OpenGL/GLES CTS

Results are saved in ./graphics-validate-results/.


macOS Driver Override

Override the Vulkan driver via environment variable:

# Use MoltenVK explicitly
VK_DRIVER_FILES=/path/to/MoltenVK_icd.json nix run .#graphics-smoke

iOS Static Drivers

All iOS graphics drivers must be static libraries (.a) — dynamic libraries are not allowed by Apple.

DriverPurpose
KosmicKrispVulkan over Metal
MoltenVKVulkan over Metal
ANGLEOpenGL ES over Metal

Only one Vulkan implementation can be linked at build time.


Troubleshooting

IssueFix
"No Vulkan loader"Ensure vulkan-loader in closure; use MoltenVK or KosmicKrisp
"deqp-vk not found"Run nix build .#vulkan-cts first
iOS simulator not bootingInstall iOS runtime via Xcode: xcrun simctl list runtimes
Android "device offline"adb kill-server && adb start-server
GL CTS missing dataEnsure --deqp-archive-dir points to built archive