Vulkan Portability Update January 2021
Total Page:16
File Type:pdf, Size:1020Kb
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 Windows 10 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 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.” Coen Klosters, Lead Developer of NAP Framework and Technical Director at Naivi Multiple iOS and macOS apps shipping //rpcs3.net/ e.g., Forsaken RPCS3 PlayStation 3 Production Dota 2 on Remastered Emulator 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 //dolphin-emu.org/ Fantasy XIV on macOS First iOS Apps using Google Filament PBR Dolphin GameCube MoltenVK ship Renderer on Mac and Wii Emulator through app store 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/vulkan-for-qt-on-macos 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/moltenvk&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.