xref: /aosp_15_r20/external/skia/tests/sksl/shared/SampleMask.metal (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1#include <metal_stdlib>
2#include <simd/simd.h>
3#ifdef __clang__
4#pragma clang diagnostic ignored "-Wall"
5#endif
6using namespace metal;
7struct Inputs {
8};
9struct Outputs {
10    half4 sk_FragColor [[color(0)]];
11    uint sk_SampleMask [[sample_mask]];
12};
13half4 samplemaskin_as_color_h4(uint sk_SampleMaskIn) {
14    return half4(half(sk_SampleMaskIn));
15}
16void clear_samplemask_v(thread Outputs& _out) {
17    _out.sk_SampleMask = 0u;
18}
19void reset_samplemask_v(thread Outputs& _out, uint sk_SampleMaskIn) {
20    _out.sk_SampleMask = sk_SampleMaskIn;
21}
22fragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]], uint sk_SampleMaskIn [[sample_mask]]) {
23    Outputs _out;
24    (void)_out;
25    clear_samplemask_v(_out);
26    reset_samplemask_v(_out, sk_SampleMaskIn);
27    _out.sk_SampleMask = 4294967295u;
28    _out.sk_FragColor = samplemaskin_as_color_h4(sk_SampleMaskIn) * 0.00390625h;
29    return _out;
30}
31