KHRONOS CROSS-PLATFORM STANDARDS UPDATE VULKAN, ANARI, OPENXR, GLTF AND OPENCL

Neil Trevett, GTC, March 2020 VP , Khronos President AGENDA

Latest updates on key Khronos open standards That are of most interest to the GTC audience Vulkan, ANARI, SPIR-V, OpenXR, glTF and OpenCL On Khronos format slides

NVIDIA and Khronos Standards How NVIDIA is supporting and deploying Khronos Open Standards On NVIDIA format slides

2 Khronos Connects to Silicon Open interoperability standards to enable software to effectively harness the power of multiprocessors and accelerator silicon

3D graphics, XR, parallel programming, vision acceleration and machine learning

Non-profit, member-driven standards-defining industry consortium

Open to any interested company

All Khronos standards are royalty-free

Well-defined IP Framework protects participant’s intellectual property >150 Members ~ 40% US, 30% Europe, 30% Asia

© The Khronos® Group Inc. 2020 - Page 3 Khronos Active Initiatives

3D Graphics 3D Assets Portable XR Parallel Computation Desktop, Mobile, Web Authoring Augmented and Vision, Inferencing, Machine Embedded and Safety Critical and Delivery Virtual Learning

Guidelines for creating to streamline system safety certification

NVIDIA is fully committed to continuing to support OpenGL Exploring expanded interop with Vulkan New functionality is primarily Vulkan-focused

© The Khronos® Group Inc. 2020 - Page 4 Pervasive Vulkan Desktop and Mobile GPUs

http://vulkan.gpuinfo.org/ Platforms

Apple Desktop Android (via porting Media Players Consoles (Android 7.0+) layers) (Vulkan 1.1 required on Android Q)

Virtual Reality Cloud Services Game Streaming Embedded Engines

Croteam Serious Engine

Note: The version of Vulkan available will depend on platform and vendor © The Khronos® Group Inc. 2020 - Page 5 Vulkan AAA Content

© The Khronos® Group Inc. 2020 - Page 6 Vulkan Roadmap

Vulkan 1.1 Extensions Maintenance updates plus additional functionality Roadmap Discussions Timeline semaphores DX/HLSL compatibility Variable Rate Shading Bindless resources Reduced precision arithmetic Accelerated Video Encode/Decode Formal memory model Machine Learning Primitives Buffer references Mesh SPIR-V 1.5

January 2020

DLSS 2.0 smart scaling can be used with Vulkan applications Does not need per application training

© The Khronos® Group Inc. 2020 - Page 7 Vulkan Ray Tracing

Set of Extensions to Vulkan, GLSL and SPIR-V Seamlessly integrates ray tracing into Vulkan 1.X Familiar Ray Tracing Pipeline Architecture The industry’s first open, cross- Straightforward porting between Vulkan Ray Tracing and DXR vendor, cross-platform standard for - including re-use of ray tracing shaders written in HLSL ray tracing acceleration Can be accelerated on existing Vulkan Ray GPU compute and dedicated ray DX12 / DXR Tracing tracing cores Extensions are Provisional Ray Tracing Pipelines Yes Yes Launched 17th March 2020 DXR 1.1 Open to developer feedback Ray Queries Optional Inline raytracing before finalization https://khr.io/vkrayprovfeedback Language for GLSL or HLSL HLSL Ray Tracing Shaders

Pipeline Libraries Yes Yes

Build Acceleration Structure Optional No on Host Straightforward port from NVIDIA VKRay Deferred Host Operations Optional No vendor extension to KHR extensions Shipping beta drivers today Capture/Replay Support for Example code coming soon Optional No Tools (e.g. RenderDoc) https://www.khronos.org/registry/vulkan/

© The Khronos® Group Inc. 2020 - Page 8 Vulkan Ray Tracing and Shading Languages

HLSL

