Raspberry Pi VideoCore IV Boards Get an Unofficial Vulkan Driver Good Enough to Play Quake 3

Raspberry Pi 3 Vulkan VideoCore IV GPU

The Raspberry Pi Foundation is collaborating with Igalia to work on everything related to graphics support for VideoCore VI GPU found in Raspberry Pi 4’s Broadcom BCM2711 SoC. This lead to OpenGL ES 3.1 conformance at the beginning of the year, and good progress with Raspberry Pi 4 Vulkan support. There’s no plan to work on an official Vulkan driver for earlier Raspberry Pi  boards with VideoCore IV GPU, but since the Raspberry Pi Foundation released open-source VideoCore IV driver and documentation several years ago, it’s, in theory, possible for skilled developers to improve on it. That’s exactly what Martin Thomas, an NVIDIA engineer, has done in his spare time, and after two years of work, a Vulkan driver for Raspberry Pi VideoCore IV board – RPi-VK-Driver – has been released on Github. Pi-VK-Driver implements a subset of the Vulkan, and since it is not fully conformant to the standard it cannot technically be called a Vulkan driver as it …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Raspberry Pi 4 Vulkan Source Code Released, More Complex Vulkan Demos Supported

Raspberry Pi 4 Vulkan Demo

The Raspberry Pi Foundation announced they had started working on Vulkan support for Raspberry Pi 4 in January with the initial implementation being able to render the “hello world of graphics”, i.e. a basic triangle. Progress are been made with the Mesa 3D library been able to render more complex demos, specifically Sascha Willems Vulkan demos. That’s encouraging, but the current Vulkan implementation is still not usable to play games on Raspberry Pi, and some of Sascha’s Vulkan demos are still not working at the time of writing. Yet the list of working demos is fairly long: distancefieldfonts descriptorsets dynamicuniformbuffer gears gltfscene imgui indirectdraw occlusionquery parallaxmapping pbrbasic, pbribl, pbrtexture pushconstants scenerendering shadowmapping,  shadowmappingcascade specializationconstants sphericalenvmapping stencilbuffer textoverlay texture, texture3d, texturecubemap triangle vulkanscene The other good news is that Igalia and the Raspberry Pi Foundation have now released the source code of v3dv fork of Mesa library on Freedesktop Gitlab so other developers can try it out. Instructions to build v3dv …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Panfrost Gets First 3D Renders on Bifrost GPU (Mali-G31) including Basic Texture Support

Collabora has been working on Panfrost open-source Arm Mali GPU driver for over a year. The drive aims to support both Midgard and Bifrost families. But so far, the company had mostly focused on Midgard (Mali-T6xx/T7xx) GPUs with for example experimental OpenGL ES 3.0 support announced last February. Collabora engineers, such as Alyssa Rosenzweig, have now started to work on Bifrost support, and some good progress has been made since they managed to have Panfrost render the first 3D graphics with basic texture support using a platform with an Arm Mali-G31 GPU. Alyssa notes that while Midgard and Bifrost have a similar command stream requiring a few changes, the Bifrost instruction set is completely different and required building a new compiler from scratch. This leads to changes to the Intermediate Representation (IR), 16-bit data support, a different register allocation mechanism due to adapt to irregular vector architectures, and the latter also made packing (final code generation) much more complicated than …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Qt for MCUs 1.1 Adds Support for more STM32 and NXP i.MX RT Boards, FreeRTOS

Qt for MCUs 1.1 Installer

The first stable version of Qt for MCUs was released in August 2019 in order to bring Qt graphical toolkit to microcontrollers such as STMicro STM32F7,  Renesas RH850, or NXP i.MX RT1050.   Qt for MCUs would run bare metal on supported boards, and software engineers would develop graphical interface using QML and C++. Qt for MCUs 1.1 has just been released with the addition of more STM32 and i.MX RT boards, support for FreeRTOS real-time operating system, and more. Qt for MCUs 1.1 highlights: Five new supported boards:  NXP i.MX RT 1064 EVK, STM32 H750B-DK, STM32 F469i-disco, STM32 L4R9i-disco, and STM32 L4R9i-eval Asset management Optional PNG compressions for assets to lower storage footprint Option to read data directly from flash memory for lower RAM consumption, or copy to RAM for better performance, at the cost of higher RAM consumption. FreeRTOS support (technology preview) to run background tasks without blocking the Qt Quick user interface Qt Charts for MCUs (technology preview) …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Raspberry Pi 4 is Now OpenGL ES 3.1 Conformant, Work on Vulkan Drivers Started

