Skip to content

Commit c68828b

Browse files
WIP: refactor!: s/SUBGROUP/&S feature names
1 parent 4907276 commit c68828b

15 files changed

Lines changed: 74 additions & 71 deletions

File tree

deno_webgpu/webidl.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ pub fn feature_names_to_features(
485485
GPUFeatureName::Bgra8unormStorage => Features::BGRA8UNORM_STORAGE,
486486
GPUFeatureName::Float32Filterable => Features::FLOAT32_FILTERABLE,
487487
GPUFeatureName::DualSourceBlending => Features::DUAL_SOURCE_BLENDING,
488-
GPUFeatureName::Subgroups => Features::SUBGROUP,
488+
GPUFeatureName::Subgroups => Features::SUBGROUPS,
489489
GPUFeatureName::TextureFormat16BitNorm => Features::TEXTURE_FORMAT_16BIT_NORM,
490490
GPUFeatureName::TextureCompressionAstcHdr => Features::TEXTURE_COMPRESSION_ASTC_HDR,
491491
GPUFeatureName::TextureAdapterSpecificFormatFeatures => Features::TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES,
@@ -575,7 +575,7 @@ pub fn features_to_feature_names(
575575
if features.contains(wgpu_types::Features::DUAL_SOURCE_BLENDING) {
576576
return_features.insert(DualSourceBlending);
577577
}
578-
if features.contains(wgpu_types::Features::SUBGROUP) {
578+
if features.contains(wgpu_types::Features::SUBGROUPS) {
579579
return_features.insert(Subgroups);
580580
}
581581

naga/src/valid/function.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,11 +1022,11 @@ impl super::Validator {
10221022
stages &= super::ShaderStages::COMPUTE_LIKE;
10231023
if barrier.contains(crate::Barrier::SUB_GROUP) {
10241024
if !self.capabilities.contains(
1025-
super::Capabilities::SUBGROUP | super::Capabilities::SUBGROUP_BARRIER,
1025+
super::Capabilities::SUBGROUPS | super::Capabilities::SUBGROUPS_BARRIER,
10261026
) {
10271027
return Err(FunctionError::MissingCapability(
1028-
super::Capabilities::SUBGROUP
1029-
| super::Capabilities::SUBGROUP_BARRIER,
1028+
super::Capabilities::SUBGROUPS
1029+
| super::Capabilities::SUBGROUPS_BARRIER,
10301030
)
10311031
.with_span_static(span, "missing capability for this operation"));
10321032
}
@@ -1570,9 +1570,9 @@ impl super::Validator {
15701570
}
15711571
S::SubgroupBallot { result, predicate } => {
15721572
stages &= self.subgroup_stages;
1573-
if !self.capabilities.contains(super::Capabilities::SUBGROUP) {
1573+
if !self.capabilities.contains(super::Capabilities::SUBGROUPS) {
15741574
return Err(FunctionError::MissingCapability(
1575-
super::Capabilities::SUBGROUP,
1575+
super::Capabilities::SUBGROUPS,
15761576
)
15771577
.with_span_static(span, "missing capability for this operation"));
15781578
}
@@ -1611,9 +1611,9 @@ impl super::Validator {
16111611
result,
16121612
} => {
16131613
stages &= self.subgroup_stages;
1614-
if !self.capabilities.contains(super::Capabilities::SUBGROUP) {
1614+
if !self.capabilities.contains(super::Capabilities::SUBGROUPS) {
16151615
return Err(FunctionError::MissingCapability(
1616-
super::Capabilities::SUBGROUP,
1616+
super::Capabilities::SUBGROUPS,
16171617
)
16181618
.with_span_static(span, "missing capability for this operation"));
16191619
}
@@ -1632,9 +1632,9 @@ impl super::Validator {
16321632
result,
16331633
} => {
16341634
stages &= self.subgroup_stages;
1635-
if !self.capabilities.contains(super::Capabilities::SUBGROUP) {
1635+
if !self.capabilities.contains(super::Capabilities::SUBGROUPS) {
16361636
return Err(FunctionError::MissingCapability(
1637-
super::Capabilities::SUBGROUP,
1637+
super::Capabilities::SUBGROUPS,
16381638
)
16391639
.with_span_static(span, "missing capability for this operation"));
16401640
}

naga/src/valid/interface.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ impl VaryingContext<'_> {
246246
Bi::NumSubgroups
247247
| Bi::SubgroupId
248248
| Bi::SubgroupSize
249-
| Bi::SubgroupInvocationId => Capabilities::SUBGROUP,
249+
| Bi::SubgroupInvocationId => Capabilities::SUBGROUPS,
250250
_ => Capabilities::empty(),
251251
};
252252
if !self.capabilities.contains(required) {

naga/src/valid/mod.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -135,24 +135,24 @@ bitflags::bitflags! {
135135
/// Support for subgroup operations (except barriers) in fragment and compute shaders.
136136
///
137137
/// Subgroup operations in the vertex stage require
138-
/// [`Capabilities::SUBGROUP_VERTEX_STAGE`] in addition to `Capabilities::SUBGROUP`.
138+
/// [`Capabilities::SUBGROUPS_VERTEX_STAGE`] in addition to `Capabilities::SUBGROUPS`.
139139
/// (But note that `create_validator` automatically sets
140-
/// `Capabilities::SUBGROUP` whenever `Features::SUBGROUP_VERTEX` is
140+
/// `Capabilities::SUBGROUPS` whenever `Features::SUBGROUPS_VERTEX` is
141141
/// available.)
142142
///
143-
/// Subgroup barriers require [`Capabilities::SUBGROUP_BARRIER`] in addition to
144-
/// `Capabilities::SUBGROUP`.
145-
const SUBGROUP = 1 << 17;
143+
/// Subgroup barriers require [`Capabilities::SUBGROUPS_BARRIER`] in addition to
144+
/// `Capabilities::SUBGROUPS`.
145+
const SUBGROUPS = 1 << 17;
146146
/// Support for subgroup barriers in compute shaders.
147147
///
148-
/// Requires [`Capabilities::SUBGROUP`]. Without it, enables nothing.
149-
const SUBGROUP_BARRIER = 1 << 18;
148+
/// Requires [`Capabilities::SUBGROUPS`]. Without it, enables nothing.
149+
const SUBGROUPS_BARRIER = 1 << 18;
150150
/// Support for subgroup operations (not including barriers) in the vertex stage.
151151
///
152-
/// Without [`Capabilities::SUBGROUP`], enables nothing. (But note that
153-
/// `create_validator` automatically sets `Capabilities::SUBGROUP`
154-
/// whenever `Features::SUBGROUP_VERTEX` is available.)
155-
const SUBGROUP_VERTEX_STAGE = 1 << 19;
152+
/// Without [`Capabilities::SUBGROUPS`], enables nothing. (But note that
153+
/// `create_validator` automatically sets `Capabilities::SUBGROUPS`
154+
/// whenever `Features::SUBGROUPS_VERTEX` is available.)
155+
const SUBGROUPS_VERTEX_STAGE = 1 << 19;
156156
/// Support for [`AtomicFunction::Min`] and [`AtomicFunction::Max`] on
157157
/// 64-bit integers in the [`Storage`] address space, when the return
158158
/// value is not used.
@@ -537,7 +537,7 @@ impl Validator {
537537
///
538538
/// [`Module`]: crate::Module
539539
pub fn new(flags: ValidationFlags, capabilities: Capabilities) -> Self {
540-
let subgroup_operations = if capabilities.contains(Capabilities::SUBGROUP) {
540+
let subgroup_operations = if capabilities.contains(Capabilities::SUBGROUPS) {
541541
use SubgroupOperationSet as S;
542542
S::BASIC
543543
| S::VOTE
@@ -551,10 +551,10 @@ impl Validator {
551551
};
552552
let subgroup_stages = {
553553
let mut stages = ShaderStages::empty();
554-
if capabilities.contains(Capabilities::SUBGROUP_VERTEX_STAGE) {
554+
if capabilities.contains(Capabilities::SUBGROUPS_VERTEX_STAGE) {
555555
stages |= ShaderStages::VERTEX;
556556
}
557-
if capabilities.contains(Capabilities::SUBGROUP) {
557+
if capabilities.contains(Capabilities::SUBGROUPS) {
558558
stages |= ShaderStages::FRAGMENT | ShaderStages::COMPUTE_LIKE;
559559
}
560560
stages

naga/tests/in/spv/subgroup-barrier.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
capabilities = "SUBGROUP | SUBGROUP_BARRIER"
1+
capabilities = "SUBGROUPS | SUBGROUPS_BARRIER"
22
targets = "WGSL | SPIRV | GLSL | METAL"
33

44
[msl]

naga/tests/in/spv/subgroup-operations-s.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
capabilities = "SUBGROUP"
1+
capabilities = "SUBGROUPS"
22
targets = "METAL | GLSL | HLSL | WGSL"
33

44
[msl]

naga/tests/in/wgsl/subgroup-operations.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
capabilities = "SUBGROUP | SUBGROUP_BARRIER"
1+
capabilities = "SUBGROUPS | SUBGROUPS_BARRIER"
22

33
[msl]
44
fake_missing_bindings = false

naga/tests/naga/wgsl_errors.rs

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,8 +1043,8 @@ macro_rules! check_one_validation {
10431043
/// programs earlier.
10441044
///
10451045
/// Multiple capabilities can be specified in the macro argument in the case
1046-
/// where any one of them grants access to a feature (e.g. `SUBGROUP` and
1047-
/// `SUBGROUP_BARRIER` for `subgroupBarrier`). When passing multiple capabilities,
1046+
/// where any one of them grants access to a feature (e.g. `SUBGROUPS` and
1047+
/// `SUBGROUPS_BARRIER` for `subgroupBarrier`). When passing multiple capabilities,
10481048
/// all of the passed capabilities must be covered by the same enable-extension.
10491049
///
10501050
/// NOTE: The only reason we don't use a function for this is because we need to syntactically
@@ -3912,7 +3912,7 @@ fn subgroup_capability() {
39123912

39133913
// Non-barrier subgroup operations...
39143914

3915-
// ...in fragment and compute shaders require [`Capabilities::SUBGROUP`]`.
3915+
// ...in fragment and compute shaders require [`Capabilities::SUBGROUPS`]`.
39163916
for stage in [naga::ShaderStage::Fragment, naga::ShaderStage::Compute] {
39173917
let stage_attr = match stage {
39183918
naga::ShaderStage::Fragment => "@fragment",
@@ -3929,14 +3929,14 @@ fn subgroup_capability() {
39293929
Err(naga::valid::ValidationError::EntryPoint {
39303930
stage: err_stage,
39313931
source: naga::valid::EntryPointError::Function(
3932-
naga::valid::FunctionError::MissingCapability(Capabilities::SUBGROUP)
3932+
naga::valid::FunctionError::MissingCapability(Capabilities::SUBGROUPS)
39333933
),
39343934
..
39353935
}) if *err_stage == stage
39363936
}
39373937
}
39383938

3939-
// ...in fragment and compute shaders require *only* [`Capabilities::SUBGROUP`]`.
3939+
// ...in fragment and compute shaders require *only* [`Capabilities::SUBGROUPS`]`.
39403940
for stage in [naga::ShaderStage::Fragment, naga::ShaderStage::Compute] {
39413941
let stage_attr = match stage {
39423942
naga::ShaderStage::Fragment => "@fragment",
@@ -3952,15 +3952,18 @@ fn subgroup_capability() {
39523952
}}
39533953
"
39543954
),
3955-
Capabilities::SUBGROUP,
3955+
Capabilities::SUBGROUPS,
39563956
);
39573957
}
39583958

3959-
// ...in vertex shaders require both [`Capabilities::SUBGROUP`] and
3960-
// [`Capabilities::SUBGROUP_VERTEX_STAGE`]`. (But note that
3961-
// `create_validator` automatically sets `Capabilities::SUBGROUP` whenever
3962-
// `Features::SUBGROUP_VERTEX` is available.)
3963-
for cap in [Capabilities::SUBGROUP, Capabilities::SUBGROUP_VERTEX_STAGE] {
3959+
// ...in vertex shaders require both [`Capabilities::SUBGROUPS`] and
3960+
// [`Capabilities::SUBGROUPS_VERTEX_STAGE`]`. (But note that
3961+
// `create_validator` automatically sets `Capabilities::SUBGROUPS` whenever
3962+
// `Features::SUBGROUPS_VERTEX` is available.)
3963+
for cap in [
3964+
Capabilities::SUBGROUPS,
3965+
Capabilities::SUBGROUPS_VERTEX_STAGE,
3966+
] {
39643967
check_validation! {
39653968
"
39663969
@vertex
@@ -3981,13 +3984,13 @@ fn subgroup_capability() {
39813984
return vec4();
39823985
}}
39833986
",
3984-
Capabilities::SUBGROUP | Capabilities::SUBGROUP_VERTEX_STAGE,
3987+
Capabilities::SUBGROUPS | Capabilities::SUBGROUPS_VERTEX_STAGE,
39853988
);
39863989

39873990
// Subgroup barriers...
39883991

3989-
// ...require both SUBGROUP and SUBGROUP_BARRIER.
3990-
for cap in [Capabilities::SUBGROUP, Capabilities::SUBGROUP_BARRIER] {
3992+
// ...require both SUBGROUPS and SUBGROUPS_BARRIER.
3993+
for cap in [Capabilities::SUBGROUPS, Capabilities::SUBGROUPS_BARRIER] {
39913994
check_validation! {
39923995
r#"
39933996
@compute @workgroup_size(1)
@@ -4001,7 +4004,7 @@ fn subgroup_capability() {
40014004
naga::valid::FunctionError::MissingCapability(required_caps)
40024005
),
40034006
..
4004-
}) if *required_caps == Capabilities::SUBGROUP | Capabilities::SUBGROUP_BARRIER,
4007+
}) if *required_caps == Capabilities::SUBGROUPS | Capabilities::SUBGROUPS_BARRIER,
40054008
cap
40064009
}
40074010
}
@@ -4020,7 +4023,7 @@ fn subgroup_capability() {
40204023
source: naga::valid::EntryPointError::ForbiddenStageOperations,
40214024
..
40224025
}),
4023-
Capabilities::SUBGROUP | Capabilities::SUBGROUP_BARRIER | Capabilities::SUBGROUP_VERTEX_STAGE
4026+
Capabilities::SUBGROUPS | Capabilities::SUBGROUPS_BARRIER | Capabilities::SUBGROUPS_VERTEX_STAGE
40244027
}
40254028

40264029
// ...are never supported in fragment shaders.
@@ -4036,12 +4039,12 @@ fn subgroup_capability() {
40364039
source: naga::valid::EntryPointError::ForbiddenStageOperations,
40374040
..
40384041
}),
4039-
Capabilities::SUBGROUP | Capabilities::SUBGROUP_BARRIER
4042+
Capabilities::SUBGROUPS | Capabilities::SUBGROUPS_BARRIER
40404043
}
40414044

40424045
// The `subgroup_id` built-in...
40434046

4044-
// ...in compute shaders requires [`Capabilities::SUBGROUP`]`.
4047+
// ...in compute shaders requires [`Capabilities::SUBGROUPS`]`.
40454048
check_one_validation! {
40464049
"
40474050
@compute @workgroup_size(1)
@@ -4052,20 +4055,20 @@ fn subgroup_capability() {
40524055
stage: naga::ShaderStage::Compute,
40534056
source: naga::valid::EntryPointError::Argument(
40544057
_,
4055-
naga::valid::VaryingError::UnsupportedCapability(Capabilities::SUBGROUP)
4058+
naga::valid::VaryingError::UnsupportedCapability(Capabilities::SUBGROUPS)
40564059
),
40574060
..
40584061
})
40594062
}
40604063

4061-
// ...in compute shaders requires *only* [`Capabilities::SUBGROUP`]`.
4064+
// ...in compute shaders requires *only* [`Capabilities::SUBGROUPS`]`.
40624065
no_validation_error(
40634066
"
40644067
@compute @workgroup_size(1)
40654068
fn main(@builtin(subgroup_id) subgroup_id: u32) {{
40664069
}}
40674070
",
4068-
Capabilities::SUBGROUP,
4071+
Capabilities::SUBGROUPS,
40694072
);
40704073
}
40714074

@@ -4083,7 +4086,7 @@ fn subgroup_invalid_broadcast() {
40834086
),
40844087
..
40854088
}),
4086-
naga::valid::Capabilities::SUBGROUP
4089+
naga::valid::Capabilities::SUBGROUPS
40874090
}
40884091
check_validation! {
40894092
r#"
@@ -4097,7 +4100,7 @@ fn subgroup_invalid_broadcast() {
40974100
),
40984101
..
40994102
}),
4100-
naga::valid::Capabilities::SUBGROUP
4103+
naga::valid::Capabilities::SUBGROUPS
41014104
}
41024105
}
41034106

tests/tests/wgpu-gpu/subgroup_operations/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const TEST_COUNT: u32 = 37;
1313
static SUBGROUP_OPERATIONS: GpuTestConfiguration = GpuTestConfiguration::new()
1414
.parameters(
1515
TestParameters::default()
16-
.features(wgpu::Features::SUBGROUP)
16+
.features(wgpu::Features::SUBGROUPS)
1717
.limits(wgpu::Limits::downlevel_defaults())
1818
// Expect metal to fail on tests involving operations in divergent control flow
1919
//

wgpu-core/src/device/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -504,20 +504,20 @@ pub fn create_validator(
504504
downlevel.contains(wgt::DownlevelFlags::CUBE_ARRAY_TEXTURES),
505505
);
506506
caps.set(
507-
Caps::SUBGROUP,
508-
features.intersects(wgt::Features::SUBGROUP | wgt::Features::SUBGROUP_VERTEX),
507+
Caps::SUBGROUPS,
508+
features.intersects(wgt::Features::SUBGROUPS | wgt::Features::SUBGROUPS_VERTEX),
509509
);
510510
caps.set(
511-
Caps::SUBGROUP_BARRIER,
512-
features.intersects(wgt::Features::SUBGROUP_BARRIER),
511+
Caps::SUBGROUPS_BARRIER,
512+
features.intersects(wgt::Features::SUBGROUPS_BARRIER),
513513
);
514514
caps.set(
515515
Caps::RAY_QUERY,
516516
features.intersects(wgt::Features::EXPERIMENTAL_RAY_QUERY),
517517
);
518518
caps.set(
519-
Caps::SUBGROUP_VERTEX_STAGE,
520-
features.contains(wgt::Features::SUBGROUP_VERTEX),
519+
Caps::SUBGROUPS_VERTEX_STAGE,
520+
features.contains(wgt::Features::SUBGROUPS_VERTEX),
521521
);
522522
caps.set(
523523
Caps::RAY_HIT_VERTEX_POSITION,

0 commit comments

Comments
 (0)