---
title: Porting
url: 'https://vulkan.org/porting'
markdown: 'https://vulkan.org/porting.md'
date: '2026-07-08'
---

# Porting

PORTABILITY ON SYSTEMS WITHOUT NATIVE VULKAN DRIVERS AND FOR NON-VULKAN APPS 
## Vulkan Porting Layers

Vulkan is the only modern GPU API that is available on multiple operating systems—helping applications reach a cross-platform user base. Layered API implementations leveraging Vulkan go even further in fighting platform fragmentation. Vulkan efficiently supports translation layers from other APIs, such as Metal, to enable non-Vulkan applications on Vulkan-enabled platforms. Vulkan has also been layered over platform-specific APIs, enabling Vulkan applications to run where native Vulkan drivers are not available, such as iOS and macOS.

 ![Vulkan Porting Layers](user/user/images/featured/2026-vulkan-portability-09-09_v7.webp)  Vulkan Porting Layers

 PORTABILITY ON SYSTEMS WITHOUT NATIVE VULKAN DRIVERS AND FOR NON-VULKAN APPS 
## Vulkan Porting Layers

 Vulkan is the only modern GPU API that is available on multiple operating systems—helping applications reach a cross-platform user base. Layered API implementations leveraging Vulkan go even further in fighting platform fragmentation. Vulkan efficiently supports translation layers from other APIs, such as Metal, to enable non-Vulkan applications on Vulkan-enabled platforms. Vulkan has also been layered over platform-specific APIs, enabling Vulkan applications to run where native Vulkan drivers are not available, such as iOS and macOS.

