ash/extensions/khr/
copy_commands2.rs

1use crate::vk;
2use crate::{Device, Instance};
3use std::ffi::CStr;
4use std::mem;
5
6/// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_copy_commands2.html>
7#[derive(Clone)]
8pub struct CopyCommands2 {
9    fp: vk::KhrCopyCommands2Fn,
10}
11
12impl CopyCommands2 {
13    pub fn new(instance: &Instance, device: &Device) -> Self {
14        let fp = vk::KhrCopyCommands2Fn::load(|name| unsafe {
15            mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr()))
16        });
17        Self { fp }
18    }
19
20    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyBuffer2KHR.html>
21    #[inline]
22    pub unsafe fn cmd_copy_buffer2(
23        &self,
24        command_buffer: vk::CommandBuffer,
25        copy_buffer_info: &vk::CopyBufferInfo2KHR,
26    ) {
27        (self.fp.cmd_copy_buffer2_khr)(command_buffer, copy_buffer_info)
28    }
29    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImage2KHR.html>
30    #[inline]
31    pub unsafe fn cmd_copy_image2(
32        &self,
33        command_buffer: vk::CommandBuffer,
34        copy_image_info: &vk::CopyImageInfo2KHR,
35    ) {
36        (self.fp.cmd_copy_image2_khr)(command_buffer, copy_image_info)
37    }
38    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyBufferToImage2KHR.html>
39    #[inline]
40    pub unsafe fn cmd_copy_buffer_to_image2(
41        &self,
42        command_buffer: vk::CommandBuffer,
43        copy_buffer_to_image_info: &vk::CopyBufferToImageInfo2KHR,
44    ) {
45        (self.fp.cmd_copy_buffer_to_image2_khr)(command_buffer, copy_buffer_to_image_info)
46    }
47    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImageToBuffer2KHR.html>
48    #[inline]
49    pub unsafe fn cmd_copy_image_to_buffer2(
50        &self,
51        command_buffer: vk::CommandBuffer,
52        copy_image_to_buffer_info: &vk::CopyImageToBufferInfo2KHR,
53    ) {
54        (self.fp.cmd_copy_image_to_buffer2_khr)(command_buffer, copy_image_to_buffer_info)
55    }
56    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBlitImage2KHR.html>
57    #[inline]
58    pub unsafe fn cmd_blit_image2(
59        &self,
60        command_buffer: vk::CommandBuffer,
61        blit_image_info: &vk::BlitImageInfo2KHR,
62    ) {
63        (self.fp.cmd_blit_image2_khr)(command_buffer, blit_image_info)
64    }
65    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdResolveImage2KHR.html>
66    #[inline]
67    pub unsafe fn cmd_resolve_image2(
68        &self,
69        command_buffer: vk::CommandBuffer,
70        resolve_image_info: &vk::ResolveImageInfo2KHR,
71    ) {
72        (self.fp.cmd_resolve_image2_khr)(command_buffer, resolve_image_info)
73    }
74
75    #[inline]
76    pub const fn name() -> &'static CStr {
77        vk::KhrCopyCommands2Fn::name()
78    }
79
80    #[inline]
81    pub fn fp(&self) -> &vk::KhrCopyCommands2Fn {
82        &self.fp
83    }
84}