summaryrefslogtreecommitdiffstats
path: root/tests/experiments/generic/return-generic-5.slang
blob: 34b90605f81eb446d6009453cde5cd7820633bde (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
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj

/* A test of a generic function returning a generic struct (of built in type). 

Note somewhat silly example because could just use float4(2.0f)

Works.
 */

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

vector<T, N> broadcast<T, let N : int>(T v)
{
	vector<T, N> vec;
    for (int i = 0; i < N; ++i)
    {
        vec[i] = v;
    }
 	
    return vec;
}

[numthreads(4, 1, 1)]
void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
{    
    int index = dispatchThreadID.x;
    let vec = broadcast<float, 4>(2.0f);
	outputBuffer[index] = dot(vec, vec);
}