Skip to main content

jay_ash/extensions/ext/
host_image_copy.rs

1//! <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_host_image_copy.html>
2
3use crate::prelude::*;
4use crate::vk;
5#[cfg(doc)]
6use crate::{ext, khr};
7
8impl crate::ext::host_image_copy::Device {
9    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCopyMemoryToImageEXT.html>
10    #[inline]
11    pub unsafe fn copy_memory_to_image(
12        &self,
13        copy_memory_to_image_info: &vk::CopyMemoryToImageInfoEXT<'_>,
14    ) -> VkResult<()> {
15        unsafe {
16            (self.fp.copy_memory_to_image_ext)(self.handle, copy_memory_to_image_info).result()
17        }
18    }
19
20    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCopyImageToMemoryEXT.html>
21    #[inline]
22    pub unsafe fn copy_image_to_memory(
23        &self,
24        copy_image_to_memory_info: &vk::CopyImageToMemoryInfoEXT<'_>,
25    ) -> VkResult<()> {
26        unsafe {
27            (self.fp.copy_image_to_memory_ext)(self.handle, copy_image_to_memory_info).result()
28        }
29    }
30
31    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCopyImageToImageEXT.html>
32    #[inline]
33    pub unsafe fn copy_image_to_image(
34        &self,
35        copy_image_to_image_info: &vk::CopyImageToImageInfoEXT<'_>,
36    ) -> VkResult<()> {
37        unsafe { (self.fp.copy_image_to_image_ext)(self.handle, copy_image_to_image_info).result() }
38    }
39
40    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkTransitionImageLayoutEXT.html>
41    #[inline]
42    pub unsafe fn transition_image_layout(
43        &self,
44        transitions: &[vk::HostImageLayoutTransitionInfoEXT<'_>],
45    ) -> VkResult<()> {
46        unsafe {
47            (self.fp.transition_image_layout_ext)(
48                self.handle,
49                transitions.len() as u32,
50                transitions.as_ptr(),
51            )
52            .result()
53        }
54    }
55
56    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetImageSubresourceLayout2EXT.html>
57    ///
58    /// Also available as [`khr::maintenance5::Device::get_image_subresource_layout2()`]
59    /// when [`VK_KHR_maintenance5`] is enabled.
60    ///
61    /// Also available as [`ext::image_compression_control::Device::get_image_subresource_layout2()`]
62    /// when [`VK_EXT_image_compression_control`] is enabled.
63    ///
64    /// [`VK_KHR_maintenance5`]: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance5.html
65    /// [`VK_EXT_image_compression_control`]: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_compression_control.html
66    #[inline]
67    pub unsafe fn get_image_subresource_layout2(
68        &self,
69        image: vk::Image,
70        subresource: &vk::ImageSubresource2EXT<'_>,
71        layout: &mut vk::SubresourceLayout2EXT<'_>,
72    ) {
73        unsafe {
74            (self.fp.get_image_subresource_layout2_ext)(self.handle, image, subresource, layout)
75        }
76    }
77}