Skip to main content
Skip table of contents

Runtime requirements for Apex applications

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) into System32/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 found error, they need to (re)install a current graphics driver.

  • Notes for linking: Link your Mako project against Apex.lib which in turn is linked against vulkan-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-drivers for AMD/Intel Mesa, or the proprietary NVIDIA/AMD driver packages). You should not bundle libvulkan.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:

  1. 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.

  2. 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).

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.