Raspberry Pi 4 Vulkan

Raspberry Pi 4 Model B 4 was launched last June with a new Broadcom BCM2711 SoC featuring an upgraded Videocore VI GPU supporting OpenGL ES 3.0 graphics API. Some drivers only implement a subset of OpenGL 3.0/3.1 3D graphics standard defined by the Khronos Group, and the good news is that Raspberry Pi 4 Model B is now OpenGL ES 3.1 conformant, as it passed all tests in Khronos conformance test suite. That means that any Linux programmed using OpenGL ES 3.1 API should work out of the box, although in some cases there may be issues/bugs that were not detected by the test suite. The Vulkan API is an evolution of OpenGL ES API that is meant to be more power-efficient as it better makes utilize of multi-core processors. The Raspberry Pi Foundation has also started working on Vulkan support for Raspberry Pi 4, and while the driver is still very much work in progress the basic triangle demo …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Some Interesting Talks from FOSDEM 2020 Schedule

FOSDEM 2020 Schedule

We wrote about IoT devroom call for proposals for FOSDEM 2020 a little while ago, and as the free open-source developer meetup is getting closer, FOSDEM 2020 organizers released the schedule. So I’ll look at some of the talks in the relevant devrooms such as the Internet of Things, hardware enablement, Embedded, Mobile and Automotive, as well as RISC-V and others to compose my own little virtual schedule for the 2-day event. Saturday, February 1 10:30 – 10:50 – How lowRISC made its Ibex RISC-V CPU core faster – Using open source tools to improve an open-source core – by Greg Chadwick Ibex implements RISC-V 32-bit I/E MC M-Mode, U-Mode, and PMP. It uses an in-order 2 stage pipe and is best suited for area and power-sensitive rather than high-performance applications. However, there is scope for meaningful performance gains without major impact to power or area. This talk describes work done at lowRISC to analyze and improve the performance of …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Kazan Software Vulkan Implementation is Optimized for RISC-V Processors

Kazan Vulkan RISC-V GPU

More and more people want to run fully open source systems due to philosophical, privacy and security concerns, but on embedded systems with a GPU is often hard to achieve due to closed-source binary blobs. Projects such as Freedreno and Etnaviv have freed Qualcomm Adreno and Vivante GPUs, but it takes years to implement workable reverse-engineered open source GPU drivers. One solution to get an open source graphics driver from the get-go is to implement the rendering into the CPU, but the problem is that it’s usually really slow, and GPU’s are much faster thanks to their ability to quickly handle parallel tasks. Kazan is a software-rendering Vulkan implementation, but it may be eventually end up as a low-end soft-GPU in some RISC-V SoCs thanks to specific instructions. I found out about Kazan through the Libre RISC-V M-Class chip project that aims to be a low-power, mobile-class, 64-bit quad-core SoC clocked at a minimum 800 MHz clock rate and relying …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Turnip is an Open Source Vulkan Driver for Adreno GPU

turnip open source adreno vulkan driver

Qualcomm Adreno GPUs have one of the best open source GPU driver for Arm SoC thanks to Freedreno driver. The driver relies on OpenGL ES API however, and nearly four of years ago, Khronos introduced the Vulkan API that aims to reduce CPU resources usage, and adds support multiple command buffers. The good news is there has been development of a Vulkan driver for Adreno 500 and 600 series GPU called Turnip, also referred to as Freedreno_vk (Freedreno Vulkan) in the code. The Turnip driver has been developed by Bas Nieuwenhuizen, a Site Reliability Engineer at Google who also happens to be RADV (Radeon Vulkan) lead developer, Chia-I Wu, a Google software engineer working on Android graphics, Chad Versace, Intel’s software engineer working on Linux OpenGL stack, and others as revealed by a recent merge into Mesa 19.1 slated to be released next quarter. Via Phoronix Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting …

Support CNX Software – Donate via PayPal or become a Patron on Patreon