Skip to content

Commit

Permalink
More cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
atlv24 committed Apr 3, 2024
1 parent a009191 commit 8f15a3a
Show file tree
Hide file tree
Showing 8 changed files with 247 additions and 226 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ winit = { version = "0.29", features = ["android-native-activity"] }
# Metal dependencies
block = "0.1"
core-graphics-types = "0.1"
metal = { version = "0.27.0", git = "https://github.com/gfx-rs/metal-rs", rev = "ff8fd3d6dc7792852f8a015458d7e6d42d7fb352" }
metal = "0.27.0"
objc = "0.2.5"

# Vulkan dependencies
Expand Down
1 change: 1 addition & 0 deletions naga-cli/src/bin/naga.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ impl FromStr for ShaderModelArg {
"64" => ShaderModel::V6_4,
"65" => ShaderModel::V6_5,
"66" => ShaderModel::V6_6,
"67" => ShaderModel::V6_7,
_ => return Err(format!("Invalid value for --shader-model: {s}")),
}))
}
Expand Down
2 changes: 1 addition & 1 deletion naga/src/back/wgsl/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -594,7 +594,7 @@ impl<W: Write> Writer<W> {
write!(self.out, ">")?;
}
TypeInner::AccelerationStructure => write!(self.out, "acceleration_structure")?,
TypeInner::Struct { .. } | TypeInner::RayQuery => {
_ => {
return Err(Error::Unimplemented(format!("write_value_type {inner:?}")));
}
}
Expand Down
84 changes: 52 additions & 32 deletions naga/src/front/wgsl/lower/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2025,40 +2025,60 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
)?))
}
"atomicMin" => {
return Ok(if is_statement {
self.atomic_no_return_helper(
span,
crate::AtomicFunctionNoReturn::Min,
arguments,
ctx,
)?;
None
} else {
Some(self.atomic_helper(
span,
crate::AtomicFunction::Min,
arguments,
ctx,
)?)
});
let mut args = ctx.prepare_args(arguments, 3, span);
args.next()?;
let value = self.expression(args.next()?, ctx)?;
return Ok(
if match *resolve_inner!(ctx, value) {
crate::TypeInner::Scalar(crate::Scalar {
width: 8, ..
}) => is_statement,
_ => false,
} {
self.atomic_no_return_helper(
span,
crate::AtomicFunctionNoReturn::Min,
arguments,
ctx,
)?;
None
} else {
Some(self.atomic_helper(
span,
crate::AtomicFunction::Min,
arguments,
ctx,
)?)
},
);
}
"atomicMax" => {
return Ok(if is_statement {
self.atomic_no_return_helper(
span,
crate::AtomicFunctionNoReturn::Max,
arguments,
ctx,
)?;
None
} else {
Some(self.atomic_helper(
span,
crate::AtomicFunction::Max,
arguments,
ctx,
)?)
});
let mut args = ctx.prepare_args(arguments, 3, span);
args.next()?;
let value = self.expression(args.next()?, ctx)?;
return Ok(
if match *resolve_inner!(ctx, value) {
crate::TypeInner::Scalar(crate::Scalar {
width: 8, ..
}) => is_statement,
_ => false,
} {
self.atomic_no_return_helper(
span,
crate::AtomicFunctionNoReturn::Max,
arguments,
ctx,
)?;
None
} else {
Some(self.atomic_helper(
span,
crate::AtomicFunction::Max,
arguments,
ctx,
)?)
},
);
}
"atomicExchange" => {
return Ok(Some(self.atomic_helper(
Expand Down
96 changes: 48 additions & 48 deletions naga/tests/out/glsl/atomicOps.cs_main.Compute.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -71,62 +71,62 @@ void main() {
int _e112 = atomicAdd(workgroup_struct.atomic_arr[1], -1);
memoryBarrierShared();
barrier();
atomicMax(_group_0_binding_0_cs, 1u);
atomicMax(_group_0_binding_1_cs[1], 1);
atomicMax(_group_0_binding_2_cs.atomic_scalar, 1u);
atomicMax(_group_0_binding_2_cs.atomic_arr[1], 1);
atomicMax(workgroup_atomic_scalar, 1u);
atomicMax(workgroup_atomic_arr[1], 1);
atomicMax(workgroup_struct.atomic_scalar, 1u);
atomicMax(workgroup_struct.atomic_arr[1], 1);
uint _e115 = atomicMax(_group_0_binding_0_cs, 1u);
int _e119 = atomicMax(_group_0_binding_1_cs[1], 1);
uint _e123 = atomicMax(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e128 = atomicMax(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e131 = atomicMax(workgroup_atomic_scalar, 1u);
int _e135 = atomicMax(workgroup_atomic_arr[1], 1);
uint _e139 = atomicMax(workgroup_struct.atomic_scalar, 1u);
int _e144 = atomicMax(workgroup_struct.atomic_arr[1], 1);
memoryBarrierShared();
barrier();
atomicMin(_group_0_binding_0_cs, 1u);
atomicMin(_group_0_binding_1_cs[1], 1);
atomicMin(_group_0_binding_2_cs.atomic_scalar, 1u);
atomicMin(_group_0_binding_2_cs.atomic_arr[1], 1);
atomicMin(workgroup_atomic_scalar, 1u);
atomicMin(workgroup_atomic_arr[1], 1);
atomicMin(workgroup_struct.atomic_scalar, 1u);
atomicMin(workgroup_struct.atomic_arr[1], 1);
uint _e147 = atomicMin(_group_0_binding_0_cs, 1u);
int _e151 = atomicMin(_group_0_binding_1_cs[1], 1);
uint _e155 = atomicMin(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e160 = atomicMin(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e163 = atomicMin(workgroup_atomic_scalar, 1u);
int _e167 = atomicMin(workgroup_atomic_arr[1], 1);
uint _e171 = atomicMin(workgroup_struct.atomic_scalar, 1u);
int _e176 = atomicMin(workgroup_struct.atomic_arr[1], 1);
memoryBarrierShared();
barrier();
uint _e163 = atomicAnd(_group_0_binding_0_cs, 1u);
int _e167 = atomicAnd(_group_0_binding_1_cs[1], 1);
uint _e171 = atomicAnd(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e176 = atomicAnd(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e179 = atomicAnd(workgroup_atomic_scalar, 1u);
int _e183 = atomicAnd(workgroup_atomic_arr[1], 1);
uint _e187 = atomicAnd(workgroup_struct.atomic_scalar, 1u);
int _e192 = atomicAnd(workgroup_struct.atomic_arr[1], 1);
uint _e179 = atomicAnd(_group_0_binding_0_cs, 1u);
int _e183 = atomicAnd(_group_0_binding_1_cs[1], 1);
uint _e187 = atomicAnd(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e192 = atomicAnd(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e195 = atomicAnd(workgroup_atomic_scalar, 1u);
int _e199 = atomicAnd(workgroup_atomic_arr[1], 1);
uint _e203 = atomicAnd(workgroup_struct.atomic_scalar, 1u);
int _e208 = atomicAnd(workgroup_struct.atomic_arr[1], 1);
memoryBarrierShared();
barrier();
uint _e195 = atomicOr(_group_0_binding_0_cs, 1u);
int _e199 = atomicOr(_group_0_binding_1_cs[1], 1);
uint _e203 = atomicOr(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e208 = atomicOr(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e211 = atomicOr(workgroup_atomic_scalar, 1u);
int _e215 = atomicOr(workgroup_atomic_arr[1], 1);
uint _e219 = atomicOr(workgroup_struct.atomic_scalar, 1u);
int _e224 = atomicOr(workgroup_struct.atomic_arr[1], 1);
uint _e211 = atomicOr(_group_0_binding_0_cs, 1u);
int _e215 = atomicOr(_group_0_binding_1_cs[1], 1);
uint _e219 = atomicOr(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e224 = atomicOr(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e227 = atomicOr(workgroup_atomic_scalar, 1u);
int _e231 = atomicOr(workgroup_atomic_arr[1], 1);
uint _e235 = atomicOr(workgroup_struct.atomic_scalar, 1u);
int _e240 = atomicOr(workgroup_struct.atomic_arr[1], 1);
memoryBarrierShared();
barrier();
uint _e227 = atomicXor(_group_0_binding_0_cs, 1u);
int _e231 = atomicXor(_group_0_binding_1_cs[1], 1);
uint _e235 = atomicXor(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e240 = atomicXor(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e243 = atomicXor(workgroup_atomic_scalar, 1u);
int _e247 = atomicXor(workgroup_atomic_arr[1], 1);
uint _e251 = atomicXor(workgroup_struct.atomic_scalar, 1u);
int _e256 = atomicXor(workgroup_struct.atomic_arr[1], 1);
uint _e259 = atomicExchange(_group_0_binding_0_cs, 1u);
int _e263 = atomicExchange(_group_0_binding_1_cs[1], 1);
uint _e267 = atomicExchange(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e272 = atomicExchange(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e275 = atomicExchange(workgroup_atomic_scalar, 1u);
int _e279 = atomicExchange(workgroup_atomic_arr[1], 1);
uint _e283 = atomicExchange(workgroup_struct.atomic_scalar, 1u);
int _e288 = atomicExchange(workgroup_struct.atomic_arr[1], 1);
uint _e243 = atomicXor(_group_0_binding_0_cs, 1u);
int _e247 = atomicXor(_group_0_binding_1_cs[1], 1);
uint _e251 = atomicXor(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e256 = atomicXor(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e259 = atomicXor(workgroup_atomic_scalar, 1u);
int _e263 = atomicXor(workgroup_atomic_arr[1], 1);
uint _e267 = atomicXor(workgroup_struct.atomic_scalar, 1u);
int _e272 = atomicXor(workgroup_struct.atomic_arr[1], 1);
uint _e275 = atomicExchange(_group_0_binding_0_cs, 1u);
int _e279 = atomicExchange(_group_0_binding_1_cs[1], 1);
uint _e283 = atomicExchange(_group_0_binding_2_cs.atomic_scalar, 1u);
int _e288 = atomicExchange(_group_0_binding_2_cs.atomic_arr[1], 1);
uint _e291 = atomicExchange(workgroup_atomic_scalar, 1u);
int _e295 = atomicExchange(workgroup_atomic_arr[1], 1);
uint _e299 = atomicExchange(workgroup_struct.atomic_scalar, 1u);
int _e304 = atomicExchange(workgroup_struct.atomic_arr[1], 1);
return;
}

96 changes: 48 additions & 48 deletions naga/tests/out/hlsl/atomicOps.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -55,57 +55,57 @@ void cs_main(uint3 id : SV_GroupThreadID, uint3 __local_invocation_id : SV_Group
uint _e107; InterlockedAdd(workgroup_struct.atomic_scalar, -1u, _e107);
int _e112; InterlockedAdd(workgroup_struct.atomic_arr[1], -1, _e112);
GroupMemoryBarrierWithGroupSync();
uint _e_discard113; storage_atomic_scalar.InterlockedMax(0, 1u, _e_discard113);
int _e_discard116; storage_atomic_arr.InterlockedMax(4, 1, _e_discard116);
uint _e_discard119; storage_struct.InterlockedMax(0, 1u, _e_discard119);
int _e_discard123; storage_struct.InterlockedMax(4+4, 1, _e_discard123);
uint _e_discard125; InterlockedMax(workgroup_atomic_scalar, 1u, _e_discard125);
int _e_discard128; InterlockedMax(workgroup_atomic_arr[1], 1, _e_discard128);
uint _e_discard131; InterlockedMax(workgroup_struct.atomic_scalar, 1u, _e_discard131);
int _e_discard135; InterlockedMax(workgroup_struct.atomic_arr[1], 1, _e_discard135);
uint _e115; storage_atomic_scalar.InterlockedMax(0, 1u, _e115);
int _e119; storage_atomic_arr.InterlockedMax(4, 1, _e119);
uint _e123; storage_struct.InterlockedMax(0, 1u, _e123);
int _e128; storage_struct.InterlockedMax(4+4, 1, _e128);
uint _e131; InterlockedMax(workgroup_atomic_scalar, 1u, _e131);
int _e135; InterlockedMax(workgroup_atomic_arr[1], 1, _e135);
uint _e139; InterlockedMax(workgroup_struct.atomic_scalar, 1u, _e139);
int _e144; InterlockedMax(workgroup_struct.atomic_arr[1], 1, _e144);
GroupMemoryBarrierWithGroupSync();
uint _e_discard137; storage_atomic_scalar.InterlockedMin(0, 1u, _e_discard137);
int _e_discard140; storage_atomic_arr.InterlockedMin(4, 1, _e_discard140);
uint _e_discard143; storage_struct.InterlockedMin(0, 1u, _e_discard143);
int _e_discard147; storage_struct.InterlockedMin(4+4, 1, _e_discard147);
uint _e_discard149; InterlockedMin(workgroup_atomic_scalar, 1u, _e_discard149);
int _e_discard152; InterlockedMin(workgroup_atomic_arr[1], 1, _e_discard152);
uint _e_discard155; InterlockedMin(workgroup_struct.atomic_scalar, 1u, _e_discard155);
int _e_discard159; InterlockedMin(workgroup_struct.atomic_arr[1], 1, _e_discard159);
uint _e147; storage_atomic_scalar.InterlockedMin(0, 1u, _e147);
int _e151; storage_atomic_arr.InterlockedMin(4, 1, _e151);
uint _e155; storage_struct.InterlockedMin(0, 1u, _e155);
int _e160; storage_struct.InterlockedMin(4+4, 1, _e160);
uint _e163; InterlockedMin(workgroup_atomic_scalar, 1u, _e163);
int _e167; InterlockedMin(workgroup_atomic_arr[1], 1, _e167);
uint _e171; InterlockedMin(workgroup_struct.atomic_scalar, 1u, _e171);
int _e176; InterlockedMin(workgroup_struct.atomic_arr[1], 1, _e176);
GroupMemoryBarrierWithGroupSync();
uint _e163; storage_atomic_scalar.InterlockedAnd(0, 1u, _e163);
int _e167; storage_atomic_arr.InterlockedAnd(4, 1, _e167);
uint _e171; storage_struct.InterlockedAnd(0, 1u, _e171);
int _e176; storage_struct.InterlockedAnd(4+4, 1, _e176);
uint _e179; InterlockedAnd(workgroup_atomic_scalar, 1u, _e179);
int _e183; InterlockedAnd(workgroup_atomic_arr[1], 1, _e183);
uint _e187; InterlockedAnd(workgroup_struct.atomic_scalar, 1u, _e187);
int _e192; InterlockedAnd(workgroup_struct.atomic_arr[1], 1, _e192);
uint _e179; storage_atomic_scalar.InterlockedAnd(0, 1u, _e179);
int _e183; storage_atomic_arr.InterlockedAnd(4, 1, _e183);
uint _e187; storage_struct.InterlockedAnd(0, 1u, _e187);
int _e192; storage_struct.InterlockedAnd(4+4, 1, _e192);
uint _e195; InterlockedAnd(workgroup_atomic_scalar, 1u, _e195);
int _e199; InterlockedAnd(workgroup_atomic_arr[1], 1, _e199);
uint _e203; InterlockedAnd(workgroup_struct.atomic_scalar, 1u, _e203);
int _e208; InterlockedAnd(workgroup_struct.atomic_arr[1], 1, _e208);
GroupMemoryBarrierWithGroupSync();
uint _e195; storage_atomic_scalar.InterlockedOr(0, 1u, _e195);
int _e199; storage_atomic_arr.InterlockedOr(4, 1, _e199);
uint _e203; storage_struct.InterlockedOr(0, 1u, _e203);
int _e208; storage_struct.InterlockedOr(4+4, 1, _e208);
uint _e211; InterlockedOr(workgroup_atomic_scalar, 1u, _e211);
int _e215; InterlockedOr(workgroup_atomic_arr[1], 1, _e215);
uint _e219; InterlockedOr(workgroup_struct.atomic_scalar, 1u, _e219);
int _e224; InterlockedOr(workgroup_struct.atomic_arr[1], 1, _e224);
uint _e211; storage_atomic_scalar.InterlockedOr(0, 1u, _e211);
int _e215; storage_atomic_arr.InterlockedOr(4, 1, _e215);
uint _e219; storage_struct.InterlockedOr(0, 1u, _e219);
int _e224; storage_struct.InterlockedOr(4+4, 1, _e224);
uint _e227; InterlockedOr(workgroup_atomic_scalar, 1u, _e227);
int _e231; InterlockedOr(workgroup_atomic_arr[1], 1, _e231);
uint _e235; InterlockedOr(workgroup_struct.atomic_scalar, 1u, _e235);
int _e240; InterlockedOr(workgroup_struct.atomic_arr[1], 1, _e240);
GroupMemoryBarrierWithGroupSync();
uint _e227; storage_atomic_scalar.InterlockedXor(0, 1u, _e227);
int _e231; storage_atomic_arr.InterlockedXor(4, 1, _e231);
uint _e235; storage_struct.InterlockedXor(0, 1u, _e235);
int _e240; storage_struct.InterlockedXor(4+4, 1, _e240);
uint _e243; InterlockedXor(workgroup_atomic_scalar, 1u, _e243);
int _e247; InterlockedXor(workgroup_atomic_arr[1], 1, _e247);
uint _e251; InterlockedXor(workgroup_struct.atomic_scalar, 1u, _e251);
int _e256; InterlockedXor(workgroup_struct.atomic_arr[1], 1, _e256);
uint _e259; storage_atomic_scalar.InterlockedExchange(0, 1u, _e259);
int _e263; storage_atomic_arr.InterlockedExchange(4, 1, _e263);
uint _e267; storage_struct.InterlockedExchange(0, 1u, _e267);
int _e272; storage_struct.InterlockedExchange(4+4, 1, _e272);
uint _e275; InterlockedExchange(workgroup_atomic_scalar, 1u, _e275);
int _e279; InterlockedExchange(workgroup_atomic_arr[1], 1, _e279);
uint _e283; InterlockedExchange(workgroup_struct.atomic_scalar, 1u, _e283);
int _e288; InterlockedExchange(workgroup_struct.atomic_arr[1], 1, _e288);
uint _e243; storage_atomic_scalar.InterlockedXor(0, 1u, _e243);
int _e247; storage_atomic_arr.InterlockedXor(4, 1, _e247);
uint _e251; storage_struct.InterlockedXor(0, 1u, _e251);
int _e256; storage_struct.InterlockedXor(4+4, 1, _e256);
uint _e259; InterlockedXor(workgroup_atomic_scalar, 1u, _e259);
int _e263; InterlockedXor(workgroup_atomic_arr[1], 1, _e263);
uint _e267; InterlockedXor(workgroup_struct.atomic_scalar, 1u, _e267);
int _e272; InterlockedXor(workgroup_struct.atomic_arr[1], 1, _e272);
uint _e275; storage_atomic_scalar.InterlockedExchange(0, 1u, _e275);
int _e279; storage_atomic_arr.InterlockedExchange(4, 1, _e279);
uint _e283; storage_struct.InterlockedExchange(0, 1u, _e283);
int _e288; storage_struct.InterlockedExchange(4+4, 1, _e288);
uint _e291; InterlockedExchange(workgroup_atomic_scalar, 1u, _e291);
int _e295; InterlockedExchange(workgroup_atomic_arr[1], 1, _e295);
uint _e299; InterlockedExchange(workgroup_struct.atomic_scalar, 1u, _e299);
int _e304; InterlockedExchange(workgroup_struct.atomic_arr[1], 1, _e304);
return;
}
Loading

0 comments on commit 8f15a3a

Please sign in to comment.