STRINGIFY(

// defines built-in interfaces supported by SkiaSL geometry shaders

layout(builtin=10002) in sk_PerVertex {
  layout(builtin=0) float4 sk_Position;
  layout(builtin=1) float sk_PointSize;
  layout(builtin=3) float sk_ClipDistance[1];
} sk_in[];

out sk_PerVertex {
    layout(builtin=0) float4 sk_Position;
    layout(builtin=1) float sk_PointSize;
    layout(builtin=3) float sk_ClipDistance[1];
};

layout(builtin=8) int sk_InvocationID;

sk_has_side_effects void EmitStreamVertex(int stream);
sk_has_side_effects void EndStreamPrimitive(int stream);
sk_has_side_effects void EmitVertex();
sk_has_side_effects void EndPrimitive();

)