Skip to content

Commit b74007f

Browse files
Fix mesh shader validation (gfx-rs#8749)
1 parent 49be67a commit b74007f

3 files changed

Lines changed: 5 additions & 4 deletions

File tree

naga/src/valid/expression.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1165,7 +1165,7 @@ impl super::Validator {
11651165
// WorkGroupUniformLoad
11661166
.contains(TypeFlags::SIZED | TypeFlags::CONSTRUCTIBLE)
11671167
{
1168-
ShaderStages::COMPUTE
1168+
ShaderStages::COMPUTE_LIKE
11691169
} else {
11701170
return Err(ExpressionError::InvalidWorkGroupUniformLoadResultType(ty));
11711171
}

naga/src/valid/function.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,7 +1014,7 @@ impl super::Validator {
10141014
stages &= super::ShaderStages::FRAGMENT;
10151015
}
10161016
S::ControlBarrier(barrier) | S::MemoryBarrier(barrier) => {
1017-
stages &= super::ShaderStages::COMPUTE;
1017+
stages &= super::ShaderStages::COMPUTE_LIKE;
10181018
if barrier.contains(crate::Barrier::SUB_GROUP) {
10191019
if !self.capabilities.contains(
10201020
super::Capabilities::SUBGROUP | super::Capabilities::SUBGROUP_BARRIER,
@@ -1443,7 +1443,7 @@ impl super::Validator {
14431443
}
14441444
}
14451445
S::WorkGroupUniformLoad { pointer, result } => {
1446-
stages &= super::ShaderStages::COMPUTE;
1446+
stages &= super::ShaderStages::COMPUTE_LIKE;
14471447
let pointer_inner =
14481448
context.resolve_type_inner(pointer, &self.valid_expression_set)?;
14491449
match *pointer_inner {

naga/src/valid/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ bitflags::bitflags! {
297297
const COMPUTE = 0x4;
298298
const MESH = 0x8;
299299
const TASK = 0x10;
300+
const COMPUTE_LIKE = Self::COMPUTE.bits() | Self::TASK.bits() | Self::MESH.bits();
300301
}
301302
}
302303

@@ -548,7 +549,7 @@ impl Validator {
548549
stages |= ShaderStages::VERTEX;
549550
}
550551
if capabilities.contains(Capabilities::SUBGROUP) {
551-
stages |= ShaderStages::FRAGMENT | ShaderStages::COMPUTE;
552+
stages |= ShaderStages::FRAGMENT | ShaderStages::COMPUTE_LIKE;
552553
}
553554
stages
554555
};

0 commit comments

Comments
 (0)