perf(render): avoid forced FIFO fallback without mailbox
Docs Deploy / Build and Deploy MkDocs (push) Successful in 1m17s

This commit is contained in:
Valentin Popov committed 2026-11-01 10:04:18 +04:00
1 parent f771a62298
commit 1c3b977556
3 files changed
+44

No files matched your search

@@ -418,6 +418,32 @@ fn swapchain_plan_enables_transfer_source_when_surface_supports_it() {
);
}
#[test]
fn swapchain_plan_falls_back_to_immediate_without_overriding_supported_preference() {
let mut request = swapchain_request();
request.present_modes = vec![
vk::PresentModeKHR::IMMEDIATE.as_raw(),
vk::PresentModeKHR::FIFO.as_raw(),
];
assert_eq!(
plan_vulkan_swapchain(&request).unwrap().present_mode,
vk::PresentModeKHR::IMMEDIATE.as_raw()
);
request.preferred_present_mode = vk::PresentModeKHR::FIFO.as_raw();
assert_eq!(
plan_vulkan_swapchain(&request).unwrap().present_mode,
vk::PresentModeKHR::FIFO.as_raw()
);
request
.present_modes
.push(vk::PresentModeKHR::MAILBOX.as_raw());
request.preferred_present_mode = vk::PresentModeKHR::MAILBOX.as_raw();
assert_eq!(
plan_vulkan_swapchain(&request).unwrap().present_mode,
vk::PresentModeKHR::MAILBOX.as_raw()
);
}
#[test]
fn swapchain_plan_uses_fifo_and_current_extent_fallbacks() {
let mut request = swapchain_request();
@@ -495,6 +495,8 @@ fn undefined_surface_format_override(
fn select_present_mode(present_modes: &[i32], preferred: i32) -> Result<i32, VulkanSwapchainError> {
if present_modes.contains(&preferred) {
Ok(preferred)
} else if present_modes.contains(&vk::PresentModeKHR::IMMEDIATE.as_raw()) {
Ok(vk::PresentModeKHR::IMMEDIATE.as_raw())
} else if present_modes.contains(&vk::PresentModeKHR::FIFO.as_raw()) {
Ok(vk::PresentModeKHR::FIFO.as_raw())
} else {