Open Standards for AR Neil Trevett | Khronos President VP Developer Ecosystem [email protected] | @neilt3d LA, May 2017

© Copyright 2017 - Page 1 Khronos Mission

Software

Silicon

Khronos is an International Industry Consortium of over 100 companies creating royalty-free, open standard to enable software to access hardware acceleration for 3D graphics, Virtual and Augmented Reality, Parallel Computing, Neural Networks and Vision Processing

© Copyright Khronos Group 2017 - Page 2 Khronos Standards Ecosystem

3D for the Web Real-time 2D/3D - Real-time apps and games in-browser - Cross-platform gaming and UI - Efficiently delivering runtime 3D assets - VR and AR Displays - CAD and Product Design - Safety-critical displays

VR, Vision, Neural Networks Parallel Computation - VR/AR system portability - Tracking and odometry - Machine Learning acceleration - Embedded vision processing - Scene analysis/understanding - High Performance Computing (HPC) - Neural Network inferencing

© Copyright Khronos Group 2017 - Page 3 Why AR Needs Standard Acceleration APIs

Without API Standards With API Standards

Platform Application Fragmentation Portability

Everything Silicon runs on CPU Acceleration

Standard Acceleration APIs provide PERFORMANCE, POWER AND PORTABILITY

© Copyright Khronos Group 2017 - Page 4 AR Processing Flow

Download 3D augmentation object and scene data Tracking and Positioning Generate Low Latency Vision Geometric scene 3D Augmentations for sensor(s) reconstruction display by optical system Semantic scene understanding (Neural Networks) AR Application

Interact with sensor, haptic and display devices

© Copyright Khronos Group 2017 - Page 5 Vulkan – Portable New Generation GPU API

7 Cross Platform

All Major GPU Companies shipping Vulkan Drivers – for Desktop and Mobile Platforms

Mobile, Embedded and Console Platforms Supporting Vulkan

Android 7.0 Nintendo Switch Android TV Embedded Linux

Vulkan support Initial Vulkan mobile DOTA 2 on Vulkan DOOM shipping on Vulkan support Vulkan support in V5.4 in Unity 5.6 renderer in 4.12 port of Source 2 Vulkan port of id Tech 6 since V1.8 Late May 2017 © Copyright Khronos Group 2017 - Page 6 Vulkan Explicit GPU Control Vulkan = high performance and low latency 3D – Ideal for VR/AR applications

Resource management offloaded to app: low-overhead, low-latency Complex drivers Application driver cause overhead Single thread per context and inconsistent Application Consistent behavior: behavior across Memory allocation Multiple Front-end no ‘fighting with driver vendors Thread management heuristics’ Synchronization Compilers High-level Driver GLSL, HLSL etc. Always active Multi-threaded generation Validation and debug layers of command buffers error handling Abstraction loaded only when needed Layered GPU Control Full GLSL Context management SPIR-V SPIR-V intermediate preprocessor and Memory allocation pre-compiled shaders language: shading language compiler in Full GLSL compiler flexibility Error detection driver Thin Driver Loadable debug and Explicit GPU Control validation layers Multi-threaded command OpenGL vs. creation. Multiple graphics, OpenGL ES command and DMA queues GPU GPU Unified API across all platforms with feature set flexibility Vulkan 1.0 provides access to OpenGL ES 3.1 / OpenGL 4.X-class GPU functionality but with increased performance and flexibility

© Copyright Khronos Group 2017 - Page 7 Khronos APIs for Virtual Reality

Khronos 3D APIs already But What About powering VR rendering INPUT Hardware for AR/VR.. Device discovery Multiple sensor tracking Device Events The standard for desktop VR today Haptics Parameters for optics corrections etc. etc…

On millions of mobile VR devices

Powering WebVR in browsers OpenXR! Cross-Platform, portable AR/VR

The future of explicit, low-latency VR

© Copyright Khronos Group 2017 - Page 8 OpenXR – Solving AR/VR Fragmentation

VR VR VR VR VR VR VR VR App App App App App App App App 1 2 3 4 1 2 3 4

Proprietary Proprietary Engine Engine

Application Interface

Device Layer

VR VR VR VR VR VR VR VR VR VR Device Device Device Device Device Device Device Device Device Device 1 2 3 4 5 1 2 3 4 5 Before OpenXR After OpenXR VR Market Wide interoperabilityof Fragmentation VR apps and devices

© Copyright Khronos Group 2017 - Page 9 OpenXR Working Group Members

Design work started in December 2016 Typically 12-18 months to develop a V1.0 specification

© Copyright Khronos Group 2017 - Page 10 OpenXR and VR Run-times – a Win-Win

Access to any OpenXR Application

Any successful standard encourages and Proprietary APIs enables healthy industry competition Extensions Application Interface OpenXR will not replace VR Run-time VR run-times – or outlaw existing interfaces

