summaryrefslogtreecommitdiffstats
path: root/tests/experiments/generic/constraint.slang
blob: 7143d3fd400572956b0e30a350f575d379727144 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj

/* Test is to try and see what effects type constraints have. 

This is a bit of a silly example.

Fails with 

.slang(23): note 99999: an internal error threw an exception while working on code near this location
(0): error 99999: Slang compilation aborted due to an exception of class Slang::InternalError: unimplemented: value lowering

*/

//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;

enum XXX {};

__generic<T : XXX>
Enum getEnum(T i)
{
    return Enum::A;
}


[numthreads(4, 1, 1)]
void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
{    
    int index = dispatchThreadID.x;
    
    XXX x;
    let e = getEnum(x);

    outputBuffer[index] = int(e);
}