Skip to main content

jay_ash/extensions/khr/
external_memory_fd.rs

1//! <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_memory_fd.html>
2
3use crate::prelude::*;
4use crate::vk;
5use core::mem;
6
7impl crate::khr::external_memory_fd::Device {
8    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetMemoryFdKHR.html>
9    #[inline]
10    pub unsafe fn get_memory_fd(&self, get_fd_info: &vk::MemoryGetFdInfoKHR<'_>) -> VkResult<i32> {
11        unsafe {
12            let mut fd = mem::MaybeUninit::uninit();
13            (self.fp.get_memory_fd_khr)(self.handle, get_fd_info, fd.as_mut_ptr())
14                .assume_init_on_success(fd)
15        }
16    }
17
18    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetMemoryFdPropertiesKHR.html>
19    #[inline]
20    pub unsafe fn get_memory_fd_properties(
21        &self,
22        handle_type: vk::ExternalMemoryHandleTypeFlags,
23        fd: i32,
24        memory_fd_properties: &mut vk::MemoryFdPropertiesKHR<'_>,
25    ) -> VkResult<()> {
26        unsafe {
27            (self.fp.get_memory_fd_properties_khr)(
28                self.handle,
29                handle_type,
30                fd,
31                memory_fd_properties,
32            )
33            .result()
34        }
35    }
36}