#[non_exhaustive]pub enum VulkanSemaphoreKind {
Timeline,
Binary,
}Expand description
Discriminator for SyncPoint::Vulkan’s VkSemaphore flavour.
VkSemaphore ships in two shapes — binary (one-shot, signal-and-
reset) and timeline (monotonic 64-bit payload, multi-waiter,
concurrent-signal-safe). A consumer staging a wait must route
through VkTimelineSemaphoreSubmitInfo for timeline semaphores and
must NOT for binary semaphores — passing the wrong shape risks
validation errors, driver-quirk-dependent wrong waits, and (on
already-consumed binary signals) hard deadlock at submit time.
The Vulkan API has no public probe that safely distinguishes the
two (vkGetSemaphoreCounterValue is undefined on binaries per
VUID-vkGetSemaphoreCounterValue-semaphore-03255), so the producer
must declare intent at mint time.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Timeline
vk::SemaphoreType::TIMELINE. value is a payload coordinate;
any number of waiters may target the same value, and signals
with strictly-increasing payloads can be queued concurrently.
Binary
vk::SemaphoreType::BINARY. Single-shot — exactly one signal
must pair with exactly one wait. The value field is ignored
(set to 0 by convention). Producers carrying binaries here
MUST guarantee the wait is the only consumer of the signal.
Trait Implementations§
Source§impl Clone for VulkanSemaphoreKind
impl Clone for VulkanSemaphoreKind
impl Copy for VulkanSemaphoreKind
Source§impl Debug for VulkanSemaphoreKind
impl Debug for VulkanSemaphoreKind
impl Eq for VulkanSemaphoreKind
Source§impl PartialEq for VulkanSemaphoreKind
impl PartialEq for VulkanSemaphoreKind
impl StructuralPartialEq for VulkanSemaphoreKind
Auto Trait Implementations§
impl Freeze for VulkanSemaphoreKind
impl RefUnwindSafe for VulkanSemaphoreKind
impl Send for VulkanSemaphoreKind
impl Sync for VulkanSemaphoreKind
impl Unpin for VulkanSemaphoreKind
impl UnsafeUnpin for VulkanSemaphoreKind
impl UnwindSafe for VulkanSemaphoreKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.