yum-mirror/slang

Making it easier to work with shaders

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

Yong HeAdd `IOpaqueDescriptor::descriptorAccess`. (#6967)a8d7bb9f7

master
1.2 KiB34 linesraw
1//TEST:INTERPRET(filecheck=CHECK):
2
3#define CHECK(x) if (!(x)) return false
4
5DescriptorAccess getAccess<T : IOpaqueDescriptor>()
6{
7    return T.descriptorAccess;
8}
9
10bool test()
11{
12    CHECK(getAccess<Texture2D>() == DescriptorAccess.Read);
13    CHECK(getAccess<SamplerState>() == DescriptorAccess.Unknown);
14    CHECK(getAccess<RasterizerOrderedStructuredBuffer<int>>() == DescriptorAccess.RasterizerOrdered);
15    CHECK(getAccess<RWStructuredBuffer<int>>() == DescriptorAccess.ReadWrite);
16    CHECK(getAccess<AppendStructuredBuffer<int>>() == DescriptorAccess.ReadWrite);
17    CHECK(getAccess<ConsumeStructuredBuffer<int>>() == DescriptorAccess.ReadWrite);
18    CHECK(getAccess<StructuredBuffer<int>>() == DescriptorAccess.Read);
19    CHECK(getAccess<ConstantBuffer<int>>() == DescriptorAccess.Read);
20    CHECK(getAccess<RWByteAddressBuffer>() == DescriptorAccess.ReadWrite);
21    CHECK(getAccess<ByteAddressBuffer>() == DescriptorAccess.Read);
22    CHECK(getAccess<RaytracingAccelerationStructure>() == DescriptorAccess.Read);
23    CHECK(getAccess<WTexture2DArray>() == DescriptorAccess.Write);
24    return true;
25}
26
27void main()
28{
29    // CHECK: pass
30    if (test())
31        printf("pass\n");
32    else
33        printf("fail\n");
34}