diff --git a/wgpu-hal/src/gles/adapter.rs b/wgpu-hal/src/gles/adapter.rs index 6016bc8e4..806f5567b 100644 --- a/wgpu-hal/src/gles/adapter.rs +++ b/wgpu-hal/src/gles/adapter.rs @@ -384,7 +384,8 @@ impl super::Adapter { let mut downlevel_flags = wgt::DownlevelFlags::empty() | wgt::DownlevelFlags::NON_POWER_OF_TWO_MIPMAPPED_TEXTURES | wgt::DownlevelFlags::CUBE_ARRAY_TEXTURES - | wgt::DownlevelFlags::COMPARISON_SAMPLERS; + | wgt::DownlevelFlags::COMPARISON_SAMPLERS + | wgt::DownlevelFlags::SHADER_F16_IN_F32; downlevel_flags.set(wgt::DownlevelFlags::COMPUTE_SHADERS, supports_compute); downlevel_flags.set( wgt::DownlevelFlags::FRAGMENT_WRITABLE_STORAGE, diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index 8ced7c417..0ebf1fec9 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -575,7 +575,8 @@ impl PhysicalDeviceFeatures { | Df::INDIRECT_EXECUTION | Df::VIEW_FORMATS | Df::UNRESTRICTED_EXTERNAL_TEXTURE_COPIES - | Df::NONBLOCKING_QUERY_RESOLVE; + | Df::NONBLOCKING_QUERY_RESOLVE + | Df::SHADER_F16_IN_F32; dl_flags.set( Df::SURFACE_VIEW_FORMATS, @@ -1693,9 +1694,9 @@ impl super::Instance { ); }; - if info.driver_info.contains("Mesa ") { + if info.driver == "llvmpipe" { // The `F16_IN_F32` instructions do not normally require native `F16` support, but on - // Mesa, they do. + // llvmpipe, they do. downlevel_flags.set( wgt::DownlevelFlags::SHADER_F16_IN_F32, available_features.contains(wgt::Features::SHADER_F16),