skia2/tests/sksl/shared/ResizeMatrix.metal
John Stiles 50b1b2b90d Disable control-flow analysis in SkSL. (Performance experiment)
This CL will be used to test for potential performance regressions (or
improvements?) that we might incur by disabling this optimization pass.

It will be reverted in ~1 day.

Change-Id: I775cdb0c95df81fa25ebbd66e4ff01f64c660f68
Bug: skia:11319
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378456
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-03-03 22:08:56 +00:00

49 lines
1.7 KiB
Metal

#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Uniforms {
float4 colorGreen;
float4 colorRed;
};
struct Inputs {
};
struct Outputs {
float4 sk_FragColor [[color(0)]];
};
float2x2 float2x2_from_float3x3(float3x3 x0) {
return float2x2(float2(x0[0].xy), float2(x0[1].xy));
}
float2x2 float2x2_from_float4x4(float4x4 x0) {
return float2x2(float2(x0[0].xy), float2(x0[1].xy));
}
float3x3 float3x3_from_float4x4(float4x4 x0) {
return float3x3(float3(x0[0].xyz), float3(x0[1].xyz), float3(x0[2].xyz));
}
float3x3 float3x3_from_float2x2(float2x2 x0) {
return float3x3(float3(x0[0].xy, 0.0), float3(x0[1].xy, 0.0), float3(0.0, 0.0, 1.0));
}
float4x4 float4x4_from_float3x3(float3x3 x0) {
return float4x4(float4(x0[0].xyz, 0.0), float4(x0[1].xyz, 0.0), float4(x0[2].xyz, 0.0), float4(0.0, 0.0, 0.0, 1.0));
}
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
Outputs _out;
(void)_out;
float result = 0.0;
float2x2 a = float2x2_from_float3x3(float3x3(1.0));
result += a[0].x;
float2x2 b = float2x2_from_float4x4(float4x4(1.0));
result += b[0].x;
float3x3 c = float3x3_from_float4x4(float4x4(1.0));
result += c[0].x;
float3x3 d = float3x3_from_float2x2(float2x2(1.0));
result += d[0].x;
float4x4 e = float4x4_from_float3x3(float3x3_from_float2x2(float2x2(1.0)));
result += e[0].x;
float2x2 f = float2x2_from_float3x3(float3x3_from_float4x4(float4x4(1.0)));
result += f[0].x;
_out.sk_FragColor = result == 6.0 ? _uniforms.colorGreen : _uniforms.colorRed;
return _out;
}