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