Although the Vulkan SDK is required to build an Apex-enabled Mako application, it’s not necessary to run such an application. Nor is it necessary to ship a runtime or similar with your application, as the support needed is built in to a Vulkan-compatible GPU driver. This brief guide explains what to consider for the Apex-supported platforms.
Windows
-
What users need installed: a GPU driver that includes Vulkan. That driver also installs the Vulkan Loader (
vulkan-1.dll) intoSystem32/SysWOW64. You should not ship your own loader DLL. -
What you ship: just your app. Don’t include validation layers in release builds. If users get a
vulkan-1.dll not founderror, they need to (re)install a current graphics driver. -
Notes for linking: Link your Mako project against
Apex.libwhich in turn is linked againstvulkan-1.lib(import library) at build time; this forwards to the system loader at runtime. This happens automatically if you are using a Mako Apex NuGet package.
Ubuntu / Linux (e.g., Ubuntu 22.04/24.04)
-
What users need installed: the distro’s Vulkan Loader package (
libvulkan1) plus a driver ICD (e.g.,mesa-vulkan-driversfor AMD/Intel Mesa, or the proprietary NVIDIA/AMD driver packages). You should not bundlelibvulkan.so.1 -
What you ship: just your app. Document the package prerequisites if you target minimal systems/containers.
macOS (no native Vulkan driver)
You have two viable patterns:
-
Bundle MoltenVK (Vulkan-on-Metal)
-
What you ship: MoltenVK with your app—either as a dynamic library/xcframework alongside the Vulkan Loader from the macOS SDK, or by having the loader load MoltenVK’s ICD. This is the most common production setup.
-
Result: Your app calls Vulkan; the loader finds MoltenVK; MoltenVK talks to Metal.
-
-
Static-link MoltenVK (bypass the loader)
-
What you ship: your app with MoltenVK statically linked (via
MoltenVK.xcframework). This skips the loader (so no validation layers), but it’s easy to deploy and great for App Store style distribution.
-
General guidance (all platforms)
-
Don’t ship your own loader on Windows/Linux; rely on the one from the OS/driver/distro. Use the loader to discover the user’s driver ICD(s).