xref: /aosp_15_r20/external/skia/tests/sksl/shared/StorageBuffer.hlsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1struct SomeData
2{
3    float4 a;
4    float2 b;
5};
6
7RWByteAddressBuffer _3 : register(u0, space0);
8RWByteAddressBuffer _12 : register(u1, space0);
9
10static float4 sk_FragColor;
11static int bufferIndex;
12
13struct SPIRV_Cross_Input
14{
15    nointerpolation int bufferIndex : TEXCOORD2;
16};
17
18struct SPIRV_Cross_Output
19{
20    float4 sk_FragColor : SV_Target0;
21};
22
23float4 main(float2 _30)
24{
25    SomeData _39 = { 0.0f.xxxx, 0.0f.xx };
26    _39.a = asfloat(_3.Load4(_3.Load(0) * 32 + 16));
27    _39.b = asfloat(_3.Load2(_3.Load(0) * 32 + 32));
28    _12.Store4(_3.Load(0) * 32 + 0, asuint(_39.a));
29    _12.Store2(_3.Load(0) * 32 + 16, asuint(_39.b));
30    return asfloat(_3.Load4(bufferIndex * 32 + 16)) * asfloat(_3.Load2(bufferIndex * 32 + 32)).x;
31}
32
33void frag_main()
34{
35    float2 _26 = 0.0f.xx;
36    float4 _28 = main(_26);
37    sk_FragColor = _28;
38}
39
40SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
41{
42    bufferIndex = stage_input.bufferIndex;
43    frag_main();
44    SPIRV_Cross_Output stage_output;
45    stage_output.sk_FragColor = sk_FragColor;
46    return stage_output;
47}
48