skia2/resources/sksl/shared/SwizzleOpt.sksl
John Stiles c2c1b0c460 Migrate some SkSL swizzle tests to dm.
Change-Id: I2bd6bf9c368359a2b21861c1b6f621040d335111
Bug: skia:11009
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/367056
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-02-08 16:16:28 +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() {
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;
}