Vulkan Portability Update - January 2021 - Khronos Group

Page created by Curtis Sherman
 
CONTINUE READING
Vulkan Portability Update - January 2021 - Khronos Group
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
Vulkan Portability Update - January 2021 - Khronos Group
Open-Source Layering Projects
    Fighting Platform Fragmentation

              Layers
               Over            Vulkan           OpenGL            OpenCL               OpenGL ES     DX12         DX9-11

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

                              gfx-portability
             OpenGL               Ashes                                                 Angle                     WineD3D

                                                  Microsoft         Microsoft                                      Microsoft     ROWS:
               DX12           gfx-portability
                                                 ‘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 Update - January 2021 - Khronos Group
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 Update - January 2021 - Khronos Group
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
                 SPIRV-Cross                                         Vulkan Configurator:
                                                                                                                   Defines available
                                                                                                                   functionality on a
                                                                                                                                          Export        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
Vulkan Portability Update - January 2021 - Khronos Group
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)
                                             and Mac Catalyst (Shipping)                 UWP platforms such as Windows 10 S, Polaris, Xbox.
             Supported                          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                  applications on Mac and iPhone
                                                                                            Implemented using Rust Language

                                                                                                    https://github.com/gfx-rs/gfx
                 More                   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 Update - January 2021 - Khronos Group
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
    50% more perf than                                                                                                                                                                           Crossover Windows
                                                                                                                                                                          CodeWeavers and
      Apple’s OpenGL                                                                                                                                                                             compatibility layer
                                                              https://google.github.io/filament/                                                                        Square Enix ship Final
                                                                                                                                                                        Fantasy XIV on macOS
                                                                                                                                             //dolphin-emu.org/

    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
    //www.qt.io/blog/2018/05/30/vulkan-for-qt-on-macos
                                                            Initial ports of DX                    Steam for macOS -          //diligentgraphics.com/diligent-engine/
                                                                                                                                                                         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
You can also read