Vulkan Portability Update January 2021

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 1 Open-Source Layering Projects Fighting Platform Fragmentation

Layers OpenGL ES Over Vulkan OpenGL OpenCL DX12 DX9-11

clspv Angle vkd3d-Proton DXVK Vulkan as Vulkan Zink porting target for clvk GLOVE vkd3d WineD3D multiple APIs

gfx-portability OpenGL Ashes Angle WineD3D

Microsoft Microsoft Microsoft ROWS: gfx-portability DX12 ‘GLOn12’ ‘CLOn12’ D3D11On12 Bring more APIs to Platforms gfx-portability DX9-11 Ashes Angle

MoltenVK clspv + MoltenGL Metal gfx-portability SPIRV-Cross? Angle

Vulkan functionality COLUMNS: Making APIs available everywhere available across platforms

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 2 Vulkan Portability

Multiple Implementations of Layered Vulkan Functionality TODAY Enable Vulkan applications on diverse platforms and APIs +more! Khronos Portability Extension Portable queries for what functionality is available through Vulkan layering

Extended Vulkan Conformance Tests Open-source tools, SDKs Gracefully handle partial functionality to enable Vulkan and libraries bring Vulkan Portability conformance - what is present must work! applications to Apple platforms over Metal Enhanced Vulkan Layers and Tools DevSim/Validation Layers flag or simulate queries for features that are not present

Fighting fragmentation by enabling Vulkan applications on platforms without native drivers through layered implementations of Vulkan functionality over Metal, DX12 and other APIs https://github.com/KhronosGroup/Vulkan-Portability

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 3 Vulkan Portability Development on Apple

Config Files hand-coded or Applications generated using vulkaninfo utility

DevSim JSON Vulkan SDK Config files Running on macOS Database gpuinfo.org Defines available Export SPIRV-Cross Vulkan Configurator: functionality on a Public Database Open-source disassembler DevSim config file selection target device. Available Vulkan functionality Converts SPIR-V shaders to DevSim Layer: simulates queries for Pre-populated per GPU/Driver/Layer/OS. Metal Shading Language selected target system subset in SDK List of entries containing Validation Layer: flags incorrect usage of Vulkan Portability data available functionality Database Upload Hardware Capability Viewer (for macOS, iOS soon) Run-time application now includes interrogation of Vulkan Portability Extension to discover available features of layered implementations

macOS / iOS / tvOS Enhanced Vulkan SDK, Vulkan to Metal API Mapping Layer Layers and Tools Vulkan Portability Extension Streamlines application development for Portable run-time queries for available functionality on the current system Apple devices. Universal Binaries supported

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 4 Example Vulkan Portability Implementations

Baseline Vulkan 1.1 with Vulkan 1.0 with extensions Vulkan Version Vulkan 1.2 in development

Metal on macOS and iOS (in Beta) API/Platforms Metal on macOS. iOS, tvOS DirectX 12 (in development) Supported and Mac Catalyst (Shipping) UWP platforms such as S, Polaris, Xbox. macOS 10.11 / iOS 9.0 and up GPUs without native drivers e.g., Intel Haswell/Broadwell OpenGL (ES)/D3D11 (in development) Implementor Community and Brenwill Workshop Community and Mozilla Licensing Royalty-free Apache 2.0 Royalty-free Apache 2.0 / MIT Used by multiple production Notes Implemented using Rust Language applications on Mac and iPhone More https://github.com/gfx-rs/gfx https://github.com/KhronosGroup/MoltenVK https://github.com/gfx-rs/portability Information https://github.com/gfx-rs/portability/releases

Example beta and prototype implementations that are expected to be Vulkan Portability conformant once the Vulkan Portability Extension and conformance tests are complete

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 5 Vulkan Portability Timelines

Upcoming Deliverables Finalized Conformance Tests Portability Extension 1.0

MoltenVK released in open source for macOS and iOS

MoltenVK 1.1 ships Vulkan CTS with support for Vulkan SDK Validation ported to macOS Vulkan Portability Vulkan 1.1 features, Layers support gfx-rs DX11 Provisional 48 Vulkan extensions, Portability Extension. backend in alpha - Extension released Metal 3.0, Apple Vulkan Configurator Vulkan CTS joins DX12 and and shipped in Silicon, Mac Catalyst manages DevSim and ported to macOS Metal backends MoltenVK and gfx-rs and tvOS config files GDC August September Fall January 2018 2018 2020 2020 2021

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 6 Vulkan Apps on macOS and iOS using MoltenVK

“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 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.” Coen Klosters, Lead Developer of NAP Framework and Technical Director at Naivi

Multiple iOS and macOS apps shipping //.net/ e.g., Forsaken RPCS3 PlayStation 3 Production on Remastered on macOS macOS with up to Crossover Windows 50% more perf than CodeWeavers and Apple’s OpenGL compatibility layer https://google.github.io/filament/ Square Enix ship Final //-emu.org/ Fantasy XIV on macOS First iOS Apps using Google Filament PBR Dolphin GameCube MoltenVK ship Renderer on Mac and Wii Emulator through working on macOS

https://www.napframework.com/

https://www.winehq.org/ Artifact ships on Underlords ships on Naivi ports NAP //diligentgraphics.com/diligent-engine/ //www.qt.io/blog/2018/05/30/-for--on- Initial ports of DX Steam for macOS - Steam - first Valve real-time Qt Running on macOS games in progress first Valve Vulkan- Diligent Engine Vulkan app on both performance through MoltenVK using Vulkan on macOS only app on macOS runs on macOS macOS and iOS engine to macOS June September November January June January 2018 2018 2018 2019 2019 2021

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 7 Khronos-Related GitHub Projects

Vulkan-Docs

SPIRV-Cross

Ashes

https://star-history.t9t.io/#khronosgroup/&khronosgroup/gltf&khronosgroup/vulkan-docs&khronosgroup/spirv-cross&gfx-rs/gfx&DragonJoker/Ashes

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2021 - Page 8