vulkan: add swapchain implementation
Mostly ported from mpv, but some parts were slightly rewritten. Notably, the way window resizing is handled. Instead of having two different sources of window size information and having to argue about which one to take as authoritative, we only use the current extent as reported by the vulkan implementation. Apparently, not all platforms report valid values here - particularly, wayland apparently doesn't. If somebody has an idea for how to figure out the size of a wayland window, feel free to tell me; because the vulkan wayland extension doesn't seem to consider it being possible.
Showing with 553 additions and 3 deletions