1 use crate::vk; 2 use crate::{Device, Instance}; 3 use std::ffi::CStr; 4 use std::mem; 5 6 /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_copy_commands2.html> 7 #[derive(Clone)] 8 pub struct CopyCommands2 { 9 fp: vk::KhrCopyCommands2Fn, 10 } 11 12 impl CopyCommands2 { new(instance: &Instance, device: &Device) -> Self13 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] cmd_copy_buffer2( &self, command_buffer: vk::CommandBuffer, copy_buffer_info: &vk::CopyBufferInfo2KHR, )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] cmd_copy_image2( &self, command_buffer: vk::CommandBuffer, copy_image_info: &vk::CopyImageInfo2KHR, )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] cmd_copy_buffer_to_image2( &self, command_buffer: vk::CommandBuffer, copy_buffer_to_image_info: &vk::CopyBufferToImageInfo2KHR, )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] cmd_copy_image_to_buffer2( &self, command_buffer: vk::CommandBuffer, copy_image_to_buffer_info: &vk::CopyImageToBufferInfo2KHR, )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] cmd_blit_image2( &self, command_buffer: vk::CommandBuffer, blit_image_info: &vk::BlitImageInfo2KHR, )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] cmd_resolve_image2( &self, command_buffer: vk::CommandBuffer, resolve_image_info: &vk::ResolveImageInfo2KHR, )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] name() -> &'static CStr76 pub const fn name() -> &'static CStr { 77 vk::KhrCopyCommands2Fn::name() 78 } 79 80 #[inline] fp(&self) -> &vk::KhrCopyCommands2Fn81 pub fn fp(&self) -> &vk::KhrCopyCommands2Fn { 82 &self.fp 83 } 84 } 85