summaryrefslogtreecommitdiff
path: root/tests/bugs/rwstructuredbuffer-existential-in-struct.slang
blob: c763dd3c10f878a656b92103bc4f99e12a52aa43 (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
//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj

[anyValueSize(8)]
interface IMaterial
{
    float eval();
}

struct MaterialImpl : IMaterial
{
    float eval() { return 0.0f; }
};

struct Parameters
{
    uint ordinary;

//TEST_INPUT: entryPointExistentialType MaterialImpl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0], stride=4):name=params.materials
    RWStructuredBuffer<IMaterial> materials;

//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=params.result
    RWStructuredBuffer<float> result;
};

[numthreads(4, 1, 1)]
void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID, uniform Parameters params, uniform int id)
{
    uint tid = dispatchThreadID.x;
    float rs = params.materials[0].eval();
    params.result[tid] = rs;
}