Some time ago, the Raspberry Pi Foundation, along with Igalia , announced to the general public their joint work on the development of a Vulkan driver for Raspberry Pi boards. Initially, they stated that it would only be compatible with the newest board, the "Raspberry Pi 4," and thus began the initial stage of development. They did not mention a specific date for when the driver would be ready or when it would be suitable for launching real applications.
The only thing they mentioned was that this might be possible in the second half of 2020. Within the controller specifications , it was mentioned that it is limited to compatibility with the VideoCore VI graphics accelerator, used since the Raspberry Pi 4 model, and that it would not be compatible with older boards, meaning that models from the 3b+ and earlier were ruled out.
Furthermore, they mentioned that, compared to OpenGL, the use of Vulkan can improve the performance of graphics applications and games.
With this news, many fans and owners of a Raspberry Pi that was not the model 4, were disappointed because they felt that they were put aside and that they practically announced that it is no longer worth working on continuing to support any of these boards.
But, now in more recent news, it seems that things have changed as a developer came to prove otherwise.
About RPi-VK-Driver 1.0
Martin Thomas, an NVIDIA engineer, was responsible for the development of RPi-VK-Driver, which is an open-source driver that, in the words of its author:
"The controller was developed by, however development was carried out as a personal project, unrelated to NVIDIA (the controller was developed the last two years in his spare time)."
This first version of the open-source RPi-VK-Driver 1.0 is distributed under the MIT license and implements Vulkan graphics API support for older Raspberry Pi boards that include the Broadcom Videocore IV GPU.
The controller is suitable for all Raspberry Pi board models released before Raspberry Pi 4.
Of the supported models, the following are mentioned in the repository:
- Zero
- Zero w
- 1 model A
- 1 model A +
- 1 model B
- 1 model B +
- 2 Model B
- 3 Model A +
- 3 Model B
- 3 Model B +
- Compute Module1
- Compute Module 3
- Compute Module 3 lite
- 3 + Compute Module
- Compute Module 3+ lite
Since the capabilities of the VideoCore IV GPU, which are equipped with older Raspberry Pi models, are not sufficient for the full implementation of Vulkan, the driver implements only a subset of the Vulkan API , which does not cover the entire standard, but tries to follow it as far as the team allows.
However, the available functionality is sufficient for many applications and games, and performance is far ahead of OpenGL drivers due to more efficient memory management, multi-threaded processing of GPU commands, and direct control of GPU operations.
The driver also supports features such as MSAA (Multisample Anti-aliasing), low-level shaders, and performance counters . One limitation is the lack of support for GLSL shaders, which are not yet available at this stage of development.
As for the author, we can highlight that he was also in charge of publishing the Quake 3 game port for Raspberry Pi, which serves as a demonstration of the capabilities of the new controller.
The game is based on the ioQuake3 engine, to which was added a modular rendering backend based on Vulkan, originally developed by the Quake III Arena Kenny Edition project. By using the new controller in the game, it was possible to render more than 100 frames per second (FPS) on the Raspberry Pi 3B + board at 720p output.
Finally, regarding the implementation of this controller and to learn more about it , you can consult the controller repository at the following link.