yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

ArielG-NVRefactor memory qualifier decorators to be a bit-flag set, resolves #3841 (#3881)e0de98e9a

master
1.4 KiB60 linesraw
1//TEST:SIMPLE(filecheck=CHECK_GLSL): -stage compute -entry computeMain -allow-glsl -target glsl
2//TEST:SIMPLE(filecheck=CHECK_SPV): -stage compute -entry computeMain -allow-glsl -target spirv -emit-spirv-directly
3
4// CHECK_SPV: OpEntryPoint
5
6//CHECK_GLSL: volatile
7//CHECK_SPV: OpDecorate %{{.*}} Volatile
8volatile buffer MyBlockName1
9{
10    uint data1;
11} inputBuffer1;
12
13//CHECK_GLSL: restrict
14//CHECK_SPV: OpDecorate %{{.*}} Restrict
15restrict buffer MyBlockName2
16{
17    uint data1;
18} inputBuffer2;
19
20//CHECK_GLSL: {{(writeonly|volatile)}} {{(writeonly|volatile)}}
21//CHECK_SPV: OpDecorate %{{.*}} {{(NonReadable|Volatile)}}
22//CHECK_SPV: OpDecorate %{{.*}} {{(NonReadable|Volatile)}}
23writeonly volatile buffer MyBlockName3
24{
25    uint data1;
26} inputBuffer3;
27
28//CHECK_GLSL: writeonly
29//CHECK_SPV: OpDecorate %{{.*}} NonReadable
30writeonly buffer MyBlockName4
31{
32    uint data1;
33} inputBuffer4;
34
35//CHECK_GLSL: readonly
36//CHECK_SPV: OpDecorate %{{.*}} NonWritable
37readonly buffer MyBlockName5
38{
39    uint data1;
40} inputBuffer5;
41
42//CHECK_GLSL: coherent
43//CHECK_SPV: OpDecorate %{{.*}} Coherent
44coherent buffer MyBlockName6
45{
46    uint data1;
47} inputBuffer6;
48
49// CHECK_GLSL: main
50layout(local_size_x = 1) in;
51void computeMain()
52{
53    inputBuffer1.data1 = 1;
54    inputBuffer2.data1 = 1;
55    inputBuffer3.data1 = 1;
56    inputBuffer4.data1 = 1;
57    int v = inputBuffer5.data1;
58    // ensure code is not optimized out
59    inputBuffer6.data1 = v;
60}