private static (GraphicsDevice gd, Swapchain sc) CreateDeviceAndSwapchain( Sdl2Window window, VRContext vrc, GraphicsBackend backend, GraphicsDeviceOptions gdo) { if (backend == GraphicsBackend.Vulkan) { (string[] instance, string[] device) = vrc.GetRequiredVulkanExtensions(); var vdo = new VulkanDeviceOptions(instance, device); var gd = GraphicsDevice.CreateVulkan(gdo, vdo); var swd = new SwapchainDescription( VeldridStartup.GetSwapchainSource(window), (uint)window.Width, (uint)window.Height, gdo.SwapchainDepthFormat, gdo.SyncToVerticalBlank, true); var sc = gd.ResourceFactory.CreateSwapchain(swd); return(gd, sc); } else { var gd = VeldridStartup.CreateGraphicsDevice(window, gdo, backend); var sc = gd.MainSwapchain; return(gd, sc); } }