Moving backend specific code to backend files seems good. I'm not sure about more fine grained separation, in cases where there's no clear lines to draw I'd rather have things in a single file - that also makes it somewhat easier to refactor things. Anyway, the outlined plan sounds reasonable, but also I wouldn't mind just having backend_vk.c and backend_gl.c files.