Skip to main content

lava/vulkan/nv/
vk_graphics_pipeline_shader_groups_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::nv::{VkGraphicsShaderGroupCreateInfo,RawVkGraphicsShaderGroupCreateInfo};
16use vulkan::vk::{VkPipeline,RawVkPipeline};
17
18/// Wrapper for [VkGraphicsPipelineShaderGroupsCreateInfoNV](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html).
19#[derive(Debug, Clone)]
20pub struct VkGraphicsPipelineShaderGroupsCreateInfo<'a, 'b> {
21    pub groups: Vec<VkGraphicsShaderGroupCreateInfo<'a, 'b>>,
22    pub pipelines: Vec<VkPipeline>,
23}
24
25#[doc(hidden)]
26#[repr(C)]
27#[derive(Debug, Copy, Clone)]
28pub struct RawVkGraphicsPipelineShaderGroupsCreateInfo {
29    pub s_type: RawVkStructureType,
30    pub next: *mut c_void,
31    pub group_count: u32,
32    pub groups: *mut RawVkGraphicsShaderGroupCreateInfo,
33    pub pipeline_count: u32,
34    pub pipelines: *mut RawVkPipeline,
35}
36
37impl<'a, 'b> VkWrappedType<RawVkGraphicsPipelineShaderGroupsCreateInfo> for VkGraphicsPipelineShaderGroupsCreateInfo<'a, 'b> {
38    fn vk_to_raw(src: &VkGraphicsPipelineShaderGroupsCreateInfo, dst: &mut RawVkGraphicsPipelineShaderGroupsCreateInfo) {
39        dst.s_type = vk_to_raw_value(&VkStructureType::GraphicsPipelineShaderGroupsCreateInfoNv);
40        dst.next = ptr::null_mut();
41        dst.group_count = src.groups.len() as u32;
42        dst.groups = new_ptr_vk_array(&src.groups);
43        dst.pipeline_count = src.pipelines.len() as u32;
44        dst.pipelines = new_ptr_vk_array(&src.pipelines);
45    }
46}
47
48impl<'a, 'b> VkRawType<VkGraphicsPipelineShaderGroupsCreateInfo<'a, 'b>> for RawVkGraphicsPipelineShaderGroupsCreateInfo {
49    fn vk_to_wrapped(src: &RawVkGraphicsPipelineShaderGroupsCreateInfo) -> VkGraphicsPipelineShaderGroupsCreateInfo<'a, 'b> {
50        VkGraphicsPipelineShaderGroupsCreateInfo {
51            groups: new_vk_array(src.group_count, src.groups),
52            pipelines: new_vk_array(src.pipeline_count, src.pipelines),
53        }
54    }
55}
56
57impl Default for VkGraphicsPipelineShaderGroupsCreateInfo<'static, 'static> {
58    fn default() -> VkGraphicsPipelineShaderGroupsCreateInfo<'static, 'static> {
59        VkGraphicsPipelineShaderGroupsCreateInfo {
60            groups: Vec::new(),
61            pipelines: Vec::new(),
62        }
63    }
64}
65
66impl<'a, 'b> VkSetup for VkGraphicsPipelineShaderGroupsCreateInfo<'a, 'b> {
67    fn vk_setup(&mut self, fn_table: *mut VkFunctionTable) {
68        
69    }
70}
71
72impl VkFree for RawVkGraphicsPipelineShaderGroupsCreateInfo {
73    fn vk_free(&self) {
74        free_vk_ptr_array(self.group_count as usize, self.groups);
75        free_ptr(self.pipelines);
76    }
77}