synvael/crates/renderer/src/surface.rs

21 lines
669 B
Rust

// SPDX-License-Identifier: AGPL-3.0-only
use crate::error::RendererError;
use ash::{Entry, Instance, khr, vk};
use raw_window_handle::{RawDisplayHandle, RawWindowHandle};
/// Creates a Vulkan surface for the given window.
pub fn create_surface(
entry: &Entry,
instance: &Instance,
display_handle: RawDisplayHandle,
window_handle: RawWindowHandle,
) -> Result<(khr::surface::Instance, vk::SurfaceKHR), RendererError> {
let surface = unsafe {
ash_window::create_surface(entry, instance, display_handle, window_handle, None)?
};
let surface_loader = khr::surface::Instance::new(entry, instance);
Ok((surface_loader, surface))
}