mirror of
https://github.com/italicsjenga/portability.git
synced 2025-02-23 17:47:43 +11:00
Merge pull request #3 from msiglreith/win32surface
Support win32 surface creation
This commit is contained in:
commit
d2dc11f229
1 changed files with 35 additions and 0 deletions
35
src/lib.rs
35
src/lib.rs
|
@ -5214,6 +5214,9 @@ pub struct VkSurfaceInner<Backend: hal::Backend> {
|
||||||
}
|
}
|
||||||
pub type VkSurfaceKHR = Handle<VkSurfaceInner<B>>;
|
pub type VkSurfaceKHR = Handle<VkSurfaceInner<B>>;
|
||||||
|
|
||||||
|
// TODO: temporary surface type, should be replacing `VkSurfaceKHR` in the future.
|
||||||
|
pub type VkSurfaceRawKHR = Handle<<B as hal::Backend>::Surface>;
|
||||||
|
|
||||||
pub const VkColorSpaceKHR_VK_COLOR_SPACE_BEGIN_RANGE_KHR: VkColorSpaceKHR =
|
pub const VkColorSpaceKHR_VK_COLOR_SPACE_BEGIN_RANGE_KHR: VkColorSpaceKHR =
|
||||||
VkColorSpaceKHR::VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
|
VkColorSpaceKHR::VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
|
||||||
pub const VkColorSpaceKHR_VK_COLOR_SPACE_END_RANGE_KHR: VkColorSpaceKHR =
|
pub const VkColorSpaceKHR_VK_COLOR_SPACE_END_RANGE_KHR: VkColorSpaceKHR =
|
||||||
|
@ -5804,6 +5807,38 @@ extern "C" {
|
||||||
pSwapchains: *mut VkSwapchainKHR)
|
pSwapchains: *mut VkSwapchainKHR)
|
||||||
-> VkResult;
|
-> VkResult;
|
||||||
}
|
}
|
||||||
|
pub type VkWin32SurfaceCreateFlagsKHR = VkFlags;
|
||||||
|
#[repr(C)]
|
||||||
|
#[derive(Debug, Copy)]
|
||||||
|
pub struct VkWin32SurfaceCreateInfoKHR {
|
||||||
|
pub sType: VkStructureType,
|
||||||
|
pub pNext: *mut ::std::os::raw::c_void,
|
||||||
|
pub flags: VkWin32SurfaceCreateFlagsKHR,
|
||||||
|
pub hinstance: *mut ::std::os::raw::c_void,
|
||||||
|
pub hwnd: *mut ::std::os::raw::c_void,
|
||||||
|
}
|
||||||
|
impl Clone for VkWin32SurfaceCreateInfoKHR {
|
||||||
|
fn clone(&self) -> Self { *self }
|
||||||
|
}
|
||||||
|
#[no_mangle]
|
||||||
|
pub fn vkCreateWin32SurfaceKHR(
|
||||||
|
instance: VkInstance,
|
||||||
|
pCreateInfos: *const VkWin32SurfaceCreateInfoKHR,
|
||||||
|
pAllocator: *const VkAllocationCallbacks,
|
||||||
|
pSurface: *mut VkSurfaceRawKHR,
|
||||||
|
) -> VkResult {
|
||||||
|
if cfg!(target_os = "windows") {
|
||||||
|
unsafe {
|
||||||
|
assert_eq!((*pCreateInfos).flags, 0);
|
||||||
|
assert!(pAllocator.is_null());
|
||||||
|
// TODO: handle HINSTANCE
|
||||||
|
*pSurface = Handle::new(instance.create_surface_from_hwnd((*pCreateInfos).hwnd));
|
||||||
|
VkResult::VK_SUCCESS
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unreachable!()
|
||||||
|
}
|
||||||
|
}
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
#[derive(Debug, Copy)]
|
#[derive(Debug, Copy)]
|
||||||
pub struct VkPhysicalDeviceFeatures2KHR {
|
pub struct VkPhysicalDeviceFeatures2KHR {
|
||||||
|
|
Loading…
Add table
Reference in a new issue