skia2/resources/sksl/shared/DeadStripFunctions.sksl
John Stiles f3a28db703 Eliminate control-flow analysis.
We no longer derive a performance benefit from this pass in practice,
and it is a very expensive compilation step. It is also prone to fuzz-
related errors.

Doc: http://go/optimization-in-sksl

Change-Id: Ief08ffac659a8fe7fe92c92b9a5da14c9f713bc2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/381261
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-03-11 13:24:54 +00:00

35 lines
739 B
Plaintext

/*#pragma settings NoInline*/
uniform half4 colorGreen, colorRed;
half4 dead_fn(half4 a, half4 b) {
return a * b;
}
half4 live_fn(half4 a, half4 b) {
return a + b;
}
half4 main() {
const bool TRUE = true, FALSE = false;
half4 a, b;
@if (FALSE) {
// Dead stripping a user function.
half4 unused = dead_fn(half4(0.5), half4(2));
} else {
// A live user function.
a = live_fn(half4(3), half4(-5));
}
@if (TRUE) {
// A live built-in function.
b = unpremul(half4(1));
} else {
// Dead stripping a built-in function.
float4 unused = unpremul_float(float4(-1));
}
return (a != half4(0) && b != half4(0)) ? colorGreen : colorRed;
}