Box86 is an x86 Emulator for Raspberry Pi and other 32-bit Arm platforms

Box86 x86 emulation Raspberry Pi

Last week, we wrote about Raspberry Pi 4 Vulkan project status and future plans, and one person commented they are currently trying to get dxvk to work Box86, and that CNX Software should write about the latter. Cool, but what does that mean? dxvk is an open-source Vulkan-based implementation of D3D9, D3D10, and D3D11 for Linux,  and Box86 is a Linux userspace x86 emulator that works on 32-bit Arm targets like the Raspberry Pi SBC. Nice, and I remember I ran x86 Linux and Windows on Raspberry Pi a few years ago using a closed-source commercial program called Exagear, but having an open-source solution is even better. That means 64-bit Arm is not supported at all, and Box86 can not even be built for Aarch64 targets. Since many x86 games require OpenGL, as opposed to OpenGL ES, Box86 works best in conjunction with gl4es. By installing Box86 on Raspberry Pi […]

Raspberry Pi 4 Vulkan Project Status & Future Plans – Q4 2020

Current status of Vulkan driver

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 […]

Imagination IMG B-Series GPU family scales from IoT to the datacenter

Imagination IMG B-Series GPU: BXT MC4

Last year, Imagination Technologies unveiled IMG A-Series GPU family scaling from low-power IoT to mobile and high-performance server applications with up to 2.5 times the performance of the earlier PowerVR 9-series GPUs, as well as eight times faster AI processing and 60% less power under similar conditions. While I’m not aware of any SoCs announced with the new IMG A-Series GPU yet, the company has already announced the next-gen IMG B-Series GPU family with up to 4 times the multi-core performance thanks to decentralized multi-core technology, 30% lower power consumption, and 2.5 times the fill rate. The company offers four types of IM B-series GPU, each optimized for specific applications IMG BXE for high-resolution displays – From 1 up to 16 pixels per clock (PPC) BXE scales from 720p to 8K for UI rendering and entry-level gaming. IMG BXM designed for mid-range mobile gaming and complex UI solutions for DTV […]

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 […]

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

OpenCL DirectX Translation Layer

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 […]

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 […]

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 […]

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) […]

EmbeddedTS embedded systems design