Enum wgpu_types::PresentMode
source · #[repr(C)]pub enum PresentMode {
AutoVsync,
AutoNoVsync,
Fifo,
FifoRelaxed,
Immediate,
Mailbox,
}
Expand description
Behavior of the presentation engine based on frame rate.
Variants§
AutoVsync
Chooses FifoRelaxed -> Fifo based on availability.
Because of the fallback behavior, it is supported everywhere.
AutoNoVsync
Chooses Immediate -> Mailbox -> Fifo (on web) based on availability.
Because of the fallback behavior, it is supported everywhere.
Fifo
Presentation frames are kept in a First-In-First-Out queue approximately 3 frames long. Every vertical blanking period, the presentation engine will pop a frame off the queue to display. If there is no frame to display, it will present the same frame again until the next vblank.
When a present command is executed on the gpu, the presented image is added on the queue.
No tearing will be observed.
Calls to get_current_texture will block until there is a spot in the queue.
Supported on all platforms.
If you don’t know what mode to choose, choose this mode. This is traditionally called “Vsync On”.
FifoRelaxed
Presentation frames are kept in a First-In-First-Out queue approximately 3 frames long. Every vertical blanking period, the presentation engine will pop a frame off the queue to display. If there is no frame to display, it will present the same frame until there is a frame in the queue. The moment there is a frame in the queue, it will immediately pop the frame off the queue.
When a present command is executed on the gpu, the presented image is added on the queue.
Tearing will be observed if frames last more than one vblank as the front buffer.
Calls to get_current_texture will block until there is a spot in the queue.
Supported on AMD on Vulkan.
This is traditionally called “Adaptive Vsync”
Immediate
Presentation frames are not queued at all. The moment a present command is executed on the GPU, the presented image is swapped onto the front buffer immediately.
Tearing can be observed.
Supported on most platforms except older DX12 and Wayland.
This is traditionally called “Vsync Off”.
Mailbox
Presentation frames are kept in a single-frame queue. Every vertical blanking period, the presentation engine will pop a frame from the queue. If there is no frame to display, it will present the same frame again until the next vblank.
When a present command is executed on the gpu, the frame will be put into the queue. If there was already a frame in the queue, the new frame will replace the old frame on the queue.
No tearing will be observed.
Supported on DX11/12 on Windows 10, NVidia on Vulkan and Wayland on Vulkan.
This is traditionally called “Fast Vsync”
Trait Implementations§
source§impl Clone for PresentMode
impl Clone for PresentMode
source§fn clone(&self) -> PresentMode
fn clone(&self) -> PresentMode
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PresentMode
impl Debug for PresentMode
source§impl Default for PresentMode
impl Default for PresentMode
source§fn default() -> PresentMode
fn default() -> PresentMode
source§impl<'de> Deserialize<'de> for PresentMode
impl<'de> Deserialize<'de> for PresentMode
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl Hash for PresentMode
impl Hash for PresentMode
source§impl PartialEq<PresentMode> for PresentMode
impl PartialEq<PresentMode> for PresentMode
source§fn eq(&self, other: &PresentMode) -> bool
fn eq(&self, other: &PresentMode) -> bool
self
and other
values to be equal, and is used
by ==
.