Proprietary OpenXR will simply provide cross-vendor Driver Interfaces APIs that can be exposed by a runtime to Extensions Device Layer access more apps and devices

Access to any OpenXR Device OpenXR for portable AR/VR apps and devices – with initial focus on VR

© Copyright Khronos Group 2017 - Page 11 OpenVX Vision Engines Wide range of vision hardware architectures Middleware OpenVX provides a high-level Graph-based abstraction -> Applications Graph-level optimizations Can be implemented on almost any hardware or processor -> Portable, Efficient Vision Processing! Software GPU Portability DSP Hardware X100 Dedicated Hardware Vision DSPs X10 Vision GPU Node Compute Vision Vision Node Node Multi-core Vision CPU Node Power Efficiency X1 Computation Flexibility Vision Processing Graph

© Copyright Khronos Group 2017 - Page 12 OpenVX - Graph-Level Abstraction • OpenVX developers express a graph of image operations (‘Nodes’) - Using a API • Nodes can be executed on any hardware or processor coded in any language - Implementers can optimize under the high-level graph abstraction • Graphs are the key to run-time power and performance optimizations - E.g. Node fusion, tiled graph processing for cache efficiency etc.

Pyr Camera OpenVX Nodes t Rendering Input Output

RGB YUV Gray Array of Frame Color Frame Channel Frame Image Optical Keypoints Harris Conversion Extract Pyramid Flow Track

Array of Features OpenVX Graph Ftrt-1

Feature Extraction Example Graph

© Copyright Khronos Group 2017 - Page 13 OpenVX Ecosystem

E.g. AMD Open source OpenVX Extensions Neural Network Acceleration To o ls Graph Save and Restore - Highly optimized for x86 16-bit image operation CPU and OpenCL for GPU - “Graph Optimizer” looks New Functionality at entire processing pipeline and removes, Under Discussion replaces, merges functions to improve NNEF Import performance and bandwidth Programmable user - Scripting for rapid kernels with prototyping, without re- accelerator offload compiling, at production performance levels http://gpuopen.com/compute- Evolving product/amd-openvx/ Functionality Multiple Shipping Tool s Implementations

© Copyright Khronos Group 2017 - Page 14 OpenVX 1.2 and Neural Net Extension • Convolution Neural Network topologies can be represented as OpenVX graphs - Layers are represented as OpenVX nodes - Layers connected by multi-dimensional tensors objects - Layer types include convolution, activation, pooling, fully-connected, soft-max - CNN nodes can be mixed with traditional vision nodes • Import/Export Extension - Efficient handling of network Weights/Biases or complete networks • OpenVX will be able to import NNEF files into OpenVX Neural Nets

Vision Node Native Vision Vision Downstream Camera Application Node Node Control CNN Nodes Processing

An OpenVX graph mixing CNN nodes with traditional vision nodes

© Copyright Khronos Group 2017 - Page 15 Safety Critical APIs

New Generation APIs for safety Experience and Guidelines certifiable vision, graphics and compute OpenGL SC 1.0 - 2005 OpenGL SC 2.0 - April 2016 e.g. ISO 26262 and DO-178B/C Fixed function graphics subset Shader programmable pipeline subset

OpenGL ES 1.0 - 2003 OpenGL ES 2.0 - 2007 Fixed function graphics Shader programmable pipeline

Khronos SCAP OpenVX SC 1.1 Released 1st May 2017 ‘Safety Critical Advisory Panel’ Guidelines for designing APIs that Vulkan SC being discussed Restricted “deployment” implementation Small driver size executes on the target hardware by reading ease system certification. Open to Khronos member AND Advanced functionality the binary format and executing the pre- industry experts. If interested to Graphics and compute compiled graphs join contact [email protected]

© Copyright Khronos Group 2017 - Page 16 glTF – Cross-Platform 3D Assets

glTF enables portable, efficient, sophisticated 3D assets for all 3D applications

Now glTF 2.0 has PBR! Cool, portable materials Rendering API independence glTF – OpenGL Transmission Format Coming to Microsoft Office! Efficient transmission of 3D assets

Laugh Engine running on Vulkan https://github.com/jian-ru/laugh_engine

© Copyright Khronos Group 2017 - Page 17 Please Get Involved! • Information on all these standards at Khronos - www.khronos.org • Khronos is driving to new levels of community engagement - Specifications and resources increasingly open for industry input and feedback • Any company or organization is welcome to join Khronos - For a voice and a vote in any of these standards • If joining is not possible – ask about a Khronos Advisory Panel - Free of charge – enables design reviews, requirements and contributions • Still no cross-vendor camera APIs? - Is the time right for this to be a target for standardization? • Neil Trevett - [email protected] - @neilt3d

© Copyright Khronos Group 2017 - Page 18