RSSAmplifier

Blog

Feresignum

Recent content on Feresignum

feresignum.comRSS feed ↗22 posts

Latest posts

Reverse engineering the Adreno Vulkan driver

Being an engine programmer usually means being a bit of a jack of all trades. There’s always something weird going on and you have to be pretty familiar with a bunch of low level details that come in handy in unexpected ways. Recently I went down a somewhat unexpected rabbit hole where those skills came in extremely hand. In an effort to blog more and also because it seems like I was the…

Resolving Metal GPU timers

Almost a year ago, with macOS 10.15, Apple finally added GPU timer queries to Metal. The documentation for it is incredibly lacklustre to this day, saying the following about [MTLCounterResultTimestamp timestamp] : 
 
 A timestamp. 
 
 That’s pretty useless, there’s no unit attached to it! 
 I actually put down GPU timers on Metal because they were pretty damn…

Debugging VK_ERROR_DEVICE_LOST with Nvidia Device Diagnostics

If you are working with Vulkan, chances are that at some point you’ll run into a VK_ERROR_DEVICE_LOST error. It’s the worst kind of error, chances are that your GPU choked on some data sometime about a frame or two ago and the position where you received the error is nowhere near where the GPU actually decided to throw up its hands and give up. This is of course because GPUs and CPUs…

Fragment shader based interior mapping

Seems like everybody is excited about the fake interior mapping in Spiderman these days. Here is a Kotaku video showing them off: 
 
 Now, the technique itself is nothing new, it’s been proposed by Joost van Dongen who published a paper about it here. The idea is to divide the space into evenly sized “rooms” and then cast a ray in the fragment shader to figure out whether…

Automatic detection of profiling tools

Let’s say that you occasionally look at your application with NSight , VTune , or any other profiling tool of choice. Naturally you want to add debug markers into your application, but you might not necessarily ship with them or have them run at all when no profiling tool is attached. You could put them behind a command line flag, but I prefer automatic discovery: One build, when run with…

The curious case of 'ìe°[^]├UëÕ]Ús UëÕâýj'

11 months ago was the last time I touched firedrake , and last weekend the urge to mess with it caught me again. So I set up WSL, installed all necessary dependencies and opened firedrake. I fired up the last compiled version I had, just to remind myself of where I had left things, and I QEMU was happy to dump my debug printf() ’s via the virtual UART into stdout. All was good. Then I…

Capturing a trace with UIforETW

Event Tracing for Windows (ETW) is an incredibly useful tracing mechanism built into Windows, however, it’s not the easiest thing to use. In my day job, ETW is incredibly useful to get profiling samples from customer machines to get insights into performance issues. Since I keep writing the same How-To for everyone, I figured I just write down once here and then link it to people. If you are…

Sushi - A Gameboy game

This is a blogpost I’ve been meaning to write for a long time, it’s about a game Nils and I wrote back in January 2017 for the Inno Games game Jam. That game jam happened together with the global game jam and the topic was: Waves. The source code for the game can be found here 
 Nils and I both like challenges and even before going to the game jam we had decided to write a game for…

Anatomy of a graphics driver bug

X-Plane’s plugin systems allows authors to load models in two ways: Asynchronously and Synchronously. Most plugins tend to use synchronous loading, but since all plugins run on the main thread there is a need and desire for some to use asynchronous loading. Up until now, the latter was broken however, and plugin authors complained about invisible models. From what I understand Pilot Edge…

Investigating a X-Plane plugin's crash to desktop

This post is about a crash to desktop that I investigated in a popular plugin for X-Plane, X-Assign . This happened in my free time, although I had the advantage of having the X-Plane source code at hand. 
 Git bisect 
 My new favourite tool on earth is git bisect , which I used to find the offending commit rather quickly. At this point I wasn’t sure who was at fault for the crash,…

Moving servers & domains

For years I have hosted all of my servers at uberspace , which are a fantastic company that makes hosting websites incredibly easy. At this point in time, I have 4 uberspaces running. 
 As you may or may not have noticed, this blog now sports a new look and also a new domain name! Under the hood, it also moved away from Uberspace and over to Linode. This change has been a long time coming,…

