kronos_compute/core/
timeline.rs

1//! Timeline semaphore structures for Kronos
2
3use std::ffi::c_void;
4use std::ptr;
5use crate::sys::*;
6use crate::core::enums::*;
7use crate::core::flags::*;
8
9/// Semaphore type create info (for timeline semaphores)
10#[repr(C)]
11#[derive(Debug, Clone, Copy)]
12pub struct VkSemaphoreTypeCreateInfo {
13    pub sType: VkStructureType,
14    pub pNext: *const c_void,
15    pub semaphoreType: VkSemaphoreType,
16    pub initialValue: u64,
17}
18
19impl Default for VkSemaphoreTypeCreateInfo {
20    fn default() -> Self {
21        Self {
22            sType: VkStructureType::SemaphoreTypeCreateInfo,
23            pNext: ptr::null(),
24            semaphoreType: VkSemaphoreType::Binary,
25            initialValue: 0,
26        }
27    }
28}
29
30/// Timeline semaphore submit info
31#[repr(C)]
32#[derive(Debug, Clone, Copy)]
33pub struct VkTimelineSemaphoreSubmitInfo {
34    pub sType: VkStructureType,
35    pub pNext: *const c_void,
36    pub waitSemaphoreValueCount: u32,
37    pub pWaitSemaphoreValues: *const u64,
38    pub signalSemaphoreValueCount: u32,
39    pub pSignalSemaphoreValues: *const u64,
40}
41
42impl Default for VkTimelineSemaphoreSubmitInfo {
43    fn default() -> Self {
44        Self {
45            sType: VkStructureType::TimelineSemaphoreSubmitInfo,
46            pNext: ptr::null(),
47            waitSemaphoreValueCount: 0,
48            pWaitSemaphoreValues: ptr::null(),
49            signalSemaphoreValueCount: 0,
50            pSignalSemaphoreValues: ptr::null(),
51        }
52    }
53}
54
55/// Semaphore wait info for timeline semaphores
56#[repr(C)]
57#[derive(Debug, Clone, Copy)]
58pub struct VkSemaphoreWaitInfo {
59    pub sType: VkStructureType,
60    pub pNext: *const c_void,
61    pub flags: VkSemaphoreWaitFlags,
62    pub semaphoreCount: u32,
63    pub pSemaphores: *const VkSemaphore,
64    pub pValues: *const u64,
65}
66
67impl Default for VkSemaphoreWaitInfo {
68    fn default() -> Self {
69        Self {
70            sType: VkStructureType::SemaphoreWaitInfo,
71            pNext: ptr::null(),
72            flags: VkSemaphoreWaitFlags::empty(),
73            semaphoreCount: 0,
74            pSemaphores: ptr::null(),
75            pValues: ptr::null(),
76        }
77    }
78}