Completed
Driver code name: V3DV. • Development started in a public fork of Mesa. • Leverages Mesa Vulkan WSI. • Expands existing V3D NIR compiler. . Same kernel interface as V3D.
Class Central Classrooms beta
YouTube videos curated by Class Central.
Classroom Contents
Overview of the Open Source Vulkan Driver for Raspberry Pi 4
Automatically move to the next video in the Classroom when playback concludes
- 1 Overview of the Open Source Vulkan Driver for Raspberry Pi 4
- 2 Development story . Current state Implementation challenges • Future plans . Contributing
- 3 Driver code name: V3DV. • Development started in a public fork of Mesa. • Leverages Mesa Vulkan WSI. • Expands existing V3D NIR compiler. . Same kernel interface as V3D.
- 4 Initial early milestone to render on hardware. • Vulkan CTS to help iterative feature development - Requires minimal functionality in the driver first. - Helped improve CTS coverage.
- 5 Growing subset of CTS for regression testing. - Parallel deqp runner for faster execution. - Currently -10K tests (-10% of CTS pass list). • Weekly rebases and full CTS runs. • Assert everywhere phil…
- 6 Vulkan 1.0 mandatory feature set complete. - A bunch of optional features too. - Many optional features and extensions missing. . Current focus on CTS conformance. - Passing -110K tests, -4 fails to …
- 7 Not much performance work yet. - Mostly for the Quake games. - VkQuake3 much faster than its GL1 renderer.
- 8 Aware of some slow paths in the driver. - Particularly for some cases of transfer ops. - Possibly underused TFU unit.
- 9 Vulkan expects everything to execute in GPU. - Not quite possible for us in a few selected cases. - Caused some implementation churn. - Incurs in additional coordination (flushes).
- 10 Linear display pipeline in Raspberry Pi 4 - V3D cannot sample from linear images. - For now, we don't support sampling on swapchains. - We should be able to sample in windowed mode when running insid…
- 11 formats for optimal performance. - We don't know formats until descriptors are bound. Pre-compile 2 shader variants in advance. • Optimal case: use 16-bit return size • Fallback case: use 32-bit retu…
- 12 Optimal path requires PCI GPU and VK_EXT_pci_bus_info. - Raspberry Pi display device is not a PCI device. • We just want to check that DR13 device matches. - RFC MR with a solution proposed.
- 13 Long term: - Explore better TFU unit usage. - Better WSI platform support. - Optimal implementation of input attachments. - Optional features & extensions - Maybe Vulkan 1.1?
- 14 Improve code reuse with GLES driver. - Maybe port some features to GLES driver