HLSL and Vulkan with DXC DXC ’s DXC HLSL compiler was open sourced in Jan 2017 Front-end Parsing and others have added SPIR-V code generation to DXC and Validation with Microsoft’s knowledge and approval Vulkan developers can now choose between GLSL and HLSL! AST Abstract Syntax Tree Vulkan Ray Tracing includes GLSL and SPIR-V Extensions Enabling compiled GLSL/SPIR-V shaders to operate in a Ray Tracing Pipeline – similar to HLSL features used in ’s DXR SPIR-V DXIL Backend Backend HLSL for Vulkan Ray Tracing NVIDIA added code generation to DXC to generate SPIR-V for the NVIDIA VKRay ray tracing vendor extension from HLSL SPIR-V DXIL Vulkan Ray Tracing Extensions supported in HLSL soon

Developers can port HLSL shaders SPIR-V Tools DXIL Tools with minimal changes between Vulkan Ray Tracing and DXR

© The Khronos® Group Inc. 2020 - Page 9 NVIDIA AND VULKAN NVIDIA deeply engaged in Vulkan and driving extend/consolidate cycle NVIDIA shipped Vulkan 1.0, 1.1 and 1.2 on day of spec releases Shipped beta Vulkan Ray Tracing extensions on day of spec release Increased Vulkan support in NSIGHT 2020.2 development tool – close parity now with DX12 NVIDIA chairing multiple Vulkan initiatives at Khronos Ray Tracing: contributed NVIDIA VKRay to catalyze Vulkan Ray Tracing KHR extensions Vulkan Portability: bringing layered Vulkan to Apple, WebGPU, silicon without native drivers etc. Machine Learning: low-level inferencing primitives

Cloud – Windows and Desktop – and later Shield Android TV Jetson

10 Open Layering Projects Fighting Platform Fragmentation

Layers Vulkan OpenGL OpenCL OpenGL ES DX12 DX9-11 Over Vulkan is effective clspv GLOVE DXVK porting layer for API Vulkan Zink clvk Angle vkd3d WineD3D portability and stack simplification gfx-rs OpenGL Ashes Angle WineD3D

Microsoft Microsoft Microsoft DX12 gfx-rs ‘GLOn12’ ‘CLOn12’ D3D11On12

gfx-rs DX9-11 Ashes Angle

MoltenVK MoltenGL Metal gfx-rs Angle

‘Vulkan everywhere’! Working towards Even if no native ‘OpenCL drivers on platform Everywhere’!

© The Khronos® Group Inc. 2020 - Page 11 Vulkan Portability on macOS and iOS

Applications

Vulkan Portability Extension provides query for available functionality

Vulkan Open source SDK on macOS All present functionality must be macOS SDK Build, run, and debug apps conformant to use logo with validation layer support https://vulkan.lunarg.com/

SPIRV-Cross macOS / iOS Open source Convert SPIR-V shaders to Run-time For MacOS/iOS Metal Shading Language Maps Vulkan to Metal Beta open source For MacOS/iOS Vulkan applications shipping today on macOS or iOS using MoltenVK

© The Khronos® Group Inc. 2020 - Page 12 ANARI – Analytic Rendering API

Scientific Visualization Portability APIs to describe objects in a scene - the renderer does the rest Ray tracing was key motivation – but can drive any renderer

SciViz Apps Scene Graphs and Engines

Renderers: OSPRAY, AMD ProRender, NVIDIA VisRTX etc.

Acceleration APIs: Embree, Optix, Rays, CUDA, OpenCL, Vulkan etc.

Hardware: CPUs, GPUs etc. Industry Support

© The Khronos® Group Inc. 2020 - Page 13 OpenXR – Cross-Platform Portable AR/VR

Working Group Participants

Games Engines

Desktop/Console VR

AR

Mobile VR

GPUs

OpenXR is a collaborative design UI Devices Integrating many lessons from proprietary ‘first-generation’ XR API designs

* OpenXR 1.0 is focused on enabling cross-platform applications. Optional device plugin interface will be supported post V1.0 © Copyright Khronos® Group Inc. 2020 Page 14 OpenXR 1.0 Availability

