lava/vulkan/vk/
vk_render_pass_create_info.rs1use 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#[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}