25 lines
817 B
Rust
25 lines
817 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.
|
|
///
|
|
/// # Errors
|
|
///
|
|
/// Returns [`RendererError::VulkanError`] if the platform surface cannot be created for the given display and window handles.
|
|
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))
|
|
}
|