add a generic multi GPU copy swapchain with Vulkan support

This MR adds the swapchain, uses it in the drm backend, and adds Vulkan support to it. In my testing, performance seems to be the same as OpenGL with AMD iGPU + AMD eGPU, and the same with Intel iGPU + Nvidia dGPU.

With Nvidia as primary GPU, Vulkan makes some performance improvements possible, however, this MR as it is doesn't unlock those yet. Afaict, we need to do two copies if we render on EGL, first one to an intermediary linear buffer, then a copy to the scanout buffer.

This includes !8913 (merged), !8925 (merged) and some parts from !5602 (closed) (the latter of which I'll rebase on top of this after this is merged)

cc #169

Edited by Xaver Hugl

Merge request reports

Loading