• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use crate::prelude::*;
2 use crate::vk;
3 use crate::RawPtr;
4 use crate::{Device, Instance};
5 use std::ffi::CStr;
6 use std::mem;
7 
8 #[derive(Clone)]
9 pub struct CreateRenderPass2 {
10     handle: vk::Device,
11     khr_create_renderpass2_fn: vk::KhrCreateRenderpass2Fn,
12 }
13 
14 impl CreateRenderPass2 {
new(instance: &Instance, device: &Device) -> Self15     pub fn new(instance: &Instance, device: &Device) -> Self {
16         let khr_create_renderpass2_fn = vk::KhrCreateRenderpass2Fn::load(|name| unsafe {
17             mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr()))
18         });
19         Self {
20             handle: device.handle(),
21             khr_create_renderpass2_fn,
22         }
23     }
24 
name() -> &'static CStr25     pub fn name() -> &'static CStr {
26         vk::KhrCreateRenderpass2Fn::name()
27     }
28 
29     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateRenderPass2.html>"]
create_render_pass2( &self, create_info: &vk::RenderPassCreateInfo2, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::RenderPass>30     pub unsafe fn create_render_pass2(
31         &self,
32         create_info: &vk::RenderPassCreateInfo2,
33         allocation_callbacks: Option<&vk::AllocationCallbacks>,
34     ) -> VkResult<vk::RenderPass> {
35         let mut renderpass = mem::zeroed();
36         self.khr_create_renderpass2_fn
37             .create_render_pass2_khr(
38                 self.handle,
39                 create_info,
40                 allocation_callbacks.as_raw_ptr(),
41                 &mut renderpass,
42             )
43             .result_with_success(renderpass)
44     }
45 
46     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginRenderPass2.html>"]
cmd_begin_render_pass2( &self, command_buffer: vk::CommandBuffer, render_pass_begin_info: &vk::RenderPassBeginInfo, subpass_begin_info: &vk::SubpassBeginInfo, )47     pub unsafe fn cmd_begin_render_pass2(
48         &self,
49         command_buffer: vk::CommandBuffer,
50         render_pass_begin_info: &vk::RenderPassBeginInfo,
51         subpass_begin_info: &vk::SubpassBeginInfo,
52     ) {
53         self.khr_create_renderpass2_fn.cmd_begin_render_pass2_khr(
54             command_buffer,
55             render_pass_begin_info,
56             subpass_begin_info,
57         );
58     }
59 
60     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdNextSubpass2.html>"]
cmd_next_subpass2( &self, command_buffer: vk::CommandBuffer, subpass_begin_info: &vk::SubpassBeginInfo, subpass_end_info: &vk::SubpassEndInfo, )61     pub unsafe fn cmd_next_subpass2(
62         &self,
63         command_buffer: vk::CommandBuffer,
64         subpass_begin_info: &vk::SubpassBeginInfo,
65         subpass_end_info: &vk::SubpassEndInfo,
66     ) {
67         self.khr_create_renderpass2_fn.cmd_next_subpass2_khr(
68             command_buffer,
69             subpass_begin_info,
70             subpass_end_info,
71         );
72     }
73 
74     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndRenderPass2.html>"]
cmd_end_render_pass2( &self, command_buffer: vk::CommandBuffer, subpass_end_info: &vk::SubpassEndInfo, )75     pub unsafe fn cmd_end_render_pass2(
76         &self,
77         command_buffer: vk::CommandBuffer,
78         subpass_end_info: &vk::SubpassEndInfo,
79     ) {
80         self.khr_create_renderpass2_fn
81             .cmd_end_render_pass2_khr(command_buffer, subpass_end_info);
82     }
83 
fp(&self) -> &vk::KhrCreateRenderpass2Fn84     pub fn fp(&self) -> &vk::KhrCreateRenderpass2Fn {
85         &self.khr_create_renderpass2_fn
86     }
87 
device(&self) -> vk::Device88     pub fn device(&self) -> vk::Device {
89         self.handle
90     }
91 }
92