Skip to content

Commit ccc0d0c

Browse files
Elabajabacallym
authored andcommitted
fixes for naga_oil Composer's subgroup_stages removal and naga Capabilities update
1 parent cdf3861 commit ccc0d0c

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

crates/bevy_render/src/render_resource/pipeline_cache.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -996,10 +996,8 @@ pub enum PipelineCacheError {
996996

997997
// TODO: This needs to be kept up to date with the capabilities in the `create_validator` function in wgpu-core
998998
// https://github.com/gfx-rs/wgpu/blob/trunk/wgpu-core/src/device/mod.rs#L449
999-
// We use a modified version of the `create_validator` function because `naga_oil`'s composer stores the capabilities
1000-
// and subgroup shader stages instead of a `Validator`.
1001-
// We also can't use that function because `wgpu-core` isn't included in WebGPU builds.
1002-
/// Get the device capabilities and subgroup support for use in `naga_oil`.
999+
// We can't use the `wgpu-core` function to detect the device's capabilities because `wgpu-core` isn't included in WebGPU builds.
1000+
/// Get the device's capabilities for use in `naga_oil`.
10031001
fn get_capabilities(features: Features, downlevel: DownlevelFlags) -> Capabilities {
10041002
let mut capabilities = Capabilities::empty();
10051003
capabilities.set(
@@ -1043,6 +1041,16 @@ fn get_capabilities(features: Features, downlevel: DownlevelFlags) -> Capabiliti
10431041
Capabilities::SHADER_INT64,
10441042
features.contains(Features::SHADER_INT64),
10451043
);
1044+
capabilities.set(
1045+
Capabilities::SHADER_INT64_ATOMIC_MIN_MAX,
1046+
features.intersects(
1047+
Features::SHADER_INT64_ATOMIC_MIN_MAX | Features::SHADER_INT64_ATOMIC_ALL_OPS,
1048+
),
1049+
);
1050+
capabilities.set(
1051+
Capabilities::SHADER_INT64_ATOMIC_ALL_OPS,
1052+
features.contains(Features::SHADER_INT64_ATOMIC_ALL_OPS),
1053+
);
10461054
capabilities.set(
10471055
Capabilities::MULTISAMPLED_SHADING,
10481056
downlevel.contains(DownlevelFlags::MULTISAMPLED_SHADING),
@@ -1063,6 +1071,10 @@ fn get_capabilities(features: Features, downlevel: DownlevelFlags) -> Capabiliti
10631071
Capabilities::SUBGROUP_BARRIER,
10641072
features.intersects(Features::SUBGROUP_BARRIER),
10651073
);
1074+
capabilities.set(
1075+
Capabilities::SUBGROUP_VERTEX_STAGE,
1076+
features.contains(Features::SUBGROUP_VERTEX),
1077+
);
10661078

10671079
capabilities
10681080
}

0 commit comments

Comments
 (0)