This looks improved, but I’m not sure why the `parent` needs to be part of `vulkan_object`, or why its declaration is hidden behind a macro. Couldn’t it simply be a pointer in the type-specific structs instead?
Sure, I'll leave it separate then. It was making things slightly more convenient by factoring the object declarations and their initialization in vulkan_object_init. But not all objects need to keep track of their parents, so probably more flexible to keep them separate.