pub struct Semaphore { /* private fields */ }
Expand description

Used to provide synchronization between command buffers during their execution.

It is similar to a fence, except that it is purely on the GPU side. The CPU can’t query a semaphore’s status or wait for it to be signaled.

Implementations§

source§

impl Semaphore

source

pub fn new( device: Arc<Device>, create_info: SemaphoreCreateInfo ) -> Result<Semaphore, Validated<VulkanError>>

Creates a new Semaphore.

source

pub fn from_pool(device: Arc<Device>) -> Result<Semaphore, VulkanError>

Takes a semaphore from the vulkano-provided semaphore pool. If the pool is empty, a new semaphore will be allocated. Upon drop, the semaphore is put back into the pool.

For most applications, using the pool should be preferred, in order to avoid creating new semaphores every frame.

source

pub unsafe fn from_handle( device: Arc<Device>, handle: Semaphore, create_info: SemaphoreCreateInfo ) -> Semaphore

Creates a new Semaphore from a raw object handle.

Safety
  • handle must be a valid Vulkan object handle created from device.
  • create_info must match the info used to create the object.
source

pub fn export_handle_types(&self) -> ExternalSemaphoreHandleTypes

Returns the handle types that can be exported from the semaphore.

source

pub fn export_fd( &self, handle_type: ExternalSemaphoreHandleType ) -> Result<File, Validated<VulkanError>>

Exports the semaphore into a POSIX file descriptor. The caller owns the returned File.

source

pub fn export_win32_handle( &self, handle_type: ExternalSemaphoreHandleType ) -> Result<*mut c_void, Validated<VulkanError>>

Exports the semaphore into a Win32 handle.

The khr_external_semaphore_win32 extension must be enabled on the device.

source

pub fn export_zircon_handle( &self, handle_type: ExternalSemaphoreHandleType ) -> Result<zx_handle_t, Validated<VulkanError>>

Exports the semaphore into a Zircon event handle.

source

pub unsafe fn import_fd( &self, import_semaphore_fd_info: ImportSemaphoreFdInfo ) -> Result<(), Validated<VulkanError>>

Imports a semaphore from a POSIX file descriptor.

The khr_external_semaphore_fd extension must be enabled on the device.

Safety
  • If in import_semaphore_fd_info, handle_type is ExternalHandleType::OpaqueFd, then file must represent a binary semaphore that was exported from Vulkan or a compatible API, with a driver and device UUID equal to those of the device that owns self.
source

pub unsafe fn import_win32_handle( &self, import_semaphore_win32_handle_info: ImportSemaphoreWin32HandleInfo ) -> Result<(), Validated<VulkanError>>

Imports a semaphore from a Win32 handle.

The khr_external_semaphore_win32 extension must be enabled on the device.

Safety
  • In import_semaphore_win32_handle_info, handle must represent a binary semaphore that was exported from Vulkan or a compatible API, with a driver and device UUID equal to those of the device that owns self.
source

pub unsafe fn import_zircon_handle( &self, import_semaphore_zircon_handle_info: ImportSemaphoreZirconHandleInfo ) -> Result<(), Validated<VulkanError>>

Imports a semaphore from a Zircon event handle.

The fuchsia_external_semaphore extension must be enabled on the device.

Safety
  • In import_semaphore_zircon_handle_info, zircon_handle must have ZX_RIGHTS_BASIC and ZX_RIGHTS_SIGNAL.

Trait Implementations§

source§

impl Debug for Semaphore

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl DeviceOwned for Semaphore

source§

fn device(&self) -> &Arc<Device>

Returns the device that owns self.
source§

impl Drop for Semaphore

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl Hash for Semaphore

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Semaphore

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl VulkanObject for Semaphore

§

type Handle = Semaphore

The type of the object.
source§

fn handle(&self) -> Self::Handle

Returns the raw Vulkan handle of the object.
source§

impl Eq for Semaphore

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> DeviceOwnedVulkanObject for Twhere T: DeviceOwned + VulkanObject,

source§

fn set_debug_utils_object_name( &self, object_name: Option<&str> ) -> Result<(), VulkanError>

Assigns a human-readable name to the object for debugging purposes. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.