It's Vulkan Week
Vulkan was announced this week. It’s looks promising and I can’t wait to start hacking on it to see what’s under the hood. Unfortunately Apple has no intention of supporting Vulkan on OSX, as Metal is the API they are pushing, so I’ll have to choose either Windows or Linux.
I talked about why I chose OSX as my main development platform in a previous post: I spend much of my development time in the terminal, in both VIM, lldb/gdb and the command line. I tried using Cygwin on Windows in the past, but I just couldn’t get into it.
So this past week I downloaded the latest Ubuntu iso and dual booted it on Windows 8.1 machine. I went with Ubuntu as it seems like the most popular consumer Linux distribution, as well as the only distribution with official Vulkan SDK support from LunarG.
Modern Linux is pretty nice
It’s been a long time, probably more than 15 years, since I used a desktop Linux distribution. I’m only used to ssh
-ing into the occasional server, but that’s essentially the same as OSX’s BSD layer.
When I booted up from the USB stick I had flashbacks of when back in the day installing Linux was a nightmare of missing drivers and iterative attempts, but Canonical did an excellent job with the installer: in less than 10 minutes I was clicking away on the Ubuntu desktop.
For OSX I have quite a few .dotfiles
for my development setup, that I was able to use on Linux with almost zero changes. The only gotcha I came across was having to disable tmux-MacOSX-pasteboard like so:
My current workflow is:
- SSH into Linux from my iMac (until I upgrade the monitor of my Windows/Linux box, I can’t give up the 27” real-estate)
- Connect to the
tmux
server running on Linux - Connect via
VNC
to the Linux box and keep the remote desktop window open on the second monitor connected to the iMac - Write code/debug from lldb/gdb normally
- Run the game and test from the remote desktop
Developing on OpenGL 4.x with Ubuntu
I don’t know about other distributions, but the default drivers provided by Canonical only support OpenGL 3.x and no development headers are installed. To fix this I downloaded the latest Linux drivers from AMD (I have a Radeon R290X) as well as the mesa-common-dev
and xorg-dev
packages to have access to all the OpenGL headers.
Other than that I’m currently working porting platform specific code for Rival Fortress, and maybe next I’ll take a look at how to shovel some Vulkan goodness in the engine renderer :).