Skip to content

Commit fb1082c

Browse files
committed
[naga spv] Split workgroup and subgroup memory semantics in Control Barriers
1 parent 80f0700 commit fb1082c

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

naga/src/back/spv/writer.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1644,6 +1644,8 @@ impl Writer {
16441644
pub(super) fn write_control_barrier(&mut self, flags: crate::Barrier, block: &mut Block) {
16451645
let memory_scope = if flags.contains(crate::Barrier::STORAGE) {
16461646
spirv::Scope::Device
1647+
} else if flags.contains(crate::Barrier::SUB_GROUP) {
1648+
spirv::Scope::Subgroup
16471649
} else {
16481650
spirv::Scope::Workgroup
16491651
};
@@ -1656,6 +1658,10 @@ impl Writer {
16561658
spirv::MemorySemantics::WORKGROUP_MEMORY,
16571659
flags.contains(crate::Barrier::WORK_GROUP),
16581660
);
1661+
semantics.set(
1662+
spirv::MemorySemantics::SUBGROUP_MEMORY,
1663+
flags.contains(crate::Barrier::SUB_GROUP),
1664+
);
16591665
semantics.set(
16601666
spirv::MemorySemantics::IMAGE_MEMORY,
16611667
flags.contains(crate::Barrier::TEXTURE),

naga/src/front/spv/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3858,11 +3858,11 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
38583858
);
38593859
flags.set(
38603860
crate::Barrier::WORK_GROUP,
3861-
semantics
3862-
& (spirv::MemorySemantics::SUBGROUP_MEMORY
3863-
| spirv::MemorySemantics::WORKGROUP_MEMORY)
3864-
.bits()
3865-
!= 0,
3861+
semantics & (spirv::MemorySemantics::WORKGROUP_MEMORY).bits() != 0,
3862+
);
3863+
flags.set(
3864+
crate::Barrier::SUB_GROUP,
3865+
semantics & spirv::MemorySemantics::SUBGROUP_MEMORY.bits() != 0,
38663866
);
38673867
flags.set(
38683868
crate::Barrier::TEXTURE,

0 commit comments

Comments
 (0)