My Turnip Merge Quest: Day Zero
Day Zero

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

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 :)
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

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!
...ere, earthling! In this short section, I want to share how I decided which hardware to pick for the [[Turnip quest]]. Mainly, what things I took into account, the...
...be a little (or a lot) overwhelming. I'll share my own experience, and how I ended up choosing [[Turnip]]. It may give you some heuristic from where to start and how to...
...this post is to share my setup and help you to leave everything ready to develop comfortably on [[Turnip]], and this also means connecting with other...