From 94b6bada8b2f154a972d4f3cee394f06c7c77d5f Mon Sep 17 00:00:00 2001 From: Jinlei Li Date: Thu, 27 Jan 2022 05:42:35 +0800 Subject: [PATCH] Add MULTISAMPLED_SHADING downlevel flag --- wgpu-hal/src/vulkan/adapter.rs | 19 +++++++++++-------- wgpu-types/src/lib.rs | 3 +++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index 0a037806970..da5e0acb84d 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -100,7 +100,9 @@ impl PhysicalDeviceFeatures { core: vk::PhysicalDeviceFeatures::builder() .robust_buffer_access(private_caps.robust_buffer_access) .independent_blend(true) - .sample_rate_shading(true) + .sample_rate_shading( + downlevel_flags.contains(wgt::DownlevelFlags::MULTISAMPLED_SHADING), + ) .image_cube_array( downlevel_flags.contains(wgt::DownlevelFlags::CUBE_ARRAY_TEXTURES), ) @@ -342,6 +344,7 @@ impl PhysicalDeviceFeatures { Df::FRAGMENT_WRITABLE_STORAGE, self.core.fragment_stores_and_atomics != 0, ); + dl_flags.set(Df::MULTISAMPLED_SHADING, self.core.sample_rate_shading != 0); features.set( F::INDIRECT_FIRST_INSTANCE, @@ -929,13 +932,13 @@ impl super::Instance { ); return None; } - if phd_features.core.sample_rate_shading == 0 { - log::warn!( - "sample_rate_shading feature is not supported, hiding adapter: {}", - info.name - ); - return None; - } + // if phd_features.core.sample_rate_shading == 0 { + // log::warn!( + // "sample_rate_shading feature is not supported, hiding adapter: {}", + // info.name + // ); + // return None; + // } if !phd_capabilities.supports_extension(vk::AmdNegativeViewportHeightFn::name()) && !phd_capabilities.supports_extension(vk::KhrMaintenance1Fn::name()) && phd_capabilities.properties.api_version < vk::API_VERSION_1_2 diff --git a/wgpu-types/src/lib.rs b/wgpu-types/src/lib.rs index d3290fe3146..aee99070f28 100644 --- a/wgpu-types/src/lib.rs +++ b/wgpu-types/src/lib.rs @@ -909,6 +909,9 @@ bitflags::bitflags! { /// Supports storage buffers in fragment shaders. const FRAGMENT_STORAGE = 1 << 12; + + /// Supports sample shading and multisample interpolation. + const MULTISAMPLED_SHADING = 1 << 13; } }