Skip to content

Commit dc24de3

Browse files
committed
nonuniform: ByteAddressableBuffer always decorates NonUniform
1 parent fcd1b1e commit dc24de3

File tree

8 files changed

+14
-2
lines changed

8 files changed

+14
-2
lines changed

Diff for: crates/rustc_codegen_spirv/src/builder/byte_addressable_buffer.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::maybe_pqp_cg_ssa as rustc_codegen_ssa;
44
use super::Builder;
55
use crate::builder_spirv::{SpirvValue, SpirvValueExt, SpirvValueKind};
66
use crate::spirv_type::SpirvType;
7-
use rspirv::spirv::Word;
7+
use rspirv::spirv::{Decoration, Word};
88
use rustc_codegen_ssa::traits::BuilderMethods;
99
use rustc_errors::ErrorGuaranteed;
1010
use rustc_span::DUMMY_SP;
@@ -41,9 +41,14 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
4141
};
4242
let u32_ty = SpirvType::Integer(32, false).def(DUMMY_SP, self);
4343
let u32_ptr = self.type_ptr_to(u32_ty);
44+
let array = array.def(self);
45+
let actual_index = actual_index.def(self);
46+
self.emit().decorate(array, Decoration::NonUniform, []);
47+
self.emit()
48+
.decorate(actual_index, Decoration::NonUniform, []);
4449
let ptr = self
4550
.emit()
46-
.in_bounds_access_chain(u32_ptr, None, array.def(self), [actual_index.def(self)])
51+
.in_bounds_access_chain(u32_ptr, None, array, [actual_index])
4752
.unwrap()
4853
.with_type(u32_ptr);
4954
self.load(u32_ty, ptr, Align::ONE)

Diff for: tests/ui/byte_addressable_buffer/arr.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// build-pass
2+
// compile-flags: -Ctarget-feature=+ShaderNonUniform,+ext:SPV_EXT_descriptor_indexing
23

34
use spirv_std::spirv;
45
use spirv_std::{ByteAddressableBuffer, glam::Vec4};

Diff for: tests/ui/byte_addressable_buffer/big_struct.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// build-pass
2+
// compile-flags: -Ctarget-feature=+ShaderNonUniform,+ext:SPV_EXT_descriptor_indexing
23

34
use spirv_std::ByteAddressableBuffer;
45
use spirv_std::spirv;

Diff for: tests/ui/byte_addressable_buffer/complex.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// build-pass
2+
// compile-flags: -Ctarget-feature=+ShaderNonUniform,+ext:SPV_EXT_descriptor_indexing
23

34
use spirv_std::spirv;
45
use spirv_std::{ByteAddressableBuffer, glam::Vec2};

Diff for: tests/ui/byte_addressable_buffer/f32.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// build-pass
2+
// compile-flags: -Ctarget-feature=+ShaderNonUniform,+ext:SPV_EXT_descriptor_indexing
23

34
use spirv_std::ByteAddressableBuffer;
45
use spirv_std::spirv;

Diff for: tests/ui/byte_addressable_buffer/small_struct.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// build-pass
2+
// compile-flags: -Ctarget-feature=+ShaderNonUniform,+ext:SPV_EXT_descriptor_indexing
23

34
use spirv_std::ByteAddressableBuffer;
45
use spirv_std::spirv;

Diff for: tests/ui/byte_addressable_buffer/u32.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// build-pass
2+
// compile-flags: -Ctarget-feature=+ShaderNonUniform,+ext:SPV_EXT_descriptor_indexing
23

34
use spirv_std::ByteAddressableBuffer;
45
use spirv_std::spirv;

Diff for: tests/ui/byte_addressable_buffer/vec.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// build-pass
2+
// compile-flags: -Ctarget-feature=+ShaderNonUniform,+ext:SPV_EXT_descriptor_indexing
23

34
use spirv_std::spirv;
45
use spirv_std::{ByteAddressableBuffer, glam::Vec4};

0 commit comments

Comments
 (0)