Vulkan Overview
February 2016
[Link]/vulkan/
Copyright Khronos Group 2016 - Page 1
BOARD OF PROMOTERS
Over 100 members worldwide
any company is welcome to join
Copyright Khronos Group 2016 - Page 2
Khronos Connects Software to Silicon
Industry Consortium creating OPEN STANDARD APIs for hardware acceleration
Any company is welcome one company one vote
ROYALTY-FREE specifications
State-of-the art IP framework protects
members AND the standards
Low-level silicon APIs
needed on almost every platform:
graphics, parallel compute,
rich media, vision, sensor
and camera processing
Software
Silicon
Conformance Tests and Adopters
Programs for specification integrity
and cross-vendor portability
International, non-profit organization
Membership and Adopters fees cover
operating and engineering expenses
Strong industry momentum
100s of man years invested by industry experts
Well over a BILLION people use Khronos APIs Every Day
Copyright Khronos Group 2016 - Page 3
The Genesis of Vulkan
Khronos members from all
segments of the graphics industry
agree the need for new
generation cross-platform GPU API
Including an unprecedented level of
participation from game engine developers
Significant proposals, IP contributions
and engineering effort from many
working group members
18 months
A high-energy
working group effort
Khronos first API
hard launch
Specification, Conformance Tests, SDKs - all open source
Reference Materials, Compiler front-ends, Samples
Multiple Conformant Drivers on multiple OS
Vulkan Working Group Participants
Copyright Khronos Group 2016 - Page 4
The Need for a New Generation GPU API
Explicit
- Open up the high-level driver abstraction to give direct, low-level GPU control
Streamlined
- Faster performance, lower overhead, less latency
Portable
- Cloud, desktop, console, mobile and embedded
Extensible
- Platform for rapid innovation
OpenGL has evolved over 25 years and
continues to meet industry needs but there is
a need for a complementary API approach
GPUs are increasingly programmable and
compute capable + platforms are becoming
mobile, memory-unified and multi-core
GPUs will accelerate graphics, compute, vision
and deep learning across diverse platforms:
FLEXIBILITY and PORTABILITY are key
Copyright Khronos Group 2016 - Page 5
Vulkan Explicit GPU Control
Vulkan Benefits
Simpler drivers:
Improved efficiency/performance
Reduced CPU bottlenecks
Lower latency
Increased portability
Application
Single thread per context
High-level Driver
Abstraction
Context management
Memory allocation
Full GLSL compiler
Error detection
Layered GPU Control
Application
Memory allocation
Thread management
Multi-threaded generation
of command buffers
Multi-queue work
submission
Initially GLSL
Thin Driver
GPU
Vulkan 1.0 provides access to
OpenGL ES 3.1 / OpenGL 4.X-class GPU functionality
but with increased performance and flexibility
Resource management in app code:
Less hitches and surprises
Command Buffers:
SPIR-V pre-compiled
shaders
Explicit GPU Control
GPU
Language Front-end
Compilers
Command creation can be multi-threaded
Multiple CPU cores increase performance
Graphics, compute and DMA queues:
Work dispatch flexibility
Loadable debug and
validation layers
SPIR-V Pre-compiled Shaders:
No front-end compiler in driver
Future shading language flexibility
Loadable Layers
No error handling overhead in
production code
Copyright Khronos Group 2016 - Page 6
Vulkan Multi-threading Efficiency
1. Multiple threads can construct Command Buffers in parallel
Application is responsible for thread management and synch
CPU
Thread
Command
Buffer
Command
Buffer
CPU
Thread
Command
Buffer
CPU
Thread
Command
Queue
Command
Buffer
Command
Buffer
CPU
Thread
CPU
Thread
CPU
Thread
GPU
2. Command Buffers placed in Command
Queue by separate submission thread
Can create graphics, compute and DMA
command buffers with a general queue
model that can be extended to more
heterogeneous processing in the future
Copyright Khronos Group 2016 - Page 7
Next Generation GPU APIs
Only Windows 10
Only Apple
Cross Platform
Copyright Khronos Group 2016 - Page 8
Vulkan - No Compromise Performance
Potential Performance Gain
Retains Traditional Binding Model
(but missing functionality such as
Tessellation and Geometry Shaders)
Amount of work to port from traditional
OpenGL and OpenGL ES
Copyright Khronos Group 2016 - Page 9
Which Developers Should Use Vulkan?
Vulkan puts more work and responsibility into the application
- Not every developer will need or want to make that extra investment
For many developers OpenGL and OpenGL ES will remain the most effective API
- Khronos actively evolving OpenGL and OpenGL ES in parallel with Vulkan
Is your app
CPU bound?
Yes
Youll
do whatever
it takes to squeeze
out maximum
performance
No
You put
a premium on
avoiding
hitches
Yes
Can your graphics
work creation be
parallelized?
Yes
Yes
Yes
You can
manage your
graphics resource
allocations
Vulkan provides more choice to developers and can be used to
create new classes of end-user experience
Copyright Khronos Group 2016 - Page 10
The Power of a Three Layer Ecosystem
Applications
can use Vulkan
directly for
maximum
flexibility and
control
Application uses
utility libraries to
speed
development
Utility libraries
and layers
Application
Applications using game engines
will automatically benefit from
Vulkans enhanced performance
Game Engines
fully optimized
over Vulkan
Rich Area for Innovation
Many utilities and layers will be in open source
Layers to ease transition from OpenGL
Domain specific flexibility
Similar ecosystem dynamic as WebGL
A widely pervasive, powerful, flexible foundation layer enables diverse middleware tools and libraries
Copyright Khronos Group 2016 - Page 11
Vulkan Feature Sets
Vulkan supports hardware with a wide range of hardware capabilities
- Mobile OpenGL ES 3.1 up to desktop OpenGL 4.5 and beyond
One unified API framework for desktop, mobile, console, and embedded
- No "Vulkan ES" or "Vulkan Desktop"
Vulkan precisely defines a set of "fine-grained features"
- Features are specifically enabled at device creation time (similar to extensions)
Platform owners define a Feature Set for their platform
- Vulkan provides the mechanism but does not mandate policy
- Khronos will define Feature Sets for platforms where owner is not engaged
Khronos will define feature sets for Windows and Linux
- After initial developer feedback
Copyright Khronos Group 2016 - Page 12
Vulkan Window System Integration (WSI)
Explicit control for acquisition and presentation of images
- Designed to fit the Vulkan API and todays compositing window systems
- Cleanly separates device creation from window system
Platform provides an array of persistent presentable images = Vulkan Swapchain
- Device exposes which queues support presentation
- Application explicitly controls which image to render and present
Standardized extensions - unified API for multiple window systems
- Works across Android, Mir, Windows (Vista and up), Wayland and X (with DRI3)
- Platforms can extend functionality, define custom WSI stack, or have no display at all
VkQueue
Transition
to Present
Swapchain
Extensions
Platform
WSI
Extension
Platform
WSI
Extension
Explicit control for
acquisition and presentation of images
Custom
WSI
Extension
Present
Transition
to Render
Image
X
Image
Y
Transition
to Present
Present
Transition
to Render
Image
Y
Image
X
Time
Compositor or Display Engine
Copyright Khronos Group 2016 - Page 13
SPIR-V Transforms the Language Ecosystem
First multi-API, intermediate language for parallel compute and graphics
- Native representation for Vulkan shader and OpenCL kernel source languages
- [Link]
GL_KHR_vulkan_glsl spec released - adds the GLSL features needed for Vulkan
- Descriptor sets, push constants, specialization constants
- Separate images/samplers, sub pass input images
- Updated front-end open source compiler in Khronos GitHub
Diverse Languages
and Frameworks
Multiple Developer Advantages
Same front-end compiler for multiple platforms
Reduces runtime kernel compilation time
Dont have to ship shader/kernel source code
Drivers are simpler and more reliable
Tools for
analysis and
optimization
Hardware
runtimes on
multiple architectures
Standard
Portable
Intermediate
Representation
Copyright Khronos Group 2016 - Page 14
Evolution of SPIR Family
SPIRV is first fully specified Khronos-defined SPIR standard
- Does not use LLVM to isolate from LLVM roadmap changes
- Includes full flow control, graphics and parallel constructs beyond LLVM
- Khronos will open source SPIR-V <-> LLVM conversion tools
SPIR 1.2
SPIR 2.0
SPIR-V 1.0
LLVM Interaction
Uses LLVM 3.2
Uses LLVM 3.4
100% Khronos defined
Round-trip lossless conversion
Compute Constructs
Metadata/Intrinsics
Metadata/Intrinsics
Native
Graphics Constructs
No
No
Native
Supported
Language
Feature Set
OpenCL C 1.2
OpenCL C 1.2
OpenCL C 2.0
OpenCL C 1.2 / 2.0
OpenCL C++
GLSL
OpenCL Ingestion
OpenCL 1.2
Extension
OpenCL 2.0
Extension
OpenCL 2.1
Core
Vulkan Ingestion
Vulkan Core
Copyright Khronos Group 2016 - Page 15
Driving the SPIR-V Open Source Ecosystem
GLSL
Khronos will open source
these tools and translators
OpenCL C
Third party kernel and
shader Languages
OpenCL C++
SPIR-V Tools
SPIR-V Validator
SPIR-V (Dis)Assembler
LLVM
LLVM to SPIR-V
Bi-directional
Translator
Other
Intermediate
Forms
SPIR-V
32-bit Word Stream
Extensible and easily parsed
Retains data object and control
flow information for effective
code generation and translation
IHV Driver
Runtimes
Copyright Khronos Group 2016 - Page 16
Vulkan Developer Resources at Launch
[Link]
Canonical Resources
Specifications, Header Files
Feature Set Definitions
(Windows and Linux - post developer feedback)
Quick Reference and Reference Pages
Conformance Test Source and Test Process
Materials to Build SDKs and Tools
Compiler toolchain sources
Validation Layer Source
Loader Source
Layers and Loader documentation
(open source resources in [Link]/KhronosGroup)
Everything needed to create SDKs
for any platform or market
LunarG
Windows and Linux Installable SDKs
Loader and Validation Layer binaries
Tools Layers - source and binaries
Samples - source and binaries
Windows get started guide
IHV Websites
Drivers and Loader
Vendor tools and layers
Third Party Websites
Layers, Samples etc.
Copyright Khronos Group 2016 - Page 17
Vulkan Tools Architecture
Layered design for cross-vendor tools innovation and flexibility
- IHVs plug into a common, extensible architecture for code validation, debugging
and profiling during development without impacting production performance
Khronos Open Source Loader enables use of tools layers during debug
- Finds and loads drivers, dispatches API calls to correct driver and layers
Production Path
(Performance)
Vulkan-based Title
Debug Layers can be
installed during Development
Interactive
Debugger
Validation Layers
Vulkans Common Loader
Debug Layers
IHVs Installable Client
Driver
Debug information via
standardized API calls
Copyright Khronos Group 2016 - Page 18
LunarG SDK for Vulkan
Valve sponsored LunarG to develop a free, open source SDK for Vulkan
- Utilities, samples, debugging tools, documentation
- For Windows and Linux on launch Android coming soon
Validation Layer checks many aspects of Vulkan code:
- Device limits, draw state, parameter values
- Multi-thread object access rules, texture and render target formats
- Object Tracker, Memory Tracker
[Link]
Other SDK Tools
- Trace and replay tools
- GLSL Validator
- SPIR-V Disassembler and Assembler
RenderDoc Graphics debugger
- Free and open source
- Adding Vulkan support
- [Link]
Copyright Khronos Group 2016 - Page 19
Conformant Vulkan Drivers at Launch
30 Driver submissions passed conformance at Vulkan 1.0 launch
- ARM: Linux
- Imagination Technologies: Linux
- Intel: Linux
- NVIDIA: Android 6.0, Linux (desktop and embedded), Windows 7-10
- Qualcomm: Android 6.0
- [Link]/conformance/adopters/conformant-products
Drivers in test submission review at Vulkan 1.0 launch
- AMD: Windows
Open source Vulkan
conformance test suite
hosted on GitHub
Khronos and Android
leveraging and merging
Vulkan tests with the
Android Open Source
Project (AOSP) and
DrawElements Quality
Program (dEQP)
framework
Khronos
Generated
Tests
Vulkan
Conformance
Test Suite
Implementers
must pass
Test Suite
AOSP/dEQP
Framework
and Tests
Community
Test
Contributions
Enable developers to provide
direct feedback and
contributions to help resolve
cross-vendor inconsistencies
Khronos administered
Vulkan Adopters Program.
Implementations that pass
test process may use
Vulkan trademark
Copyright Khronos Group 2016 - Page 20
One Week Since Launch of Vulkan 1.0
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Copyright Khronos Group 2016 - Page 21
Vulkan Ecosystem Active at Launch
Vulkan and OpenGL ES
over Metal - in development
By building your application or game using the
Vulkan API, you can run your modern graphics
application or game unchanged across an entire
industry of platforms and development tools
Brenwill Workshop
Vulkan has a huge potential! We're
only scratching the surface of what can
be done with it, and porting The Talos
Principle to Vulkan should be seen as a
proof of concept, said Dean Sekulic
graphics engine specialist at Croteam.
Vulkan in just one sentence? The
endless war between performance and
portability is finally over!
Talos Principle on Steam has
beta Vulkan back-end
Copyright Khronos Group 2016 - Page 22
Vulkan at GDC!
Many deep dive sessions
- Much more detail than we have time for today
Vulkan sessions at GDC March 14-18
- [Link]
Khronos Sessions co-located with GDC March 16 free - no need for GDC Badge!
- [Link]
- All Khronos sessions will be live streamed and posted
Khronos Vulkan sessions co-located with GDC
Copyright Khronos Group 2016 - Page 23
Khronos Roadmap Discussions
SPIR-V Ingestion for OpenGL and
OpenGL ES for shading language flexibility
Khronos members decide how to
evolve and mix and match a rich
set of APIs and technologies to
meet market needs
Thin and
predictable
graphics and
compute for safety
critical systems
OpenCL-class Heterogeneous
Compute to Vulkan runtime:
C++ Shading Language
Tiered precision
Shared virtual memory
Dynamic parallelism
Copyright Khronos Group 2016 - Page 24
Khronos Open Standards for Graphics and Compute
LATEST STATUS
1990s
Workhorse cross-platform professional 3D apps & gaming
2000s
Ubiquitous mobile gaming & graphics apps
2005
Safety Critical Graphics
2008
Heterogeneous parallel compute
Portable intermediate representation
for graphics and parallel compute
2014
High-efficiency GPU graphics and
compute for performance critical apps
2016
New Extensions to enable latest
desktop graphics capabilities
OpenGL ES 3.2 released to bring
AEP functionality to core
New Safety Critical Working
Group Call for Participation
OpenCL 2.0 specification update
and C++ Headers released
Provisional Spec Update and
significant open source activity
Adopted by Android and other
platforms. Building ecosystem
Copyright Khronos Group 2016 - Page 25