Porting Games and Applications to RISC-V and Linux Devices
I’ve been getting more interested in open hardware lately, especially RISC-V and Linux devices.
Over the past few years we’ve seen more RISC-V boards, Linux phones, handhelds, and ARM-based Linux devices become available. The hardware keeps improving, Linux support continues to mature, and projects like RISE are helping strengthen the software ecosystem around RISC-V.
The more I looked into it, the more I realized the hardware isn’t really the problem anymore.
Software is.
Why port software?
As developers, our first instinct is often to build something new.
I enjoy doing that too, but open source already has an incredible collection of games, desktop applications, developer tools, and creative software.
Instead of reinventing software that already exists, I’d rather spend some time helping existing projects run on more platforms.
Every successful port makes a platform a little more useful.
Portability benefits everyone
Porting isn’t just about getting an application to compile.
Supporting another architecture often exposes assumptions nobody noticed before. Maybe the build system only works on one platform. Maybe there’s architecture specific code that can be cleaned up. Maybe a dependency needs updating.
Fixing those issues rarely benefits only one platform. Better portability usually makes software healthier for everyone.
Why RISC-V?
RISC-V is what pulled me into this rabbit hole.
It’s exciting to see an open instruction set architecture gaining momentum across embedded systems, single-board computers, laptops, and servers. Toolchains have matured, Linux support has improved significantly, and more projects are beginning to support the architecture.
Projects like RISE (RISC-V Software Ecosystem) are also helping improve compilers, libraries, tooling, and application support across the ecosystem.
It feels like a good time to start contributing.
…and Linux devices?
Linux phones, handhelds, and ARM-based Linux devices are becoming much more capable too. Most already have a solid Linux userspace. What they need is software.
Many desktop applications are surprisingly close to working. Some need portability fixes, some need performance work, and others simply need someone willing to build, test, and report issues. Moving beyond Android compatibility layers feels important if we want to use these devices for everyday work, not just emulation.
Why games?
Games are where most of my experience is, so they feel like the natural place to start.
A game exercises almost every part of a system: graphics, audio, input, file systems, networking, and performance. Getting games running well on different architectures is a great way to understand both the platform and the software itself.
Along the way I’ll also be looking at desktop applications, graphics software, and developer tools whenever something catches my interest.
The plan
I recently picked up a VisionFive 2 Lite, which will be my primary RISC-V development board.
Over the coming months I plan to:
- Port open source games and applications.
- Test them on real RISC-V hardware.
- Explore Linux phones, handhelds, and other Linux devices.
- Contribute portability fixes upstream whenever possible.
- Document everything I learn.
I’ll be writing about build systems, cross compilation, compiler errors, architecture specific bugs, performance, and all the little problems that appear when software leaves the platform it was originally written for.
Let’s see what compiles.