Skip to main content

My Turnip Merge Quest: Day Zero

3 min 580 words

Day Zero

alt
Image from Dariusz Sankowski - Unsplash

Hey there, earthling! Welcome to my series of posts/tutorials (I hope to make many of them… at least enough to call it a series e.e). I plan to share the knowledge I’ll be gathering along this journey as I make my first contribution to the open-source world, specifically to the Mesa-Turnip project.

I’m very excited to start this path. I’ve wanted to get involved in this world for quite a while, but for some reason or another, I just didn’t. But hey, here I am, better late than never! :)


Who It’s For


Image from Claudio Schwarz - Unsplash

The world of OSS moves fast, really fast. As time passes, it moves faster, which can be a bit scary (for me and probably for you too). This makes us, simple humans, feel lost and not know where the @#$ to start, what to do, how, which project to pick, etc.

My hope for this series is just to share my own path, showing how I started, where, my mistakes, my victories, and hopefully, my first real contribution, in hope of inspiring others too. In this case, focusing specifically on Turnip. This series is also for me, sharing it with you will help me stay motivated on this long path by recharging my mana to keep going :3.


Goal

alt
Image from Joel Vodell - Unsplash

As you can see in the title, my goal is to make my first merge request into the Turnip driver project from Mesa. Obviously, I want to make a relevant one, like a bug fix or some tool that can help others, not just a typo fix (without discrediting those fixes!). I know this is an ambitious goal for someone who has never contributed to any OSS project and also doesn’t have any driver experience…, but I’m very excited to get into it. Every journey has to begin somewhere :)

What Is Turnip?

Turnip, in short, is an open source Vulkan Linux driver for the Qualcomm Adreno GPUs. It is used mostly by Android users through emulators :), since those GPUs are presented mostly on mobile/tablet devices. Also, it’s present on VR headsets, now also on the new Snapdragon laptops, and in other less relevant devices. It’s also part of the Mesa project, the most important library for graphics on Linux 100% OSS! Freedreno it’s his father(?) since a lot of the code is based on it. Freedreno includes the OpenGL driver.

I’ll get into a lot of different details, such as why I chose it as my first OSS contribution, in my future posts.


Where We Stand

alt
Image from Timon Wanner - Unsplash

Well, since the goal is related to Turnip and Turnip = Drivers + ComputerGraphics + Linux I don’t start completely from 0, since I’m a Graphics Programmer with some years of experience and I also have experience in Linux, but for the other part…the part of GPU drivers, I got really interested in the last year, so I have some reading of blogs and articles on my back, but 0 experience and Android… -1. Why do I tell you this (which you probably don’t care…)? Well, I just want to be honest about where I’m starting from. My hope is that maybe you find yourself in a similar position as me trying to do the same. If I can achieve this starting from here, you can definitely do it too!