PresentMode

Type Alias PresentMode 

Source
pub type PresentMode = PresentMode;

Aliased Type§

#[repr(C)]
pub enum PresentMode { AutoVsync = 0, AutoNoVsync = 1, Fifo = 2, FifoRelaxed = 3, Immediate = 4, Mailbox = 5, }

Variants§

§

AutoVsync = 0

Chooses the first supported mode out of:

  1. FifoRelaxed
  2. Fifo

Because of the fallback behavior, this is supported everywhere.

§

AutoNoVsync = 1

Chooses the first supported mode out of:

  1. Immediate
  2. Mailbox
  3. Fifo

Because of the fallback behavior, this is supported everywhere.

§

Fifo = 2

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.

Calls to Surface::get_current_texture() will block until there is a spot in the queue.

  • Tearing: No tearing will be observed.
  • Supported on: All platforms.
  • Also known as: “Vsync On”

This is the default value for PresentMode. If you don’t know what mode to choose, choose this mode.

§

FifoRelaxed = 3

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.

Calls to Surface::get_current_texture() will block until there is a spot in the queue.

  • Tearing: Tearing will be observed if frames last more than one vblank as the front buffer.
  • Supported on: AMD on Vulkan.
  • Also known as: “Adaptive Vsync”
§

Immediate = 4

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: Tearing can be observed.
  • Supported on: Most platforms except older DX12 and Wayland.
  • Also known as: “Vsync Off”
§

Mailbox = 5

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.

  • Tearing: No tearing will be observed.
  • Supported on: DX12 on Windows 10, NVidia on Vulkan and Wayland on Vulkan.
  • Also known as: “Fast Vsync”