Significant Community Feedback Finalize Conformance Test Suite Enable Officially Conformant Implementations Improved Input subsystem, game engine editor support, loader … Provisional OpenXR for Windows headsets Specification and HoloLens 2 GDC, March 2019 PLUS extensions to support HoloLens 2 hand tracking, eye tracking, spatial mapping and spatial anchors Many more coming! Ratify and Release OpenXR support for Rift and OpenXR 1.0 Oculus PC (for Rift) and Android SDK (for Quest) SIGGRAPH, July 2019 include OpenXR for native /C++ development

‘Monado’ OpenXR open source implementation Support OpenHMD hardware and Nova Northstar AR HMD

OpenXR 1.0 plugin for v4.2.4

© The Khronos® Group Inc. 2019 - Page 15 OpenXR is used with a 3D API

Application or Engine

Display, High-performance, low-latency composition and Cross-platform access to XR 3D rendering and composition* optical correction HMDs and sensors Multiview parameters XR application lifecycle Context priority Input device discovery and events Front buffer rendering Sensor tracking and pose calculation Tiled rendering (beam racing) Frame timing and display composition Variable rate rendering Haptics Control

* OpenXR can be used with other 3D APIs such as Direct3D, OpenGL and OpenGL ES

© The Khronos® Group Inc. 2019 - Page 16 OPENXR AND EDGE SERVER APPS

Low latency Sensor Data

Location–aware Content Requests OpenXR APIs hide the 5G round trip from applications MEC (Multi-access Edge Sensor handling Computing) Server 1. Processes sensor data, including machine learning for environmental lighting, occlusion, Needed assets Display composition scene semantics, object loaded to reconstruction and UI edge server 2. Generates imagery from 3D Wireless mobile device with models, including stereo, foveal rendering, ray-tracing, optics pre- display and sensors distortion, varifocal processing Apps and 3D Assets NVIDIA EGX

Generated Augmentations & Scenes

17 Modo Paint 3D

Titania Discover Repositories Game Engines

3D Authoring Tools Web Engines

3D Builder Oculus Create Experience 3D printing Tools Apps / Engines 3D Asset Format for Efficient VR / AR Authoring Tools Transmission and Processing

Sony 3D Creator Drive Demand Apps and Engines Users 3D Live Object 3D Scanning Tools gltfpack Mixed Reality Viewer

Collada2gltf OBJ2GLTF FBX2glTF Windows Mixed Convertors and Optimizers Reality Home

glTF Reference Viewer VR / AR Apps and Engines -vscode glTF-asset-generator glTF-validator glTF-Toolkit Validation and Reference Tools Productivity and Social Apps

© The Khronos® Group Inc. 2020 - Page 18 glTF Roadmap Second Generation Physically-Based Rendering (PBR) JPEG must be fully Set of coherent extensions decompressed into 14,000,000Clear coat (imminent) GPU memory Absorption/attenuation 12,582,912 File Size GPU Size Subsurface scattering Anisotropy

Inspiration from Dassault 10,500,000 Systèmes Enterprise PBR Shading Model (DSPBR) and MDL

Wide industry cooperation

7,000,000

Universal textures can beSeeking Requirements directly transcoded to Subdivision3,500,000 surfaces FlightHelmet_baseColor 2,778,518 compressed GPU textures 2048 x 2048, RGB Advanced Animation 2,097,152 LOD and Streaming Compressed Point Clouds Cross-asset linking 315,619 232,104 0Enhanced Metadata Composability PNG JPEG

glTF Universal Textures ETC1S Instancing (imminent) Working Group is constantly balancing CAD/BIM model support Basis Universal encoding/transcoding feature requests against the ‘glTF Encryption and security Uncompressed Basis Universal KTX2 Container Prime Directive’ - remain a universal 3D Printing and easy to process delivery format

© The Khronos® Group Inc. 2020 - Page 19 GPU COMPUTE APIS AT NVIDIA Developer Choice

• Heterogeneous • CUDA-X libraries and tools • Widely available across compute devices • Integrated HW/SW roadmap multiple platforms • Cross-vendor for rapid innovation • Integrated rendering, data open standard • BUT GPU Only movement and compute • Simpler to program • Explicit hardware control than rendering APIs • BUT GPU Only

