introduce "resource_gl.c" and "resource_vk.c", and move most resource code to those functions. This collapses the separation between buffer, texture, sampler, and view code, though, and there may be some benefit in keeping those separate.
For what it's worth, in terms of terminology, resources, samplers and views are quite distinct. On the other hand, the separation between buffer, texture, surface, and resource code is largely just historic.
move other functions to backend-specific adapter or context functions, where it makes sense. Swapchain code mostly gets moved to context_*.c, though I'm not sure whether that makes the most sense or not.
Swapchains and contexts are somewhat tied together in the GL code, again largely for historic reasons, but I think the direction we've been moving in has largely been to try to separate them.