Fix Subgroup Ops on VK 1.2 Device (#5624)

This commit is contained in:
Connor Fitzgerald 2024-05-14 10:21:53 -04:00 committed by GitHub
parent 65d8c94afd
commit 7078b0a061
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 7 additions and 7 deletions

View File

@ -62,8 +62,6 @@ for message in compilation_info
By @stefnotch in [#5410](https://github.com/gfx-rs/wgpu/pull/5410) By @stefnotch in [#5410](https://github.com/gfx-rs/wgpu/pull/5410)
### New features ### New features
#### General #### General
@ -78,6 +76,10 @@ By @stefnotch in [#5410](https://github.com/gfx-rs/wgpu/pull/5410)
### Bug Fixes ### 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).
#### GLES / OpenGL #### GLES / OpenGL
- Fix regression on OpenGL (EGL) where non-sRGB still used sRGB [#5642](https://github.com/gfx-rs/wgpu/pull/5642) - Fix regression on OpenGL (EGL) where non-sRGB still used sRGB [#5642](https://github.com/gfx-rs/wgpu/pull/5642)

View File

@ -1447,9 +1447,6 @@ impl super::Instance {
}), }),
image_format_list: phd_capabilities.device_api_version >= vk::API_VERSION_1_2 image_format_list: phd_capabilities.device_api_version >= vk::API_VERSION_1_2
|| phd_capabilities.supports_extension(khr::image_format_list::NAME), || phd_capabilities.supports_extension(khr::image_format_list::NAME),
subgroup_size_control: phd_features
.subgroup_size_control
.map_or(false, |ext| ext.subgroup_size_control == vk::TRUE),
}; };
let capabilities = crate::Capabilities { let capabilities = crate::Capabilities {
limits: phd_capabilities.to_wgpu_limits(), limits: phd_capabilities.to_wgpu_limits(),
@ -1766,6 +1763,7 @@ impl super::Adapter {
vendor_id: self.phd_capabilities.properties.vendor_id, vendor_id: self.phd_capabilities.properties.vendor_id,
timestamp_period: self.phd_capabilities.properties.limits.timestamp_period, timestamp_period: self.phd_capabilities.properties.limits.timestamp_period,
private_caps: self.private_caps.clone(), private_caps: self.private_caps.clone(),
features,
workarounds: self.workarounds, workarounds: self.workarounds,
render_passes: Mutex::new(Default::default()), render_passes: Mutex::new(Default::default()),
framebuffers: Mutex::new(Default::default()), framebuffers: Mutex::new(Default::default()),

View File

@ -773,7 +773,7 @@ impl super::Device {
}; };
let mut flags = vk::PipelineShaderStageCreateFlags::empty(); 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 flags |= vk::PipelineShaderStageCreateFlags::ALLOW_VARYING_SUBGROUP_SIZE
} }

View File

@ -236,7 +236,6 @@ struct PrivateCapabilities {
robust_image_access2: bool, robust_image_access2: bool,
zero_initialize_workgroup_memory: bool, zero_initialize_workgroup_memory: bool,
image_format_list: bool, image_format_list: bool,
subgroup_size_control: bool,
} }
bitflags::bitflags!( bitflags::bitflags!(
@ -342,6 +341,7 @@ struct DeviceShared {
timestamp_period: f32, timestamp_period: f32,
private_caps: PrivateCapabilities, private_caps: PrivateCapabilities,
workarounds: Workarounds, workarounds: Workarounds,
features: wgt::Features,
render_passes: Mutex<rustc_hash::FxHashMap<RenderPassKey, vk::RenderPass>>, render_passes: Mutex<rustc_hash::FxHashMap<RenderPassKey, vk::RenderPass>>,
framebuffers: Mutex<rustc_hash::FxHashMap<FramebufferKey, vk::Framebuffer>>, framebuffers: Mutex<rustc_hash::FxHashMap<FramebufferKey, vk::Framebuffer>>,
} }