diff --git a/Changelog.md b/Changelog.md index fd22a422f..f52fbf0ac 100644 --- a/Changelog.md +++ b/Changelog.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added `VK_KHR_copy_commands2` device extension (#571) - Added conversions from `Extent2D` to `Extent3D` and `Rect2D` (#557) ## [0.35.1] - 2022-01-18 diff --git a/ash/src/extensions/khr/copy_commands2.rs b/ash/src/extensions/khr/copy_commands2.rs new file mode 100644 index 000000000..5f659da9c --- /dev/null +++ b/ash/src/extensions/khr/copy_commands2.rs @@ -0,0 +1,80 @@ +use crate::vk; +use crate::{Device, Instance}; +use std::ffi::CStr; +use std::mem; + +/// +#[derive(Clone)] +pub struct CopyCommands2 { + fp: vk::KhrCopyCommands2Fn, +} + +impl CopyCommands2 { + pub fn new(instance: &Instance, device: &Device) -> Self { + let fp = vk::KhrCopyCommands2Fn::load(|name| unsafe { + mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr())) + }); + Self { fp } + } + + /// + pub unsafe fn cmd_copy_buffer2_khr( + &self, + command_buffer: vk::CommandBuffer, + copy_buffer_info: &vk::CopyBufferInfo2KHR, + ) { + self.fp + .cmd_copy_buffer2_khr(command_buffer, copy_buffer_info) + } + /// + pub unsafe fn cmd_copy_image2_khr( + &self, + command_buffer: vk::CommandBuffer, + copy_image_info: &vk::CopyImageInfo2KHR, + ) { + self.fp.cmd_copy_image2_khr(command_buffer, copy_image_info) + } + /// + pub unsafe fn cmd_copy_buffer_to_image2_khr( + &self, + command_buffer: vk::CommandBuffer, + copy_buffer_to_image_info: &vk::CopyBufferToImageInfo2KHR, + ) { + self.fp + .cmd_copy_buffer_to_image2_khr(command_buffer, copy_buffer_to_image_info) + } + /// + pub unsafe fn cmd_copy_image_to_buffer2_khr( + &self, + command_buffer: vk::CommandBuffer, + copy_image_to_buffer_info: &vk::CopyImageToBufferInfo2KHR, + ) { + self.fp + .cmd_copy_image_to_buffer2_khr(command_buffer, copy_image_to_buffer_info) + } + /// + pub unsafe fn cmd_blit_image2_khr( + &self, + command_buffer: vk::CommandBuffer, + blit_image_info: &vk::BlitImageInfo2KHR, + ) { + self.fp.cmd_blit_image2_khr(command_buffer, blit_image_info) + } + /// + pub unsafe fn cmd_resolve_image2_khr( + &self, + command_buffer: vk::CommandBuffer, + resolve_image_info: &vk::ResolveImageInfo2KHR, + ) { + self.fp + .cmd_resolve_image2_khr(command_buffer, resolve_image_info) + } + + pub fn name() -> &'static CStr { + vk::KhrCopyCommands2Fn::name() + } + + pub fn fp(&self) -> &vk::KhrCopyCommands2Fn { + &self.fp + } +} diff --git a/ash/src/extensions/khr/mod.rs b/ash/src/extensions/khr/mod.rs index ca83e5744..74051761a 100644 --- a/ash/src/extensions/khr/mod.rs +++ b/ash/src/extensions/khr/mod.rs @@ -1,6 +1,7 @@ pub use self::acceleration_structure::AccelerationStructure; pub use self::android_surface::AndroidSurface; pub use self::buffer_device_address::BufferDeviceAddress; +pub use self::copy_commands2::CopyCommands2; pub use self::create_render_pass2::CreateRenderPass2; pub use self::deferred_host_operations::DeferredHostOperations; pub use self::display::Display; @@ -32,6 +33,7 @@ pub use self::xlib_surface::XlibSurface; mod acceleration_structure; mod android_surface; mod buffer_device_address; +mod copy_commands2; mod create_render_pass2; mod deferred_host_operations; mod display;