kazan 0.3.9+1.4.359

Vulkan bindings for Rust
Documentation
//! <https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_copy_commands2.html>
#![allow(unused_imports)]
use crate::{vk::Result as VkResult, vk::*, *};
use core::ffi::{CStr, c_char, c_int, c_void};
use core::mem::transmute;
use core::ptr;

pub const EXTENSION_NAME: &CStr = c"VK_KHR_copy_commands2";

pub(super) mod defs {
    #![allow(non_camel_case_types, unused_imports)]
    use crate::{vk::*, *};
    use core::ffi::{CStr, c_char, c_int, c_void};
    use core::fmt;
    use core::marker::PhantomData;
    use core::ptr;

    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
    pub type BufferCopy2KHR<'a> = BufferCopy2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
    pub type ImageCopy2KHR<'a> = ImageCopy2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
    pub type ImageBlit2KHR<'a> = ImageBlit2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
    pub type BufferImageCopy2KHR<'a> = BufferImageCopy2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
    pub type ImageResolve2KHR<'a> = ImageResolve2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
    pub type CopyBufferInfo2KHR<'a> = CopyBufferInfo2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
    pub type CopyImageInfo2KHR<'a> = CopyImageInfo2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
    pub type BlitImageInfo2KHR<'a> = BlitImageInfo2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
    pub type CopyBufferToImageInfo2KHR<'a> = CopyBufferToImageInfo2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
    pub type CopyImageToBufferInfo2KHR<'a> = CopyImageToBufferInfo2<'a>;
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
    pub type ResolveImageInfo2KHR<'a> = ResolveImageInfo2<'a>;
    pub type PFN_vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2;
    pub type PFN_vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2;
    pub type PFN_vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2;
    pub type PFN_vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2;
    pub type PFN_vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2;
    pub type PFN_vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2;
}

#[cfg(feature = "ffi")]
pub(super) mod ffi {
    #![allow(non_camel_case_types)]
    use super::defs::*;

    pub type VkBufferCopy2KHR = BufferCopy2KHR<'static>;
    pub type VkImageCopy2KHR = ImageCopy2KHR<'static>;
    pub type VkImageBlit2KHR = ImageBlit2KHR<'static>;
    pub type VkBufferImageCopy2KHR = BufferImageCopy2KHR<'static>;
    pub type VkImageResolve2KHR = ImageResolve2KHR<'static>;
    pub type VkCopyBufferInfo2KHR = CopyBufferInfo2KHR<'static>;
    pub type VkCopyImageInfo2KHR = CopyImageInfo2KHR<'static>;
    pub type VkBlitImageInfo2KHR = BlitImageInfo2KHR<'static>;
    pub type VkCopyBufferToImageInfo2KHR = CopyBufferToImageInfo2KHR<'static>;
    pub type VkCopyImageToBufferInfo2KHR = CopyImageToBufferInfo2KHR<'static>;
    pub type VkResolveImageInfo2KHR = ResolveImageInfo2KHR<'static>;
}

pub struct DeviceFn {
    cmd_copy_buffer2: PFN_vkCmdCopyBuffer2,
    cmd_copy_image2: PFN_vkCmdCopyImage2,
    cmd_copy_buffer_to_image2: PFN_vkCmdCopyBufferToImage2,
    cmd_copy_image_to_buffer2: PFN_vkCmdCopyImageToBuffer2,
    cmd_blit_image2: PFN_vkCmdBlitImage2,
    cmd_resolve_image2: PFN_vkCmdResolveImage2,
}

impl LoadDeviceFn for DeviceFn {
    unsafe fn load_with(
        load: impl Fn(&CStr) -> Option<PFN_vkVoidFunction>,
    ) -> core::result::Result<Self, MissingEntryPointError> {
        unsafe {
            Ok(Self {
                cmd_copy_buffer2: transmute(
                    load(c"vkCmdCopyBuffer2KHR").ok_or(MissingEntryPointError)?,
                ),
                cmd_copy_image2: transmute(
                    load(c"vkCmdCopyImage2KHR").ok_or(MissingEntryPointError)?,
                ),
                cmd_copy_buffer_to_image2: transmute(
                    load(c"vkCmdCopyBufferToImage2KHR").ok_or(MissingEntryPointError)?,
                ),
                cmd_copy_image_to_buffer2: transmute(
                    load(c"vkCmdCopyImageToBuffer2KHR").ok_or(MissingEntryPointError)?,
                ),
                cmd_blit_image2: transmute(
                    load(c"vkCmdBlitImage2KHR").ok_or(MissingEntryPointError)?,
                ),
                cmd_resolve_image2: transmute(
                    load(c"vkCmdResolveImage2KHR").ok_or(MissingEntryPointError)?,
                ),
            })
        }
    }
}

impl DeviceFn {
    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html>
    #[inline]
    pub unsafe fn cmd_copy_buffer2(
        &self,
        command_buffer: CommandBuffer,
        copy_buffer_info: &CopyBufferInfo2<'_>,
    ) {
        unsafe { (self.cmd_copy_buffer2)(command_buffer, copy_buffer_info) }
    }

    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html>
    #[inline]
    pub unsafe fn cmd_copy_image2(
        &self,
        command_buffer: CommandBuffer,
        copy_image_info: &CopyImageInfo2<'_>,
    ) {
        unsafe { (self.cmd_copy_image2)(command_buffer, copy_image_info) }
    }

    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html>
    #[inline]
    pub unsafe fn cmd_copy_buffer_to_image2(
        &self,
        command_buffer: CommandBuffer,
        copy_buffer_to_image_info: &CopyBufferToImageInfo2<'_>,
    ) {
        unsafe { (self.cmd_copy_buffer_to_image2)(command_buffer, copy_buffer_to_image_info) }
    }

    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html>
    #[inline]
    pub unsafe fn cmd_copy_image_to_buffer2(
        &self,
        command_buffer: CommandBuffer,
        copy_image_to_buffer_info: &CopyImageToBufferInfo2<'_>,
    ) {
        unsafe { (self.cmd_copy_image_to_buffer2)(command_buffer, copy_image_to_buffer_info) }
    }

    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html>
    #[inline]
    pub unsafe fn cmd_blit_image2(
        &self,
        command_buffer: CommandBuffer,
        blit_image_info: &BlitImageInfo2<'_>,
    ) {
        unsafe { (self.cmd_blit_image2)(command_buffer, blit_image_info) }
    }

    /// <https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html>
    #[inline]
    pub unsafe fn cmd_resolve_image2(
        &self,
        command_buffer: CommandBuffer,
        resolve_image_info: &ResolveImageInfo2<'_>,
    ) {
        unsafe { (self.cmd_resolve_image2)(command_buffer, resolve_image_info) }
    }
}