lava/vulkan/vk/
vk_render_pass_create_info.rs

1// Generated by `scripts/generate.js`
2
3use std::os::raw::c_char;
4use std::ops::Deref;
5use std::ptr;
6use std::cmp;
7use std::mem;
8use utils::c_bindings::*;
9use utils::vk_convert::*;
10use utils::vk_null::*;
11use utils::vk_ptr::*;
12use utils::vk_traits::*;
13use vulkan::vk::*;
14use vulkan::vk::{VkStructureType,RawVkStructureType};
15use vulkan::vk::{VkRenderPassCreateFlags,RawVkRenderPassCreateFlags};
16use vulkan::vk::{VkAttachmentDescription,RawVkAttachmentDescription};
17use vulkan::vk::{VkSubpassDescription,RawVkSubpassDescription};
18use vulkan::vk::{VkSubpassDependency,RawVkSubpassDependency};
19
20/// Wrapper for [VkRenderPassCreateInfo](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateInfo.html).
21#[derive(Debug, Clone)]
22pub struct VkRenderPassCreateInfo {
23    pub flags: VkRenderPassCreateFlags,
24    pub attachments: Vec<VkAttachmentDescription>,
25    pub subpasses: Vec<VkSubpassDescription>,
26    pub dependencies: Vec<VkSubpassDependency>,
27}
28
29#[doc(hidden)]
30#[repr(C)]
31#[derive(Debug, Copy, Clone)]
32pub struct RawVkRenderPassCreateInfo {
33    pub s_type: RawVkStructureType,
34    pub next: *mut c_void,
35    pub flags: RawVkRenderPassCreateFlags,
36    pub attachment_count: u32,
37    pub attachments: *mut RawVkAttachmentDescription,
38    pub subpass_count: u32,
39    pub subpasses: *mut RawVkSubpassDescription,
40    pub dependency_count: u32,
41    pub dependencies: *mut RawVkSubpassDependency,
42}
43
44impl VkWrappedType<RawVkRenderPassCreateInfo> for VkRenderPassCreateInfo {
45    fn vk_to_raw(src: &VkRenderPassCreateInfo, dst: &mut RawVkRenderPassCreateInfo) {
46        dst.s_type = vk_to_raw_value(&VkStructureType::RenderPassCreateInfo);
47        dst.next = ptr::null_mut();
48        dst.flags = vk_to_raw_value(&src.flags);
49        dst.attachment_count = src.attachments.len() as u32;
50        dst.attachments = new_ptr_vk_array(&src.attachments);
51        dst.subpass_count = src.subpasses.len() as u32;
52        dst.subpasses = new_ptr_vk_array(&src.subpasses);
53        dst.dependency_count = src.dependencies.len() as u32;
54        dst.dependencies = new_ptr_vk_array(&src.dependencies);
55    }
56}
57
58impl VkRawType<VkRenderPassCreateInfo> for RawVkRenderPassCreateInfo {
59    fn vk_to_wrapped(src: &RawVkRenderPassCreateInfo) -> VkRenderPassCreateInfo {
60        VkRenderPassCreateInfo {
61            flags: RawVkRenderPassCreateFlags::vk_to_wrapped(&src.flags),
62            attachments: new_vk_array(src.attachment_count, src.attachments),
63            subpasses: new_vk_array(src.subpass_count, src.subpasses),
64            dependencies: new_vk_array(src.dependency_count, src.dependencies),
65        }
66    }
67}
68
69impl Default for VkRenderPassCreateInfo {
70    fn default() -> VkRenderPassCreateInfo {
71        VkRenderPassCreateInfo {
72            flags: Default::default(),
73            attachments: Vec::new(),
74            subpasses: Vec::new(),
75            dependencies: Vec::new(),
76        }
77    }
78}
79
80impl VkSetup for VkRenderPassCreateInfo {
81    fn vk_setup(&mut self, fn_table: *mut VkFunctionTable) {
82        
83    }
84}
85
86impl VkFree for RawVkRenderPassCreateInfo {
87    fn vk_free(&self) {
88        free_vk_ptr_array(self.attachment_count as usize, self.attachments);
89        free_vk_ptr_array(self.subpass_count as usize, self.subpasses);
90        free_vk_ptr_array(self.dependency_count as usize, self.dependencies);
91    }
92}