From 12808193fe18eddaacdd1b96b0dc2638aa1210cc Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Thu, 26 Jun 2025 15:33:20 +0200 Subject: [PATCH] Fix warnings for unrecognized Vulkan present mode (#7850) --- CHANGELOG.md | 1 + Cargo.lock | 1 - wgpu-hal/src/vulkan/conv.rs | 30 +++++++++++++++++++----------- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6511e1973..ed83558f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,6 +89,7 @@ Bottom level categories: #### Vulkan - Fix OpenBSD compilation of `wgpu_hal::vulkan::drm`. By @ErichDonGubler in [#7810](https://github.com/gfx-rs/wgpu/pull/7810). +- Fix warnings for unrecognized present mode. By @Wumpf in [#7850](https://github.com/gfx-rs/wgpu/pull/7850). #### Metal diff --git a/Cargo.lock b/Cargo.lock index c417ac4aa..73f43bb6c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5011,7 +5011,6 @@ dependencies = [ "naga", "ndk-sys 0.6.0+11769913", "objc", - "once_cell", "ordered-float 5.0.0", "parking_lot", "portable-atomic", diff --git a/wgpu-hal/src/vulkan/conv.rs b/wgpu-hal/src/vulkan/conv.rs index c59c9ad4b..405c81844 100644 --- a/wgpu-hal/src/vulkan/conv.rs +++ b/wgpu-hal/src/vulkan/conv.rs @@ -468,17 +468,25 @@ pub fn map_present_mode(mode: wgt::PresentMode) -> vk::PresentModeKHR { } pub fn map_vk_present_mode(mode: vk::PresentModeKHR) -> Option { - if mode == vk::PresentModeKHR::IMMEDIATE { - Some(wgt::PresentMode::Immediate) - } else if mode == vk::PresentModeKHR::MAILBOX { - Some(wgt::PresentMode::Mailbox) - } else if mode == vk::PresentModeKHR::FIFO { - Some(wgt::PresentMode::Fifo) - } else if mode == vk::PresentModeKHR::FIFO_RELAXED { - Some(wgt::PresentMode::FifoRelaxed) - } else { - log::warn!("Unrecognized present mode {:?}", mode); - None + // Not exposed in Ash yet. + const FIFO_LATEST_READY: vk::PresentModeKHR = vk::PresentModeKHR::from_raw(1_000_361_000); + + // See https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentModeKHR.html + match mode { + vk::PresentModeKHR::IMMEDIATE => Some(wgt::PresentMode::Immediate), + vk::PresentModeKHR::MAILBOX => Some(wgt::PresentMode::Mailbox), + vk::PresentModeKHR::FIFO => Some(wgt::PresentMode::Fifo), + vk::PresentModeKHR::FIFO_RELAXED => Some(wgt::PresentMode::FifoRelaxed), + + // Modes that aren't exposed yet. + vk::PresentModeKHR::SHARED_DEMAND_REFRESH => None, + vk::PresentModeKHR::SHARED_CONTINUOUS_REFRESH => None, + FIFO_LATEST_READY => None, + + _ => { + log::debug!("Unrecognized present mode {:?}", mode); + None + } } }