
Few days ago, an experimental Vulkan driver for Raspberry Pi has been released HERE.
RPi-VK-Driver is a low level GPU driver for the Broadcom Videocore IV GPU that implements a subset of the Vulkan (registered trademark of The Khronos Group) standard. The implementation is not conformant to the standard (therefore it cannot be called a Vulkan driver, officially) but tries to follow it as closely as the hardware allows for it.
This driver supports the VideoCore IV, the GPU available on Raspberry Pi 1, 2 and 3.
I updated a bit the Vulkan plugin of GeeXLab and compared to the first time I tested Vulkan on RPi 4, I got better results… in the log file!
I tested this VK driver on a Raspberry Pi 3 with a fresh RaspiOS (2020-05-27).
According to the error message I got, it looks like this driver can’t work with X server running at the same time. When I tried to launch a simple clear window demo in Vulkan, the following message was printed in the terminal:
cannot set CRTC for connector 29: Permission denied
The author of the driver recommends to launch Vulkan demos from pure console mode:
if boot mode is set to Desktop, you’ll need to switch tty console (eg. ctrl+alt+f1) for modesetting to work. Otherwise X won’t let you do display modesetting. You can return to your desktop using ctrl+alt+f7.
GeeXLab needs a X11 window to run an OpenGL or Vulkan demo and is not ready to play with this driver. BUT a Vulkan instance has been created and properly initialized. Here is an extract of GeeXLab log file:
17:01:59(0000032) [info ] [Vulkan2] Vulkan renderer plugin (Windows, Linux) 17:01:59(0000033) [info ] [Vulkan2] Vulkan core library (libvulkan.so.1) loaded ok. 17:01:59(0000034) [info ] [Vulkan2] Instance extensions: 4 17:01:59(0000035) [info ] [Vulkan2] - 1/ VK_KHR_surface (spec version: 25) 17:01:59(0000036) [info ] [Vulkan2] - 2/ VK_KHR_display (spec version: 21) 17:01:59(0000037) [info ] [Vulkan2] - 3/ VK_EXT_debug_report (spec version: 9) 17:01:59(0000038) [info ] [Vulkan2] - 4/ VK_EXT_debug_utils (spec version: 1) 17:01:59(0000039) [info ] [Vulkan2] # instance layers: 0 17:01:59(0000040) [info ] [Vulkan2] # Vulkan devices: 1 17:01:59(0000041) [info ] [Vulkan2] [ GPU 0 ]-------------------------------------- 17:01:59(0000042) [info ] [Vulkan2] - GPU name: VideoCore IV HW 17:01:59(0000043) [info ] [Vulkan2] - DeviceID: 14E4-5250 17:01:59(0000044) [info ] [Vulkan2] - Raw driver version: 1 17:01:59(0000045) [info ] [Vulkan2] - Vulkan API version: 1.1.0 17:01:59(0000046) [info ] [Vulkan2] - Device type: VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU 17:01:59(0000047) [info ] [Vulkan2] - Memory heap count: 1 17:01:59(0000048) [info ] [Vulkan2] heap 0 - size: 250 MB 17:01:59(0000049) [info ] [Vulkan2] - Device extensions: 8 17:01:59(0000050) [info ] [Vulkan2] 1/ VK_KHR_display_swapchain (spec version: 9) 17:01:59(0000051) [info ] [Vulkan2] 2/ VK_KHR_maintenance1 (spec version: 2) 17:01:59(0000052) [info ] [Vulkan2] 3/ VK_KHR_maintenance2 (spec version: 1) 17:01:59(0000053) [info ] [Vulkan2] 4/ VK_KHR_maintenance3 (spec version: 1) 17:01:59(0000054) [info ] [Vulkan2] 5/ VK_KHR_swapchain (spec version: 70) 17:01:59(0000055) [info ] [Vulkan2] 6/ VK_EXT_debug_marker (spec version: 4) 17:01:59(0000056) [info ] [Vulkan2] 7/ VK_KHR_driver_properties (spec version: 1) 17:01:59(0000057) [info ] [Vulkan2] 8/ VK_KHR_performance_query (spec version: 1) 17:01:59(0000058) [info ] [Vulkan2] - Device layers: 0 17:01:59(0000059) [info ] [Vulkan2] vkGetPhysicalDeviceDisplayPropertiesKHR - Enumerated displays 17:01:59(0000060) [info ] [Vulkan2] Display ID 29 17:01:59(0000061) [info ] [Vulkan2] - Display name 1920x1080 17:01:59(0000062) [info ] [Vulkan2] - Display width 530 17:01:59(0000063) [info ] [Vulkan2] - Display height 300 17:01:59(0000064) [info ] [Vulkan2] - Display horizontal resolution 1920 17:01:59(0000065) [info ] [Vulkan2] - Display vertical resolution 1080 17:01:59(0000066) [info ] [Vulkan2] --- initializing GPU 0... 17:01:59(0000067) [info ] [Vulkan2] --- GPU 0 initialized ok
I hope the next time, I could run the RGB triangle demo!