Arm Officially Supports Panfrost Open-Source Mali GPU Driver Development

Most GPU drivers found in Arm processors are known to be closed-source making it difficult and time-consuming to fix some of the bugs since everybody needs to rely on the silicon vendor to fix those for them, and they may even decide a particular bug is not important to them, so you’d be out of luck. So the developer community has long tried to reverse-engineer GPU drivers with projects like Freedreno (Qualcomm Adreno), Etnaviv (Vivante), as well as Lima and Panfrost for Arm Mali GPUs. Several years ago, Arm management was not interested at all collaborating with open-source GPU driver development for Mali GPUs, but as noted by Phoronix, Alyssa Rosenzweig,  a graphics software engineer employed by Collabora, explained Panfrost development was now done in partnership with Arm during a talk at the annual X.Org Developers’ Conference (XDC 2020). A recent merge commit confirms the move with Daniel Stone, Graphics Leads at Collabora commenting To reiterate the answer from earlier …

Support CNX Software – Donate via PayPal, become a Patron on Patreon, or buy review samples

JPEGDEC is a Faster JPEG Arduino Library Designed for 32-bit MCUs

In order to ensure software compatibility, Arduino libraries are supposed to work on various types of hardware from 8-bit microcontrollers with a limited amount of memory to more powerful 32-bit chips like STM32 Arm Cortex-M MCU or ESP32 dual-core Tensilica WiSoC that can access a larger amount of RAM. This is all good, but in some cases, this may affect performance. Larry Bank noticed this when looking for a JPEG viewers for Arduino and only found ones which sacrificed speed to work on MCUs with very little RAM. So he started to work on JPEDDEC JPEG Arduino library optimized for speed and compatible with any MCU with at least 20K of RAM. Optimizations go beyond just loading more data into memory, as Larry explains in a blog post, the library also performs the removal of stuffed bytes, optimize the Huffman decode and DCT parts, and more. Some of the key features of the library include: Support for any MCU with …

Support CNX Software – Donate via PayPal, become a Patron on Patreon, or buy review samples

Perfetto Profiler Now Supports Mali GPU Hardware Counters via Panfrost

Perfetto is an open-source system profiler, app tracer, and trace analyzer for Linux, Android & Chrome platforms, and user-space apps. The program can already visualize CPU and memory usage, as well as power consumption.  GPU support is more limited with the program only capable of sampling the GPU frequency when the driver outputs that information via ftrace. When Perfetto is also extendable thanks to a Tracing C++ SDK that “allows userspace applications to emit trace events and add more app-specific context to a Perfetto trace”. Collabora made use of the tracing SDK to add support for Mali Midgard GPU performance profiling in gfx-pps project using the Mali GPU hardware counters exposed via Panfrost open-source Mali GPU driver. After following the installation instructions, you’ll be able to run the following executables for tracing and profiling: tracedtracing service. traced_probes OS probes service. perfetto command-line tool for recording traces. producer-gpuproviding the Panfrost data source. There’s also gpu.cfgconfig file to feed as input to …

Support CNX Software – Donate via PayPal, become a Patron on Patreon, or buy review samples

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

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, become a Patron on Patreon, or buy review samples

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

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, become a Patron on Patreon, or buy review samples

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, become a Patron on Patreon, or buy review samples

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

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, become a Patron on Patreon, or buy review samples

Collabora & Microsoft to Bring OpenCL 1.2 and OpenGL 3.3 to DirectX 12 enabled Windows Devices

Collabora has been working on open-source graphics projects for a while, including Panfrost open-source drivers for Arm Midgard and Bitfrost GPUs which got experimental OpenGL ES 3.0 support earlier this year. But the company has also been working with Microsoft in order to provide an OpenCL 1.2 & OpenGL 3.3 translation layer for Windows devices compatible with DirectX 12. Their solution relies on Mesa 3D OpenCL and OpenGL open-source implementation with three main components: an OpenCL compiler using LLVM and the SPIRV-LLVM-Translator to generate SPIR-V representations of OpenCL kernels. The data goes through an SPIR-V to NIR translator (NIR is Mesa’s internal representation for GPU shaders), and finally to NIR-to-DXIL generating a DXIL compute shader and metadata understood by DirectX 12 (D3D12) a custom OpenCL runtime to do a direct translation of DirectX 12 (Not based on Mesa Clover implementation) a Gallium driver that builds and executes command-buffers on the GPU using the D3D12 API. It turns OpenGL commands into …

Support CNX Software – Donate via PayPal, become a Patron on Patreon, or buy review samples