befb8cdd36
Certain structs contain sized character arrays that are converted to `CStr` for convenient accss to the user and our `Debug` implementation using unsafe `CStr::from_ptr(...as_ptr())`. There is no need to round-trip to a pointer and possibly read out of bounds if the NUL-terminator index (string length) is instead searched for by the newly stabilized `CStr::from_bytes_until_nul()` fn since Rust 1.69 (which panics if no NUL-terminator is found before the end of the slice). Unfortunately `unsafe` is still needed to cast the array from a `c_char` (`i8` on most platforms) to `u8`, which is what `from_bytes_until_nul()` accepts.
2.5 KiB
2.5 KiB
Ash-window
Interoperability between ash
and raw-window-handle
for surface creation.
Usage
ash-window = "0.12.0"
The library exposes two functions:
-
enumerate_required_extensions
returns the required instance extensions needed for surface creation from a specific display handle. -
create_surface
allows to create a surface from a type implementingRawDisplayHandle
andRawWindowHandle
:ash_window::create_surface(&entry, &instance, &window, None)?;
Versions
ash = "0.37"
Support
- Windows (
VK_KHR_win32_surface
) - Unix (
VK_KHR_xlib_surface
/VK_KHR_xcb_surface
/VK_KHR_wayland_surface
) - MacOS/IOS (
VK_EXT_metal_surface
) - Android (
VK_KHR_android_surface
)
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any Contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.