skia2/resources/sksl/shared/SwizzleOpt.sksl
Brian Osman 169c8903be Reland "Add coords parameter to all .sksl test files used as runtime effects"
This is a reland of 22dcb5fd7e

Original change's description:
> Add coords parameter to all .sksl test files used as runtime effects
>
> Convert to use the newer MakeForShader factory, which requires this.
>
> Change-Id: Ifaf6054054027c78f3f3fe15596e435e0f79b877
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/399336
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: John Stiles <johnstiles@google.com>

Bug: skia:11919
Change-Id: I5f745c54b2bc3712f2281db6e067345903e81931
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/401836
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-04-27 20:47:31 +00:00

49 lines
1.2 KiB
Plaintext

uniform half4 colorRed, colorGreen, testInputs;
half fn(half4 v) {
// Add an un-inlinable construct to ensure that fn() remains a standalone function.
for (int x=1; x<=2; ++x) {
return v.x;
}
}
half4 main(float2 coords) {
half4 v = testInputs;
v = v.rgba;
v = v.rgb0.abgr;
v = v.rgba.00ra;
v = v.rgba.rrra.00ra.11ab;
v = v.abga.gb11;
v = v.abgr.abgr;
v = half4(v.rrrr.bb, 1, 1);
v = half4(v.ba.grgr);
// The swizzle will not be optimized away to avoid eliminating fn().
v = half3(fn(v), 123, 456).yyzz;
v = half3(fn(v), half2(123, 456)).yyzz;
// The swizzle will be optimized away because fn() can be reordered.
v = half3(fn(v), 123, 456).yzzx;
v = half3(fn(v), half2(123, 456)).yzzx;
// The swizzle will not be optimized away to avoid duplicating fn().
v = half3(fn(v), 123, 456).yxxz;
v = half3(fn(v), half2(123, 456)).yxxz;
// Swizzled constants.
v = half4(1, 2, 3, 4).xxyz;
// Swizzled uniforms mixed with constants.
v = half4(1, colorRed.rgb).yzwx;
v = half4(1, colorRed.rgb).yxzw;
// Left-side swizzles.
v.rgba = v;
v.abgr = v;
v.rgba.ra = v.gb;
v.abgr.gba = v.aa1;
return v == half4(1) ? colorGreen : colorRed;
}