Skip to content

Commit 7a72a2f

Browse files
Firestar99eddyb
authored andcommitted
byte_addr_buffer: compiletests with mixed scalar and scalar pairs, store is failing
1 parent 56cc132 commit 7a72a2f

File tree

4 files changed

+138
-0
lines changed

4 files changed

+138
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// build-pass
2+
3+
use spirv_std::ByteAddressableBuffer;
4+
use spirv_std::spirv;
5+
6+
#[derive(Copy, Clone, Debug)]
7+
pub struct MyScalar(i32);
8+
9+
#[spirv(fragment)]
10+
pub fn load_scalar(
11+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &[u32],
12+
scalar: &mut MyScalar,
13+
) {
14+
unsafe {
15+
let mut buf = ByteAddressableBuffer::from_slice(buf);
16+
*scalar = buf.load(5);
17+
}
18+
}
19+
20+
#[derive(Copy, Clone, Debug)]
21+
pub struct MyScalarPair(i32, i32);
22+
23+
#[spirv(fragment)]
24+
pub fn load_scalar_pair(
25+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &[u32],
26+
scalar_pair: &mut MyScalarPair,
27+
) {
28+
unsafe {
29+
let mut buf = ByteAddressableBuffer::from_slice(buf);
30+
*scalar_pair = buf.load(5);
31+
}
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// build-pass
2+
3+
use spirv_std::ByteAddressableBuffer;
4+
use spirv_std::spirv;
5+
6+
#[derive(Copy, Clone, Debug)]
7+
pub struct MyScalar(i32);
8+
9+
#[spirv(fragment)]
10+
pub fn load_scalar(
11+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &mut [u32],
12+
scalar: &mut MyScalar,
13+
) {
14+
unsafe {
15+
let mut buf = ByteAddressableBuffer::from_mut_slice(buf);
16+
*scalar = buf.load(5);
17+
}
18+
}
19+
20+
#[derive(Copy, Clone, Debug)]
21+
pub struct MyScalarPair(i32, i32);
22+
23+
#[spirv(fragment)]
24+
pub fn load_scalar_pair(
25+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &mut [u32],
26+
scalar_pair: &mut MyScalarPair,
27+
) {
28+
unsafe {
29+
let mut buf = ByteAddressableBuffer::from_mut_slice(buf);
30+
*scalar_pair = buf.load(5);
31+
}
32+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// build-pass
2+
3+
use spirv_std::ByteAddressableBuffer;
4+
use spirv_std::spirv;
5+
6+
#[derive(Copy, Clone, Debug)]
7+
pub struct MyScalar(i32);
8+
9+
#[spirv(fragment)]
10+
pub fn store_scalar(
11+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &mut [u32],
12+
#[spirv(flat)] scalar: MyScalar,
13+
) {
14+
unsafe {
15+
let mut buf = ByteAddressableBuffer::from_mut_slice(buf);
16+
buf.store(5, scalar);
17+
}
18+
}
19+
20+
#[derive(Copy, Clone, Debug)]
21+
pub struct MyScalarPair(i32, i32);
22+
23+
#[spirv(fragment)]
24+
pub fn store_scalar_pair(
25+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &mut [u32],
26+
#[spirv(flat)] pair0: i32,
27+
#[spirv(flat)] pair1: i32,
28+
) {
29+
unsafe {
30+
let mut buf = ByteAddressableBuffer::from_mut_slice(buf);
31+
buf.store(5, MyScalarPair(pair0, pair1));
32+
}
33+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// build-pass
2+
3+
use spirv_std::ByteAddressableBuffer;
4+
use spirv_std::spirv;
5+
6+
#[derive(Copy, Clone, Debug)]
7+
pub struct MyScalarPair(i32, i32);
8+
9+
#[spirv(fragment)]
10+
pub fn load(
11+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &[u32],
12+
scalar_pair: &mut MyScalarPair,
13+
) {
14+
unsafe {
15+
let buf = ByteAddressableBuffer::from_slice(buf);
16+
*scalar_pair = buf.load(5);
17+
}
18+
}
19+
20+
#[spirv(fragment)]
21+
pub fn load_mut(
22+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &mut [u32],
23+
scalar_pair: &mut MyScalarPair,
24+
) {
25+
unsafe {
26+
let buf = ByteAddressableBuffer::from_mut_slice(buf);
27+
*scalar_pair = buf.load(5);
28+
}
29+
}
30+
31+
#[spirv(fragment)]
32+
pub fn store(
33+
#[spirv(descriptor_set = 0, binding = 0, storage_buffer)] buf: &mut [u32],
34+
#[spirv(flat)] pair0: i32,
35+
#[spirv(flat)] pair1: i32,
36+
) {
37+
unsafe {
38+
let mut buf = ByteAddressableBuffer::from_mut_slice(buf);
39+
buf.store(5, MyScalarPair(pair0, pair1));
40+
}
41+
}

0 commit comments

Comments
 (0)