2021-09-23 20:26:02 +00:00
|
|
|
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
|
|
|
|
2017-11-22 11:08:06 +00:00
|
|
|
#include <metal_stdlib>
|
|
|
|
#include <simd/simd.h>
|
|
|
|
|
|
|
|
using namespace metal;
|
|
|
|
|
|
|
|
struct SSBO0
|
|
|
|
{
|
|
|
|
float scalar;
|
|
|
|
float2 vec2_val;
|
|
|
|
float3 vec3_val;
|
|
|
|
float4 vec4_val;
|
|
|
|
};
|
|
|
|
|
2021-09-23 20:26:02 +00:00
|
|
|
[[clang::optnone]] float spvQuantizeToF16(float val)
|
|
|
|
{
|
|
|
|
return float(half(val));
|
|
|
|
}
|
|
|
|
|
|
|
|
[[clang::optnone]] float2 spvQuantize2ToF16(float2 val)
|
|
|
|
{
|
|
|
|
return float2(half2(val));
|
|
|
|
}
|
|
|
|
|
|
|
|
[[clang::optnone]] float3 spvQuantize3ToF16(float3 val)
|
|
|
|
{
|
|
|
|
return float3(half3(val));
|
|
|
|
}
|
|
|
|
|
|
|
|
[[clang::optnone]] float4 spvQuantize4ToF16(float4 val)
|
|
|
|
{
|
|
|
|
return float4(half4(val));
|
|
|
|
}
|
|
|
|
|
2017-11-22 11:08:06 +00:00
|
|
|
kernel void main0(device SSBO0& _4 [[buffer(0)]])
|
|
|
|
{
|
2021-09-23 20:26:02 +00:00
|
|
|
_4.scalar = spvQuantizeToF16(_4.scalar);
|
|
|
|
_4.vec2_val = spvQuantize2ToF16(_4.vec2_val);
|
|
|
|
_4.vec3_val = spvQuantize3ToF16(_4.vec3_val);
|
|
|
|
_4.vec4_val = spvQuantize4ToF16(_4.vec4_val);
|
2017-11-22 11:08:06 +00:00
|
|
|
}
|
|
|
|
|