diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index b04ded02d6..73ee8a453c 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -1,7 +1,7 @@ use alloc::{borrow::ToOwned as _, collections::BTreeMap, sync::Arc, vec::Vec}; use core::ffi::CStr; -use ash::{amd, ext, google, khr, vk}; +use ash::{ext, google, khr, vk}; use parking_lot::Mutex; use super::conv; @@ -943,13 +943,8 @@ impl PhysicalDeviceProperties { extensions.push(khr::swapchain::NAME); if self.device_api_version < vk::API_VERSION_1_1 { - // Require either `VK_KHR_maintenance1` or `VK_AMD_negative_viewport_height` - if self.supports_extension(khr::maintenance1::NAME) { - extensions.push(khr::maintenance1::NAME); - } else { - // `VK_AMD_negative_viewport_height` is obsoleted by `VK_KHR_maintenance1` and must not be enabled alongside it - extensions.push(amd::negative_viewport_height::NAME); - } + // Require `VK_KHR_maintenance1` + extensions.push(khr::maintenance1::NAME); // Optional `VK_KHR_maintenance2` if self.supports_extension(khr::maintenance2::NAME) { @@ -1638,12 +1633,11 @@ impl super::Instance { ); return None; } - if !phd_capabilities.supports_extension(amd::negative_viewport_height::NAME) - && !phd_capabilities.supports_extension(khr::maintenance1::NAME) + if !phd_capabilities.supports_extension(khr::maintenance1::NAME) && phd_capabilities.device_api_version < vk::API_VERSION_1_1 { log::warn!( - "viewport Y-flip is not supported, hiding adapter: {}", + "VK_KHR_maintenance1 is not supported, hiding adapter: {}", info.name ); return None; @@ -1661,8 +1655,6 @@ impl super::Instance { } let private_caps = super::PrivateCapabilities { - flip_y_requires_shift: phd_capabilities.device_api_version >= vk::API_VERSION_1_1 - || phd_capabilities.supports_extension(khr::maintenance1::NAME), imageless_framebuffers: match phd_features.imageless_framebuffer { Some(features) => features.imageless_framebuffer == vk::TRUE, None => phd_features diff --git a/wgpu-hal/src/vulkan/command.rs b/wgpu-hal/src/vulkan/command.rs index bd6eadb4e3..96cd274c2e 100644 --- a/wgpu-hal/src/vulkan/command.rs +++ b/wgpu-hal/src/vulkan/command.rs @@ -788,11 +788,7 @@ impl crate::CommandEncoder for super::CommandEncoder { }; let vk_viewports = [vk::Viewport { x: 0.0, - y: if self.device.private_caps.flip_y_requires_shift { - desc.extent.height as f32 - } else { - 0.0 - }, + y: desc.extent.height as f32, width: desc.extent.width as f32, height: -(desc.extent.height as f32), min_depth: 0.0, @@ -967,11 +963,7 @@ impl crate::CommandEncoder for super::CommandEncoder { unsafe fn set_viewport(&mut self, rect: &crate::Rect, depth_range: Range) { let vk_viewports = [vk::Viewport { x: rect.x, - y: if self.device.private_caps.flip_y_requires_shift { - rect.y + rect.h - } else { - rect.y - }, + y: rect.y + rect.h, width: rect.w, height: -rect.h, // flip Y min_depth: depth_range.start, diff --git a/wgpu-hal/src/vulkan/mod.rs b/wgpu-hal/src/vulkan/mod.rs index 417d25dbdb..8c0a76db7a 100644 --- a/wgpu-hal/src/vulkan/mod.rs +++ b/wgpu-hal/src/vulkan/mod.rs @@ -488,10 +488,6 @@ struct RayTracingDeviceExtensionFunctions { /// device geometry, but affect the code paths taken internally. #[derive(Clone, Debug)] struct PrivateCapabilities { - /// Y-flipping is implemented with either `VK_AMD_negative_viewport_height` or `VK_KHR_maintenance1`/1.1+. The AMD extension for negative viewport height does not require a Y shift. - /// - /// This flag is `true` if the device has `VK_KHR_maintenance1`/1.1+ and `false` otherwise (i.e. in the case of `VK_AMD_negative_viewport_height`). - flip_y_requires_shift: bool, imageless_framebuffers: bool, image_view_usage: bool, timeline_semaphores: bool,