skia2/tests/sksl/shared/SampleLocations.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

35 lines
1.3 KiB
Metal

#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Inputs {
};
struct Outputs {
float4 sk_Position [[position]];
float2 vcoord_Stage0 [[user(locn1)]];
float sk_PointSize [[point_size]];
};
vertex Outputs vertexMain(Inputs _in [[stage_in]], uint sk_VertexID [[vertex_id]], uint sk_InstanceID [[instance_id]]) {
Outputs _out;
(void)_out;
int x = sk_InstanceID % 200;
int y = sk_InstanceID / 200;
int ileft = (sk_InstanceID * 929) % 17;
int iright = (ileft + 1) + (sk_InstanceID * 1637) % (17 - ileft);
int itop = (sk_InstanceID * 313) % 17;
int ibot = (itop + 1) + (sk_InstanceID * 1901) % (17 - itop);
float outset = 0.03125;
outset = 0 == (x + y) % 2 ? -outset : outset;
float l = float(ileft) / 16.0 - outset;
float r = float(iright) / 16.0 + outset;
float t = float(itop) / 16.0 - outset;
float b = float(ibot) / 16.0 + outset;
float2 vertexpos;
vertexpos.x = float(x) + (0 == sk_VertexID % 2 ? l : r);
vertexpos.y = float(y) + (0 == sk_VertexID / 2 ? t : b);
_out.vcoord_Stage0.x = float(0 == sk_VertexID % 2 ? -1 : 1);
_out.vcoord_Stage0.y = float(0 == sk_VertexID / 2 ? -1 : 1);
_out.sk_Position = float4(vertexpos.x, vertexpos.y, 0.0, 1.0);
return (_out.sk_Position.y = -_out.sk_Position.y, _out);
}