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}