swiftshader - khronos group
TRANSCRIPT
![Page 1: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/1.jpg)
Reference Implementation and Fallback
SwiftShader
Alexis Hétu / July 31, 2019
![Page 2: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/2.jpg)
Introduction
vs.
● Graphics driver for the CPU● Accelerated by
○ Multi-core○ SIMD vectors○ Specialized instructions
![Page 3: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/3.jpg)
Google all-in on Vulkan
● High performance is key● Mandatory for Android Q phones,
except in extreme low-end● Stadia uses Vulkan on Linux● Chrome is adding Vulkan support● The Skia graphics library has a
Vulkan backend● Dawn (WebGPU) also has a Vulkan
backend
![Page 4: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/4.jpg)
Making 3D Universally Accessible
WebGPU
Dawn
Vulkan Metal
SwiftShader
ANGLE
OpenGL ES
WebGL
Android
Vendor Driver
Web
DX12
![Page 5: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/5.jpg)
SwiftShader’s Transition to Vulkan-only
GLSL ↓
ASMOpenGL ES-
Renderer
Vulkan
glslangANGLE
Device
Application
Shader
Reactor
Subzero
CPU
LLVMJIT
Pipeline / SPIR-V
![Page 6: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/6.jpg)
Reactor
● High level C-like language for code generation of low level CPU operations
● Produces code for a JIT compiler rather than executing that code
● Example:
// Regular “if()” selects whether instructions are generated,if(condition) // no branch in resulting JITed code{ Int a = computeSomething(); // “a” is a Reactor integer object // “If()” is evaluated at runtime and results If(a == Int(0)) // in a dynamic branch inside the JITed code { a += Int(10); // The “+=” operator generates the necessary instruction(s) // for this operation to be evaluated in the JITed code }}
![Page 7: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/7.jpg)
SwiftShader Vulkan driver
● Passes 100% of dEQP-VK conformance test suite
● Vulkan 1.1 mandatory features only
● x86 and ARM, 32 bit and 64 bit
● WSI for desktop and mobile
![Page 8: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/8.jpg)
Future directions
● PERFORMANCE!● Tight integration with ANGLE
○ Short term, Vulkan features required by ANGLE for OpenGL ES 2.0 and 3.0 translation○ Longer term, adding features required for OpenGL ES 3.1 and 3.2
● Integration into Chromium○ Chromium Vulkan backend tests on build bots○ ANGLE on SwiftShader Vulkan as WebGL fallback○ SwiftShader Vulkan as Dawn (WebGPU) fallback
● Android○ Tests on SwiftShader Vulkan
![Page 9: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/9.jpg)
Highlights of using SwiftShader Vulkan
● Rapid prototyping of a new Vulkan feature● Building with sanitizers (like ASAN or TSAN) to let fuzzers find cracks in the
implementation/spec and improve test coverage● Platform-independent shader debugging● Finding bugs in applications making assumptions about available features● macOS support● Ability to test dEQP in under 15 minutes on a single (powerful) workstation
![Page 10: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/10.jpg)
Conclusion
Conformant, consistent, hardware-independent results on Windows, Linux, macOS, Android, Fuchsia on x86, ARM, and more
![Page 11: SwiftShader - Khronos Group](https://reader035.vdocument.in/reader035/viewer/2022072506/62dd318ace400c0e5b4f5e8e/html5/thumbnails/11.jpg)
swiftshader.googlesource.com