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

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 or become a Patron on Patreon

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

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

Android Gaming on Khadas VIM3 SBC (Video)

Android Gaming Khadas VIM3

I started playing with Khadas VIM3 Basic SBC powered by Amlogic A311D processor and 2GB RAM, and noticed Android benchmarks, especially 3D graphics were significantly better (40% improvement) than the ones of Rockchip RK3399. So I decided it may be interesting to show Android gaming on the single-board computer, and installed the latest version of Android 9.0 with Google Play store. Finally I connected the RF dongle of Tronsmart Mars G01 wireless gamepad, as well as USB keyboard and mouse to get some fun. Since the board only has two USB type-A ports, I also inserted MINIX NEO S2 USB-C + SSD hub to connect the gamepad RF dongle. Then I tried to install and play four games Beach Buggy Racing Installed via Google Play Played with Tronsmart gamepad. Perfectly smooth with max graphics settings. Similar to other TV boxes or boards. Riptide GP2 Installed via Amazon Store Played with gamepad Perfectly smooth with max graphics settings, and improvement over …

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

Self-hosted GLES on ChromeOS, part two

This is a follow-up post from an earlier guest post by Blu about OpenGL ES development on Chrome OS. One can’t practice real-time rendering to disk files for long ‒ it’s just unnatural. So after checking that my habitual GLES tests work as intended on ChromeOS when rendering to an off-screen-buffer-subsequently-saved-to-a-PNG, the next step was to figure out a way how to show frames on screen at a palpable framerate, if possible. Being as new to Chrome OS as the next guy, I had to start from scratch with ‘How to show EGL surfaces on screen fast’. In the comments section to the first article William Barath kindly mentioned that there was a wayland client library on Chromebrew, so I decided to pursue that as I had had (positive) prior experience with wayland. Long story short, the established way on most platforms for connecting wayland to EGL (or vice versa) is to ask wayland/weston for an EGL-compatible window surface, and …

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

Self-hosted OpenGL ES Development on ChromeOS?

opengles chromeos

This is a guest post by blu about developing OpenGL ES applications on Chrome OS. Ever since I’ve been using a chromebook in developer mode as my daily notebook (can’t beat 10h-plus battery life on ~300EUR well-performing machines), I’ve been missing one thing ‒ OpenGL ES coding under ChromeOS. My chromebook is more than well-equipped for GLES3 hardware-wise (verified via dual-booting to ArchLinux), and I always have up-to-date toolchains self-hosted under ChromeOS, thanks to an excellent package manager aptly named Chromebrew. And yet my coding-on-the-go under ChromeOS has been limited to console apps ‒ ChromeOS has strict limitations which include no X11 display manager, or any other industry-standard display manager that I’m aware of, and I don’t feel like dual-booting into ArchLinux too often ‒ ChromeOS has spoiled me with its fine-tuned performance. The no-display-manager limitation of ChromeOS is usually worked-around via Crouton but in my case Crouton would not help ‒ no 3D-hardware-accelerated support on ARM chromebooks. So in …

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

ROC-RK3328-CC Board Review, or the Case for Fast Storage and Adequate Power Supply

ROC-RK3328-CC Board Connection

Firefly team from T-chip company has send me some of their Rockchip development boards, and we’ve already checked the provided boards and accessories, so today I’ll report my experience with one of the board: ROC-RK3328-CC also known as Renegade. I won’t test it with Android, since I have already reviewed RK3328 Android TV boxes such as Zidoo X7, and I’ve been told the team is hard at work with Android 8.1 SDK, so an Oreo image should be released in a few weeks/months. So I had initially planned to report my experience with one of the Linux images,  then show how to install mainline Linux (currently 4.17) to the board, and reports what works. However, I encountered many issues, although likely not directly related to the board or its software support, so instead I’ll write about my experience getting started with the board, and list all the issues I had so that people can avoid those – or at least …

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

Review of Ubuntu 18.04 on ODROID-XU4Q Development Board

ODROID-XU4Q

Hardkernel released their first Samsung Exynos 5422 octa-core board in July 2014 with ODROID-XU3, which at the time was really a powerful board, but also pricey at $179. Later that year, the company released a cheaper version ($99) called ODROID-XU3 Lite, which I had the chance to review with Ubuntu 14.04 and Android 4.4. The company’s adventure with Exynos 5422 processor did not stop there, as in 2015 they released the smaller and even cheaper ($74) ODROID-XU4 board, and last year launched a fanless version of the board with ODROID-XU4Q featuring a large heatsink. More recently, the company also introduced ODROID-HC1 and ODROID-MC1 solutions for respectively network storage and clusters applications. That’s the short history of Hardkernel Exynos 5422 boards as I remember it, and that means that since 2014, or nearly 4 years so far, the company has kept updating Ubuntu and Android firmware for their board, including the just released Ubuntu 18.04 (MATE) operating system, which I’m going …

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