Ultimaker modding

Long time no blog post, so I figured, I might as well write a blog post about something super boring: Modding my 3D Printer! 
 For quite a while now I’ve been running OctoPrint on a Raspberry Pi as my print server, as it’s much more convenient than shoving G-Code onto the SD card and then printing from there. However, this has one downside: I had to have the Pi close by the printer since they…

Vero - True Social released

I talked about how I’m an evil person and part of the growing effort of destroying the web @hmans.io likes before (as if my recent Coffee machine post wasn’t terrible enough). I haven’t said what I was working on, or really, what the company I work for is working on, but now it’s released and I can finally talk about it: It being a social network. Or better put, yet another…

CLion 1.1 EAP

After writing about my thoughts on the CLion 1.0 release, I figured it’s only fair if I now also write about the new 1.1 EAP which Jetbrains released yesterday. I’ve only tested it for about an hour, but, I’m very very pleased with it!
The parser 
 The parser got some major improvements! It’s still not a Clang but something home cooked, but boy did they put some serious effort into it.…

Pebble Blueprint

Guys, guys, guys… I have been working on a project for a couple of weekends now and to make a long story short it’s a watchface and watchapp generator for the Pebble Time for iOS. The basic idea is that it allows putting watchfaces/watchapps together easily and then deploying them on the Pebble that is attached to the iOS device. 
 Here is a video of the whole thing in action,…

CLion, a couple of weeks after the EAP

I bought CLion after sporadically using it in during the EAP phase. I’ve been using Xcode and Visual Studio as IDE of choice so far on OS X and Windows, and both are great, but when developing a cross platform library like Rayne it definitely was a pain to keep both project files in sync. CLion promises to not have that issue, be cross platform AND allow me to use one single build system: CMake.…

Integrating Crashlytics into Build Bots

Testflight has seemingly no interest in its regular business anymore and broke the crashreport symbolication a long time ago. We are quite dependent on that though, we don’t want to know how many times the app crashed but where it crashed. So, a week and a bit ago we jumped ship to Crashlytics, which is a really nice platform to analyze crashes. The only issue is that their dSYM upload requires a…

Firedrake memory corruption bug

There was a bug that I couldn’t figure out for the life of me. It was somewhere deep in my hobby kernel Firedrake and it made zero sense. 
 It manifests as memory corruption, more specifically, at some point a pointer suddenly becomes zero. I tried to narrow it down with printf() debugging, but that didn’t get me very far because at that point the scheduler is already running and regular task…

Printing with Wood and Metal on an Ultimaker 2

I’ve been printing lots of robots today on my Ultimaker 2, trying out different materials and what settings to use to print with them. I’ve used the special filaments from Colorfabb , who had the genius idea to mix normal PLA filaments with metal and wood to allow normal printers to print with different materials. And because pictures say more than 1000 words, or so I’ve heard,…

Firedrake and Intel Edison

I’m back from a business trip to Nice and a lot of stress that has kept me busy since the end of October is slowly fading away, which means I can go back and actually start hacking on the Intel Edison. Which actually means that I’m going to polish up a lot of parts of Firedrake before actually turning around and attacking the Edison. It helps to have a solid foundation to bootstrap…

Intel Edison Progress

So, progress report on my Edison adventure: I managed to get my own kernel on it and have U-Boot boot it, which in retrospect took way longer than it should have (I’m not good at computers and embedded). Now the next issue is that the Edison has a Watchdog that will automatically reset the board if the Kernel is not periodically pinging it. The whole thing works by doing IPC from the Atom to…

Intel Edison

Received my Intel Edison today, super cute device that promises to be quite lovely (especially for me coming from an x86 background and having a hard time with the ARM on the Raspberry Pi). I especially love the super small form factor of the Edison, which makes some applications much more feasible than the Pi. 
 I still want to port Firedrake to the Pi and have actually made quite a few…