Skip to main content

jay_ash/extensions/khr/
synchronization2.rs

1//! <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_synchronization2.html>
2
3use crate::prelude::*;
4use crate::vk;
5
6impl crate::khr::synchronization2::Device {
7    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdPipelineBarrier2KHR.html>
8    #[inline]
9    pub unsafe fn cmd_pipeline_barrier2(
10        &self,
11        command_buffer: vk::CommandBuffer,
12        dependency_info: &vk::DependencyInfoKHR<'_>,
13    ) {
14        unsafe { (self.fp.cmd_pipeline_barrier2_khr)(command_buffer, dependency_info) }
15    }
16
17    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdResetEvent2KHR.html>
18    #[inline]
19    pub unsafe fn cmd_reset_event2(
20        &self,
21        command_buffer: vk::CommandBuffer,
22        event: vk::Event,
23        stage_mask: vk::PipelineStageFlags2KHR,
24    ) {
25        unsafe { (self.fp.cmd_reset_event2_khr)(command_buffer, event, stage_mask) }
26    }
27
28    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdSetEvent2KHR.html>
29    #[inline]
30    pub unsafe fn cmd_set_event2(
31        &self,
32        command_buffer: vk::CommandBuffer,
33        event: vk::Event,
34        dependency_info: &vk::DependencyInfoKHR<'_>,
35    ) {
36        unsafe { (self.fp.cmd_set_event2_khr)(command_buffer, event, dependency_info) }
37    }
38
39    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdWaitEvents2KHR.html>
40    #[inline]
41    pub unsafe fn cmd_wait_events2(
42        &self,
43        command_buffer: vk::CommandBuffer,
44        events: &[vk::Event],
45        dependency_infos: &[vk::DependencyInfoKHR<'_>],
46    ) {
47        unsafe {
48            assert_eq!(events.len(), dependency_infos.len());
49            (self.fp.cmd_wait_events2_khr)(
50                command_buffer,
51                events.len() as u32,
52                events.as_ptr(),
53                dependency_infos.as_ptr(),
54            )
55        }
56    }
57
58    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdWriteTimestamp2KHR.html>
59    #[inline]
60    pub unsafe fn cmd_write_timestamp2(
61        &self,
62        command_buffer: vk::CommandBuffer,
63        stage: vk::PipelineStageFlags2KHR,
64        query_pool: vk::QueryPool,
65        query: u32,
66    ) {
67        unsafe { (self.fp.cmd_write_timestamp2_khr)(command_buffer, stage, query_pool, query) }
68    }
69
70    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkQueueSubmit2KHR.html>
71    #[inline]
72    pub unsafe fn queue_submit2(
73        &self,
74        queue: vk::Queue,
75        submits: &[vk::SubmitInfo2KHR<'_>],
76        fence: vk::Fence,
77    ) -> VkResult<()> {
78        unsafe {
79            (self.fp.queue_submit2_khr)(queue, submits.len() as u32, submits.as_ptr(), fence)
80                .result()
81        }
82    }
83}