yum-mirror/slang

Making it easier to work with shaders

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

Julius IkkalaFix pointers and C-like layout in varying parameters (#8425)ec42c4a20

master
997 B46 linesraw
1//TEST:SIMPLE(filecheck=SPIRV): -stage fragment -entry fragmentMain -target spirv -fvk-use-c-layout
2struct A {
3    int64_t i;
4    float f;
5};
6
7struct B {
8    A a;
9    float b;
10};
11
12struct FIn
13{
14    Ptr<B> i0;
15    Ptr<B> i1;
16    float c;
17    float d;
18}
19
20struct FOut
21{
22	float4 outputColor : SV_Target0;
23}
24
25StructuredBuffer<Ptr<B>, Std430DataLayout> testBuffer;
26
27[shader("fragment")]
28FOut fragmentMain(FIn input)
29{
30
31	FOut output;
32	output.outputColor = float4(input.i0.a.f, input.i0.b, input.i1.a.f, input.i1.b)+input.c-input.d;
33    output.outputColor += testBuffer[0].b;
34	return output;
35}
36
37// SPIRV: OpDecorate %input_i0 Location 0
38// SPIRV: OpDecorate %input_i0 Flat
39// SPIRV: OpDecorate %input_i1 Location 1
40// SPIRV: OpDecorate %input_i1 Flat
41// SPIRV: OpDecorate %input_c Location 2
42// SPIRV: OpDecorate %input_d Location 3
43// SPIRV: OpMemberDecorate %A_c 0 Offset 0
44// SPIRV: OpMemberDecorate %A_c 1 Offset 8
45// SPIRV: OpMemberDecorate %B_c 0 Offset 0
46// SPIRV: OpMemberDecorate %B_c 1 Offset 16