Close

NAP Framework - Naivi.nl

Portability Initiative

Vulkan Portability

Vulkan® Portability™ fights platform fragmentation by encouraging layered implementations of Vulkan functionality over Metal, DX12 and other APIs. Vulkan Portability enables Vulkan applications to be reliably deployed across diverse platforms through standardized queries for available layered API functionality and ensuring all provided functionality is conformance tested.

NAP Framework - Naivi.nl

Vulkan on PC, Linux and MacOS.

Porting NAP Framework to Vulkan

Discover how Naivi.nl ported their NAP Framework to feature parity rapidly, optimized where possible and make sure all the NAP demos run equally well on Windows, Linux and macOS.

Read Now

Vulkan Portability for Mac/iOS

Portability - tools

Vulkan Portability layered libraries can provide extensive Vulkan functionality when running over other modern 3D APIs. However, if there are parts of Vulkan that cannot be supported at close-to-native performance levels due to the underlying API, then a Vulkan Portability implementation ships with the Portability Extension that provides a consistent way to query what API functionality is provided by that specific layered implementation.

Portability - tools

Path of Exile - Grinding Gear Games

Vulkan Portability for Mac/iOS

Portability - tools

Vulkan Portability layered libraries can provide extensive Vulkan functionality when running over other modern 3D APIs. However, if there are parts of Vulkan that cannot be supported at close-to-native performance levels due to the underlying API, then a Vulkan Portability implementation ships with the Portability Extension that provides a consistent way to query what API functionality is provided by that specific layered implementation.

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

    Find Out More

  • 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

  • The Vulkan SDK includes a MoltenVK runtime library for macOS. If you are developing a Vulkan application for macOS, it is highly recommended that you use the Vulkan SDK and the MoltenVK library included in it.

    Find Out More

  • gfx-rs is a low-level graphics and compute abstraction library in Rust. The API is based on Vulkan but adapted to be more Rust-friendly. The gfx-backend contains graphics backends for various platforms now including support for Metal (runs on macOS and iOS).

    Find Out More

Portability for Other APIs

Portability - Contributions

Vulkan is a powerful, modern API that can act as a porting target for multiple APIs to enable existing applications to run on any platform with Vulkan drivers. Below are several useful tools provided by industry contributors to assist in getting your existing applications ported on top of Vulkan.

Portability - Contributions

Dota Underlords - Valve

Portability for Other APIs

Portability - Contributions

Vulkan is a powerful, modern API that can act as a porting target for multiple APIs to enable existing applications to run on any platform with Vulkan drivers. Below are several useful tools provided by industry contributors to assist in getting your existing applications ported on top of Vulkan.

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

    Find Out More

  • DXVK is a Vulkan-based translation layer for Direct3D 9/10/11 which allows running 3D applications on Linux using Wine.

    Find Out More

  • DirectXShaderCompiler is the reference compiler for HLSL. Adding SPIR-V codegen in DirectXShaderCompiler enables the usage of HLSL as a frontend language for Vulkan shader programming.

    Find Out More

  • The Goal of this project is to create a high performance Direct3D 9 implementation using a cross-platform graphics API.

    Find Out More

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

    Find Out More

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

    Find Out More

  • clvk is a prototype implementation of OpenCL 1.2 on top of Vulkan using clspv as the compiler.

    Find Out More

Portability Quotes

Industry Support

"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

"I was initially skeptical about the use of a Vulkan translation layer to Metal, but it turns out MoltenVK enables applications using the realtime NAP Framework to run as well on macOS as they do on Linux and Windows. This is something I'd 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."

“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.”

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.