Increasing layering, tooling and interop functionality enabling enhanced development and deployment flexibility

20 OpenCL is Widely Deployed and Used

Desktop Creative Apps Parallel Machine Learning Languages Libraries and Frameworks Intel Math and Physics Vision and Imaging Machine Learning Compilers Libraries Xiaomi Libraries

Modo Intel clDNN NNAPI SYCL-DNN Linear Algebra Libraries VeriSilicon

SYCL-BLAS Synopsis MetaWare EV TI DL Library (TIDL) CLBlast Arm Compute Library

Hardware Implementations

This work is licensed under a Creative Commons Attribution 4.0 International License © The Khronos® Group Inc. 2020 - Page 21 OpenCL Applications over Vulkan • Clspv – Google’s open source OpenCL kernel to Vulkan SPIR-V compiler - Tracks top-of-tree LLVM and clang, not a fork • Clvk – prototype open source OpenCL to Vulkan run-time API translator • Used for shipping production apps and engines on Android - Adobe Premiere Rush video editor – 200K lines of OpenCL C kernel code - Butterfly Network iQ Ultrasound on Android - Xiaomi MACE inferencing engine

OpenCL C or OpenCL C++ for OpenCL Application Kernel Sources Host Code

Clspv Clvk run-time Compiler API Translator

Runtime

https://github.com/kpet/clvk https://github.com/google/clspv

© Copyright Khronos® Group Inc. 2020 Page 22 NVIDIA AND OPENCL Active Investment and Support

Production-class OpenCL 1.2 on Linux and Windows NVIDIA Chairs the Active, ongoing improvements in performance and power efficiency for new architectures Khronos OpenCL Working Group Multi-GPU optimizations, multi-command-queue use case tuning Optimized data transfers and GPU memory allocation New Functionality Half & Half2, arithmetic and conversions - in development Expanding OpenCL Interop options OpenGL and D3D9/10/11 – today. DX12 being planned OpenCL/Vulkan interop – aiming for 2H20 - using standard Vulkan external memory interop hooks NVIDIA driving Vulkan/OpenCL interop extension at Khronos Providing guidance for deploying OpenCL apps over Vulkan Leveraging the open source SPIR-V compiler

23 NVIDIA AND KHRONOS API STANDARDS

Cloud – Windows and Linux Desktop – Kepler and later Nintendo Switch Shield Android TV Jetson NVIDIA has shipped Vulkan 1.2 and Ray Tracing drivers on day of specification release NVIDIA chairing multiple Vulkan initiatives at Khronos: Ray Tracing, Machine-Learning, Vulkan Portability etc. Increased Vulkan support in NSIGHT graphics development tools https://developer.nvidia.com/Vulkan

Actively working to help evolve Production-class OpenCL 1.2 on Linux and Windows NVIDIA initiated industry cooperation OpenXR to complement VRWorks Active improvements in efficiency and performance Portable Analytic Rendering API and enable EGX Edge Server AR Vulkan Interop in development NVIDIA chairing the working group https://developer.nvidia.com/vrworks https://developer.nvidia.com/opencl https://www.khronos.org/anari

24 How To Get Involved! • More information at other GTC recorded sessions - [S21770] NVIDIA Vulkan Features Update – including Vulkan 1.2 and Ray Tracing - [S22694] Ray Traced Reflections in Wolfenstein Youngblood • Any company or organization is welcome to join Khronos! - For a voice and a vote in any of these standards – membership starts at $3,500 • OR request an invite to Vulkan, OpenCL, OpenXR Advisory Panels - No fee, execute Khronos NDA and IP Framework, provide requirements and spec feedback • We welcome your feedback at NVIDIA or Khronos - Khronos Forums: https://forums.khronos.org/ - Khronos Slack Channels: https://khronosdevs.slack.com/messages - Khronos open source GitHub repositories: https://github.khronos.org/ • Contact Neil Trevett - [email protected] | @neilt3d | www.khronos.org

© Copyright Khronos™ Group 2019 - Page 25