yum-mirror/slang

Making it easier to work with shaders

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

ArielG-NVError if super-type capabilities are a super-set of sub-type (#7452)07f21ee31

master
1.6 KiB56 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -target hlsl -entry computeMain -stage compute
2
3// Test for requirment/implementation conformance given mismatch
4
5public interface IAtomicAddable_Error1
6{
7    [require(sm_5_0, glsl)]
8    [require(sm_5_0, hlsl)]
9    public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value);
10}
11public struct AtomicAddable_Error1 : IAtomicAddable_Error1
12{
13    [require(sm_5_0, glsl)]
14    // CHECK: ([[# @LINE+1]]): error 36118: {{.*}}hlsl
15    public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value) { }
16}
17
18// ([[# @LINE-9]]): note: see declaration of 'atomicAdd'
19
20public interface IAtomicAddable_Error2
21{
22    [require(sm_5_0, glsl)]
23    public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value);
24}
25public struct AtomicAddable_Error2 : IAtomicAddable_Error2
26{
27    [require(sm_5_0, glsl)]
28    [require(sm_5_0, hlsl)]
29    // CHECK: ([[# @LINE+1]]): error 36108: {{.*}}hlsl
30    public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value) { }
31}
32
33// ([[# @LINE-9]]): note: see declaration of 'atomicAdd'
34
35// Test that we do not error (should be implicitly inferring capabilities)
36// CHECK-NOT: error
37
38public interface IAtomicAddable3
39{
40    public void atomicAdd(RWByteAddressBuffer buf, uint addr, int value);
41}
42
43public struct AtomicAddable_Error4 : IAtomicAddable3
44{
45    public void atomicAdd(RWByteAddressBuffer buf, uint addr, int value) { buf.InterlockedAdd(addr, value); }
46}
47
48public struct AtomicAddable_Error5 : IAtomicAddable3
49{
50    public void atomicAdd(RWByteAddressBuffer buf, uint addr, int value) { buf.InterlockedAddI64(addr, value); }
51}
52
53[numthreads(1,1,1)]
54void computeMain()
55{
56}