perf(render): avoid forced FIFO fallback without mailbox
Docs Deploy / Build and Deploy MkDocs (push) Successful in 1m17s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 1m17s
This commit is contained in:
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 {
|
||||
|
||||
Reference in new issue
Block a user