lava/vulkan/nv/
vk_graphics_pipeline_shader_groups_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::nv::{VkGraphicsShaderGroupCreateInfo,RawVkGraphicsShaderGroupCreateInfo};
16use vulkan::vk::{VkPipeline,RawVkPipeline};
17
18#[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}