Igalia has been developing a new open-source Mesa driver for the Raspberry Pi 4 since December 2019 and announced the implementation of the classical triangle Vulkan demo last February. Four months after the announcement of the Vulkan effort for Raspberry Pi 4 (v3dv), they merged with Mesa upstream. This means Raspberry Pi 4’s v3dv Vulkan driver has become part of the official Mesa drivers. Thus, bringing several advantages, like easy to find as it is now available on the official Mesa repository. Bugs can now be filed on the official Mesa repository bug tracker.
In June, they passed over 70,000 tests from the Khronos Conformance Test Suite for Vulkan 1.0 and had an implementation of a significant subset of the Vulkan 1.0 API. This does not mean that the driver is ready for production use as they have implemented the full Vulkan 1.0 API. They are now passing over 100,000 tests in the Kronos Conformance Test Suite (CTS) and have implemented the full Vulkan 1.0 API. They are currently working on the Sascha Willems demos.
“Unfortunately, there are not a plethora of Vulkan applications and games like these that we can easily test and debug on a Raspberry Pi as of today, which posed a problem. One way to work around this limitation that was suggested after my presentation at XDC was to use Zink, the OpenGL to Vulkan layer in Mesa. Using Zink, we can take existing OpenGL applications that are currently available for Raspberry Pi and use them to test our Vulkan implementation a bit more thoroughly, expanding our options for testing while we wait for the Vulkan ecosystem on Raspberry Pi 4 to grow,” says Igalia.
For that desktop OpenGL version, Zink required a few optional Vulkan 1.0 features that we were missing in V3DV like logic operations, alpha to one, VK_KHR_maintenance1. While testing these features with the relevant CTS tests, they found a bug in the alpha to one test, which is currently in review.
The short-term objective for Igalia will be to get all CTS tests passed to achieve the Vulkan 1.0 conformance.
For transfer operations, the driver uses the texture unit and the bit shader. To provide improved support, the team is exploring better options as they cannot use the texture filtering unit (TFU) unit more often. Modern GPUs TMUs contain Texture Address Units (TA) and Texture Filtering Units (TF). Texture Address Units map texels to pixels and can perform texture addressing modes. Texture Filtering Units optionally perform hardware-based texture filtering. Another plan is to improve the performance on the Windows systems (WSI) as due to higher dimensions there are still some issues.
For the long-term objective, they are thinking about improving the reuse of the OpenGL driver because Vulkan drivers use pieces that are already being used by GL drivers. But for some features that are similar but not exactly the same, but can be worked on. Also, in the long term, one of the most important things is doing more real-world testing.
Going forward, Igalia expects to use Zink to test more applications and hopefully identify driver bugs that will help them make V3DV better.
Source: All the images were taken from the Open Source Summit and Igalia.
Abhishek Jadhav is an engineering student, RISC-V Ambassador, freelance tech writer, and leader of the Open Hardware Developer Community.