- - [ KosmicKrisp - A Vulkan conformant driver on Metal ](https://www.lunarg.com/the-state-of-vulkan-on-apple-jan-2026/)Why you should be developing for the Apple ecosystem with Vulkan, and how to do it
    - [ Ashes: Vulkan on OpenGL and DX9/DX10/DX11 ](https://github.com/DragonJoker/Ashes)Ashes is a drop-in replacement or ICD to Vulkan. It allows to write Vulkan code, and to select the rendering API that will be used. It also comes with ashespp, a C++ wrapper for Vulkan.
    - [ Dozen: Vulkan on DX12 ](https://www.phoronix.com/news/Vulkan-On-Direct3D-12-Dzn-Merge)Microsoft engineers have added support for the Agility SDK to their Mesa D3D12 driver. The Agility SDK now has support for Vulkan’s “Dzn” (Dozen) driver on D3D12.
    - [ MoltenVK: Vulkan on Metal ](https://github.com/KhronosGroup/MoltenVK)**Deprecation notice:** Khronos has deprecated MoltenVK, its Vulkan-on-Metal implementation. This repository is now maintained by the community on a best-effort basis. For Vulkan on Metal, Khronos now recommends KosmicKrisp on Apple Silicon Macs. MoltenVK remains the recommended option for Intel-based Macs and for iOS.

        You can get KosmicKrisp in either of two ways: 
        1. Install the latest macOS Vulkan SDK from [vulkan.lunarg.com](https://vulkan.lunarg.com/)
        2. Build the KosmicKrisp driver from the Mesa project
- - [ Zink: OpenGL on Vulkan (Linux) ](https://docs.mesa3d.org/drivers/zink.html)The Zink driver is a Gallium driver that emits Vulkan API calls instead of targeting a specific GPU architecture. This can be used to get full desktop OpenGL support on devices that only support Vulkan.
    - [ clvk: OpenCL on Vulkan ](https://github.com/kpet/clvk)clvk is a prototype implementation of OpenCL 3.0 on top of Vulkan using clspv as the compiler.
    - [ GLOVE: OpenGL ES and EGL on Vulkan ](https://github.com/stjordanis/GLOVE-1)GLOVE (GL Over Vulkan) is a cross-platform software library that acts as an intermediate layer between an OpenGL ES application and Vulkan.
    - [ Angle: OpenGL ES on Vulkan ](https://github.com/google/angle)ANGLE allows users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform.
    - [ vkd3d-proton: DX12 on Vulkan ](https://github.com/HansKristian-Work/vkd3d-proton)VKD3D-Proton is a fork of VKD3D, which aims to implement the full Direct3D 12 API on top of Vulkan. The project serves as the development effort for Direct3D 12 support in Proton.
    - [ vkd3d: DX12 on Vulkan ](https://wiki.winehq.org/Vkd3d)Vkd3d is a 3D graphics library built on top of Vulkan. It has an API very similar, but not identical, to Direct3D 12. Wine uses vkd3d libraries for its implementation of Direct3D 12.
    - [ DXVK: D3D 9/10/11 on Vulkan ](https://github.com/doitsujin/dxvk)DXVK is a Vulkan-based translation layer for Direct3D 9/10/11 which allows running 3D applications on Linux using Wine.
    - [ WineD3D: D3D 9/10/11 on Vulkan ](https://www.winehq.org/)WineD3D is a translation layer from Direct3D and DirectDraw API calls into OpenGL or Vulkan
- - [ Wine ](https://www.winehq.org/)Wine (originally an acronym for "Wine Is Not an Emulator") is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD.
    - [ CodeWeavers CrossOver ](https://www.codeweavers.com/crossover)CrossOver uses Wine and VKD3D to let you run many Microsoft applications on your Linux and Mac platforms without the need for Windows emulators.
- - [ Vulkan GPUInfo ](https://vulkan.gpuinfo.org/)The Vulkan Capabilities Viewer is a developer tool for probing the hardware capabilities of Vulkan and MoltenVK (Vulkan over Metal). The Vulkan GPU hardware capability viewer is a community-driven Vulkan hardware database, an online tool for developers that want to check out GPU hardware capabilities. Vulkan Capabilities View works across multiple OSes including Windows, Linux, Android, macOS and iOS. This database and the client application are developed and maintained by Sascha Willems in his spare time.
    - [ Vulkan Capabilities Viewer (iOS) ](https://apps.apple.com/us/app/vulkan-capabilities-viewer/id1552796816)For developers using Vulkan layered over the Metal graphics API, this tool enumerates all the hardware capabilities and limitations of the device it is run on.
- - [ KosmicKrisp - A Vulkan conformant driver on Metal ](https://www.lunarg.com/the-state-of-vulkan-on-apple-jan-2026/)Why you should be developing for the Apple ecosystem with Vulkan, and how to do it
    - [ Vulkanised 2023: Layering Vulkan Over Metal ](https://www.youtube.com/watch?v=l6UvlbT0oO4)This talk was presented at Vulkanised 2023 (Feb 7-9, Munich Germany) and discusses application portability with Vulkan on Metal using MoltenVK.
    - [ Vulkanised 2023: Vulkan Development for Apple Environments ](https://www.youtube.com/watch?v=D-tBF57XhtY)This talk was presented at Vulkanised 2023 (Feb 7-9, Munich Germany) and discusses developing for Apple with the Vulkan SDK.
    - [ Zink Presentation (Khronos) ](https://www.khronos.org/assets/uploads/developers/presentations/Vulkan-09-Zink-OpenGL-on-Vulkan-SIGGRAPH-Jul19.pdf)Background presentation on the Zink project and it's how it fits with Mesa

 DEPLOY VULKAN APPLICATIONS ON SYSTEMS WITHOUT NATIVE VULKAN DRIVERS 
## Vulkan Portability Initiative

Vulkan® Portability™ fights platform fragmentation by enabling the consistent use of layered implementations of Vulkan functionality over Metal and other APIs. The Vulkan Portability extension standardizes queries for available layered API functionality and enables all provided functionality to be conformance tested. MoltenVK is a leading example of a layered Vulkan Portability implementation that runs over Apple’s Metal API.

 ![Vulkan Portability Initiative](user/images/featured/SteamArmour%20(2).jpg)  Path of Exile - Grinding Gear Games

 DEPLOY VULKAN APPLICATIONS ON SYSTEMS WITHOUT NATIVE VULKAN DRIVERS 
## Vulkan Portability Initiative

 Vulkan® Portability™ fights platform fragmentation by enabling the consistent use of layered implementations of Vulkan functionality over Metal and other APIs. The Vulkan Portability extension standardizes queries for available layered API functionality and enables all provided functionality to be conformance tested. MoltenVK is a leading example of a layered Vulkan Portability implementation that runs over Apple’s Metal API.

- A provisional version of Vulkan Portability Extension 1.0 was released in September 2020 and is shipping today in MoltenVK

     [ Find Out More  ](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_portability_subset.html)
- - [  Read the Blog ](https://www.khronos.org/blog/new-release-of-vulkan-sdk)
    - [  Get the SDK from LunarG ](https://vulkan.lunarg.com/sdk/home)
- This repository provides a focus and tools to help application developers understand and provide input to the Vulkan Portability initiative, including the VK\_KHR\_portability\_subset Vulkan extension.

     [ Find Out More  ](https://github.com/KhronosGroup/Vulkan-Portability)
- **Deprecation notice:** Khronos has deprecated MoltenVK, its Vulkan-on-Metal implementation. This repository is now maintained by the community on a best-effort basis. For Vulkan on Metal, Khronos now recommends KosmicKrisp on Apple Silicon Macs. MoltenVK remains the recommended option for Intel-based Macs and for iOS.

    You can get KosmicKrisp in either of two ways: 
    1. Install the latest macOS Vulkan SDK from [vulkan.lunarg.com](https://vulkan.lunarg.com/)
    2. Build the KosmicKrisp driver from the Mesa project

     [ Find Out More  ](https://github.com/KhronosGroup/MoltenVK)

## Industry Support for MoltenVK

 > "All in all, we’re pleased with what we’ve managed to accomplish. A barrier that many, including ourselves, originally thought unbreakable has been cracked wide open, and the best part is: this is just the beginning. With not only our own efforts to improve the core emulation, but upcoming updates to Metal 3 and the constantly improving MoltenVK, the experience is only going to get better."
> 
>    [Ryujinx Switch Emulator Uses MoltenVK to Ship on Mac](https://blog.ryujinx.org/the-impossible-port-macos/)

> "We will be relying on MoltenVK to be the benchmark that we compare our native Metal backend against going forward. And it should perform that role excellently, as it is bringing our well tested Vulkan backend to macOS through a very well supported translation layer from a team that has earned our trust. So, while our new native Metal backend is faster, MoltenVK is here to stay. Together, they will help us deliver the most consistently reliable and performant experience that we can give to our macOS users"
> 
>    [Dolphin Emulator Project](https://dolphin-emu.org/blog/2022/09/13/dolphin-progress-report-july-and-august-2022/#50-16965-macos-add-metal-backend-by-tellowkrinkle-and-50-17206-moltenvk-update-to-v1111-by-oatmealdome)

> "I was initially skeptical about the use of a Vulkan translation layer to Metal, but it turns out MoltenVK enables applications using the real-time NAP Framework to run as well on macOS as they do on Linux and Windows. This is something I would like to highlight and stress the importance of - without the portability of Vulkan we would have been forced to implement a special Metal rendering backend just for macOS users, something not doable for a relatively small company such as ours. Plus switching to Vulkan dramatically improved render-times for Mac users."
> 
>  Coen Klosters  [Lead Developer of NAP Framework and Technical Director at Naivi](https://www.napframework.com/)

> "Valve extended Dota 2 to use Vulkan and ported that version to macOS using MoltenVK. This port achieved significantly higher performance than the native Apple OpenGL® drivers. Valve has now shipped multiple games titles on macoS and iOS using MoltenVK and we believe that Vulkan Portability can significantly reduce development and porting costs for any developer supporting multiple platforms."
> 
>  Pierre-Loup Griffais  [Valve](https://www.valvesoftware.com/)

> “With MoltenVK, we've worked hard to bring a consistent Vulkan-based API to macOS and iOS while maintaining the performance improvements required by modern game developers.”
> 
>  Bill Hollings  [President of The Brenwill Workshop](http://brenwill.com/)

> "MoltenVK has been hugely valuable to us by providing the ability to execute our Vulkan code on Apple platforms without any discernable performance penalty versus writing a native Metal implementation but more importantly without requiring any modification of the code itself."
> 
>  Jerran Schmidt  [Senior Principal Engineer, Graphics at Autodesk](https://www.khronos.org/blog/vulkan-for-cloud-based-transient-compute)

---

## Navigation

- Previous: [Tools](https://vulkan.org/tools.md)
- Next: [Made with Vulkan](https://vulkan.org/made-with-vulkan.md)
