mirror of
https://github.com/EmbarkStudios/rust-gpu.git
synced 2024-11-22 06:45:13 +00:00
Fix up constants accidentally being emitted inside functions
This commit is contained in:
parent
336f040299
commit
1921ecc4a1
@ -145,44 +145,31 @@ impl BuilderSpirv {
|
||||
}
|
||||
|
||||
pub fn def_constant(&self, val: SpirvConst) -> SpirvValue {
|
||||
let mut builder = self.builder(BuilderCursor::default());
|
||||
match self.constants.borrow_mut().entry(val) {
|
||||
Entry::Occupied(entry) => *entry.get(),
|
||||
Entry::Vacant(entry) => {
|
||||
let id = match *entry.key() {
|
||||
SpirvConst::U32(ty, v) => {
|
||||
self.builder.borrow_mut().constant_u32(ty, v).with_type(ty)
|
||||
SpirvConst::U32(ty, v) => builder.constant_u32(ty, v).with_type(ty),
|
||||
SpirvConst::U64(ty, v) => builder.constant_u64(ty, v).with_type(ty),
|
||||
SpirvConst::F32(ty, v) => {
|
||||
builder.constant_f32(ty, f32::from_bits(v)).with_type(ty)
|
||||
}
|
||||
SpirvConst::U64(ty, v) => {
|
||||
self.builder.borrow_mut().constant_u64(ty, v).with_type(ty)
|
||||
SpirvConst::F64(ty, v) => {
|
||||
builder.constant_f64(ty, f64::from_bits(v)).with_type(ty)
|
||||
}
|
||||
SpirvConst::F32(ty, v) => self
|
||||
.builder
|
||||
.borrow_mut()
|
||||
.constant_f32(ty, f32::from_bits(v))
|
||||
.with_type(ty),
|
||||
SpirvConst::F64(ty, v) => self
|
||||
.builder
|
||||
.borrow_mut()
|
||||
.constant_f64(ty, f64::from_bits(v))
|
||||
.with_type(ty),
|
||||
SpirvConst::Bool(ty, v) => {
|
||||
if v {
|
||||
self.builder.borrow_mut().constant_true(ty).with_type(ty)
|
||||
builder.constant_true(ty).with_type(ty)
|
||||
} else {
|
||||
self.builder.borrow_mut().constant_false(ty).with_type(ty)
|
||||
builder.constant_false(ty).with_type(ty)
|
||||
}
|
||||
}
|
||||
SpirvConst::Composite(ty, ref v) => self
|
||||
.builder
|
||||
.borrow_mut()
|
||||
SpirvConst::Composite(ty, ref v) => builder
|
||||
.constant_composite(ty, v.iter().copied())
|
||||
.with_type(ty),
|
||||
SpirvConst::Null(ty) => {
|
||||
self.builder.borrow_mut().constant_null(ty).with_type(ty)
|
||||
}
|
||||
SpirvConst::Undef(ty) => {
|
||||
self.builder.borrow_mut().undef(ty, None).with_type(ty)
|
||||
}
|
||||
SpirvConst::Null(ty) => builder.constant_null(ty).with_type(ty),
|
||||
SpirvConst::Undef(ty) => builder.undef(ty, None).with_type(ty),
|
||||
};
|
||||
self.constants_inverse
|
||||
.borrow_mut()
|
||||
|
Loading…
Reference in New Issue
Block a user