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    pub unsafe fn cmd_copy_buffer2(
22        &self,
23        command_buffer: vk::CommandBuffer,
24        copy_buffer_info: &vk::CopyBufferInfo2KHR,
25    ) {
26        (self.fp.cmd_copy_buffer2_khr)(command_buffer, copy_buffer_info)
27    }
28    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImage2KHR.html>
29    pub unsafe fn cmd_copy_image2(
30        &self,
31        command_buffer: vk::CommandBuffer,
32        copy_image_info: &vk::CopyImageInfo2KHR,
33    ) {
34        (self.fp.cmd_copy_image2_khr)(command_buffer, copy_image_info)
35    }
36    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyBufferToImage2KHR.html>
37    pub unsafe fn cmd_copy_buffer_to_image2(
38        &self,
39        command_buffer: vk::CommandBuffer,
40        copy_buffer_to_image_info: &vk::CopyBufferToImageInfo2KHR,
41    ) {
42        (self.fp.cmd_copy_buffer_to_image2_khr)(command_buffer, copy_buffer_to_image_info)
43    }
44    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImageToBuffer2KHR.html>
45    pub unsafe fn cmd_copy_image_to_buffer2(
46        &self,
47        command_buffer: vk::CommandBuffer,
48        copy_image_to_buffer_info: &vk::CopyImageToBufferInfo2KHR,
49    ) {
50        (self.fp.cmd_copy_image_to_buffer2_khr)(command_buffer, copy_image_to_buffer_info)
51    }
52    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBlitImage2KHR.html>
53    pub unsafe fn cmd_blit_image2(
54        &self,
55        command_buffer: vk::CommandBuffer,
56        blit_image_info: &vk::BlitImageInfo2KHR,
57    ) {
58        (self.fp.cmd_blit_image2_khr)(command_buffer, blit_image_info)
59    }
60    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdResolveImage2KHR.html>
61    pub unsafe fn cmd_resolve_image2(
62        &self,
63        command_buffer: vk::CommandBuffer,
64        resolve_image_info: &vk::ResolveImageInfo2KHR,
65    ) {
66        (self.fp.cmd_resolve_image2_khr)(command_buffer, resolve_image_info)
67    }
68
69    pub const fn name() -> &'static CStr {
70        vk::KhrCopyCommands2Fn::name()
71    }
72
73    pub fn fp(&self) -> &vk::KhrCopyCommands2Fn {
74        &self.fp
75    }
76}