From 0a7900269281f7fd7bfc87aa40b75f87ccd984c1 Mon Sep 17 00:00:00 2001 From: Connor Fitzgerald Date: Sun, 28 Apr 2024 23:16:35 -0400 Subject: [PATCH 1/4] Fix Subgroup Ops on VK 1.2 Device --- CHANGELOG.md | 6 ++++++ wgpu-hal/src/vulkan/adapter.rs | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e15d2f287..b136b877a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,12 @@ Bottom level categories: ## Unreleased +### Bug Fixes + +#### Vulkan + +- Fix enablement of subgroup ops extension on Vulkan devices that don't support Vulkan 1.3. By @cwfitzgerald in [#5624](https://github.com/gfx-rs/wgpu/pull/5624). + ## v0.20.0 (2024-04-28) ### Major Changes diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index 21219361f4..95d74ef9ed 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -952,8 +952,8 @@ impl PhysicalDeviceProperties { extensions.push(vk::ExtImageRobustnessFn::name()); } - // Require `VK_EXT_subgroup_size_control` if the associated feature was requested - if requested_features.contains(wgt::Features::SUBGROUP) { + // Require `VK_EXT_subgroup_size_control` if it is available + if self.supports_extension(vk::ExtSubgroupSizeControlFn::name()) { extensions.push(vk::ExtSubgroupSizeControlFn::name()); } } From af1552cbc8d92fbe041c6e5245df2b9eebe2b70d Mon Sep 17 00:00:00 2001 From: Connor Fitzgerald Date: Tue, 14 May 2024 08:48:59 -0400 Subject: [PATCH 2/4] Verks? --- wgpu-hal/src/vulkan/adapter.rs | 6 ++---- wgpu-hal/src/vulkan/device.rs | 2 +- wgpu-hal/src/vulkan/mod.rs | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index 95d74ef9ed..2e9617be4e 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -953,7 +953,7 @@ impl PhysicalDeviceProperties { } // Require `VK_EXT_subgroup_size_control` if it is available - if self.supports_extension(vk::ExtSubgroupSizeControlFn::name()) { + if requested_features.contains(wgt::Features::SUBGROUP) { extensions.push(vk::ExtSubgroupSizeControlFn::name()); } } @@ -1485,9 +1485,6 @@ impl super::Instance { }), image_format_list: phd_capabilities.device_api_version >= vk::API_VERSION_1_2 || phd_capabilities.supports_extension(vk::KhrImageFormatListFn::name()), - subgroup_size_control: phd_features - .subgroup_size_control - .map_or(false, |ext| ext.subgroup_size_control == vk::TRUE), }; let capabilities = crate::Capabilities { limits: phd_capabilities.to_wgpu_limits(), @@ -1792,6 +1789,7 @@ impl super::Adapter { vendor_id: self.phd_capabilities.properties.vendor_id, timestamp_period: self.phd_capabilities.properties.limits.timestamp_period, private_caps: self.private_caps.clone(), + features, workarounds: self.workarounds, render_passes: Mutex::new(Default::default()), framebuffers: Mutex::new(Default::default()), diff --git a/wgpu-hal/src/vulkan/device.rs b/wgpu-hal/src/vulkan/device.rs index ec392533a0..aba36311de 100644 --- a/wgpu-hal/src/vulkan/device.rs +++ b/wgpu-hal/src/vulkan/device.rs @@ -789,7 +789,7 @@ impl super::Device { }; let mut flags = vk::PipelineShaderStageCreateFlags::empty(); - if self.shared.private_caps.subgroup_size_control { + if self.shared.features.contains(wgt::Features::SUBGROUP) { flags |= vk::PipelineShaderStageCreateFlags::ALLOW_VARYING_SUBGROUP_SIZE } diff --git a/wgpu-hal/src/vulkan/mod.rs b/wgpu-hal/src/vulkan/mod.rs index d1ea82772e..0dd361e0b6 100644 --- a/wgpu-hal/src/vulkan/mod.rs +++ b/wgpu-hal/src/vulkan/mod.rs @@ -238,7 +238,6 @@ struct PrivateCapabilities { robust_image_access2: bool, zero_initialize_workgroup_memory: bool, image_format_list: bool, - subgroup_size_control: bool, } bitflags::bitflags!( @@ -344,6 +343,7 @@ struct DeviceShared { timestamp_period: f32, private_caps: PrivateCapabilities, workarounds: Workarounds, + features: wgt::Features, render_passes: Mutex>, framebuffers: Mutex>, } From afdb61c1c1cfc084927e6c4ea03bd862bd44d3ac Mon Sep 17 00:00:00 2001 From: Connor Fitzgerald Date: Tue, 14 May 2024 08:54:57 -0400 Subject: [PATCH 3/4] Fix changelog --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 090b61b0ea..cc8f41bc31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,10 +78,13 @@ By @stefnotch in [#5410](https://github.com/gfx-rs/wgpu/pull/5410) #### Vulkan +- Fix enablement of subgroup ops extension on Vulkan devices that don't support Vulkan 1.3. By @cwfitzgerald in [#5624](https://github.com/gfx-rs/wgpu/pull/5624). + +#### GLES / OpenGL + - Fix regression on OpenGL (EGL) where non-sRGB still used sRGB [#5642](https://github.com/gfx-rs/wgpu/pull/5642) - Fix `ClearColorF`, `ClearColorU` and `ClearColorI` commands being issued before `SetDrawColorBuffers` [#5666](https://github.com/gfx-rs/wgpu/pull/5666) - Replace `glClear` with `glClearBufferF` because `glDrawBuffers` requires that the ith buffer must be `COLOR_ATTACHMENTi` or `NONE` [#5666](https://github.com/gfx-rs/wgpu/pull/5666) -- Fix enablement of subgroup ops extension on Vulkan devices that don't support Vulkan 1.3. By @cwfitzgerald in [#5624](https://github.com/gfx-rs/wgpu/pull/5624). ## v0.20.0 (2024-04-28) From c0d58e2e1464eefa25301a413169f6631716a849 Mon Sep 17 00:00:00 2001 From: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com> Date: Tue, 14 May 2024 16:01:59 +0200 Subject: [PATCH 4/4] revert comment --- wgpu-hal/src/vulkan/adapter.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index 702335efdd..82a30617f3 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -918,7 +918,7 @@ impl PhysicalDeviceProperties { extensions.push(ext::image_robustness::NAME); } - // Require `VK_EXT_subgroup_size_control` if it is available + // Require `VK_EXT_subgroup_size_control` if the associated feature was requested if requested_features.contains(wgt::Features::SUBGROUP) { extensions.push(ext::subgroup_size_control::NAME); }