skia2/resources/sksl/intrinsics
John Stiles d774558eb1 Implement compile-time optimization for mix().
mix() has many overloads:
$genType mix($genType x, $genType y, $genType a);
$genType mix($genType x, $genType y, float a);
$genHType mix($genHType x, $genHType y, $genHType a);
$genHType mix($genHType x, $genHType y, half a);
$genType mix($genType x, $genType y, $genBType a);
$genHType mix($genHType x, $genHType y, $genBType a);
$genIType mix($genIType x, $genIType y, $genBType a);
$genBType mix($genBType x, $genBType y, $genBType a);

The top half were simple to implement via `evaluate_3_way_intrinsic`.

The bottom half--`x, y, $genBType`--required adding basic support into
`evaluate_n_way_intrinsic_of_type` for mixed argument types, since `x`
and `y` could be of any numeric type, but `a` is always boolean.
Fortunately, this didn't require major changes.

Change-Id: I015471f053c90d5a5c3ac67cc230d0f90950ff60
Bug: skia:12034
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/414443
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-06-01 19:36:05 +00:00
..
AbsFloat.sksl Evaluate single-argument generic intrinsics at compile time. 2021-05-10 14:50:50 +00:00
AbsInt.sksl Evaluate single-argument generic intrinsics at compile time. 2021-05-10 14:50:50 +00:00
Acos.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Acosh.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
All.sksl Optimize not() intrinsic. 2021-05-11 14:08:39 +00:00
Any.sksl Optimize not() intrinsic. 2021-05-11 14:08:39 +00:00
Asin.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Asinh.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Atan.sksl Implement compile-time optimization for atan(). 2021-06-01 15:16:43 +00:00
Atanh.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
BitCount.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Ceil.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
ClampFloat.sksl Implement compile-time optimization for clamp(). 2021-05-25 16:25:42 +00:00
ClampInt.sksl Implement compile-time optimization for clamp(). 2021-05-25 16:25:42 +00:00
Cos.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Cosh.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Cross.sksl Implement compile-time optimization for cross(). 2021-06-01 15:51:53 +00:00
CrossNoInline.sksl Mangle function names in GLSL. 2021-03-22 17:18:26 +00:00
Degrees.sksl Optimize remaining simple 1-argument intrinsics. 2021-05-11 16:44:09 +00:00
Determinant.sksl
DFdx.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
DFdy.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Distance.sksl Implement compile-time optimization for distance(). 2021-05-26 14:11:58 +00:00
Dot.sksl Implement compile-time optimization for dot(). 2021-05-26 15:05:08 +00:00
Equal.sksl Allow compile-time intrinsic evaluation to read const variables. 2021-05-07 13:36:08 +00:00
Exp2.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Exp.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
FaceForward.sksl Implement compile-time optimization for faceforward(). 2021-05-26 16:28:48 +00:00
FindLSB.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
FindMSB.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
FloatBitsToInt.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
FloatBitsToUint.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Floor.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Fma.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Fract.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Frexp.sksl Reland "Add coords parameter to all .sksl test files used as runtime effects" 2021-04-27 20:47:31 +00:00
Fwidth.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
GreaterThan.sksl Allow compile-time intrinsic evaluation to read const variables. 2021-05-07 13:36:08 +00:00
GreaterThanEqual.sksl Allow compile-time intrinsic evaluation to read const variables. 2021-05-07 13:36:08 +00:00
IntBitsToFloat.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Inverse.sksl Implement compile-time optimization for inverse(). 2021-05-27 13:57:00 +00:00
Inversesqrt.sksl Optimize remaining simple 1-argument intrinsics. 2021-05-11 16:44:09 +00:00
IsInf.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
IsNan.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Ldexp.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Length.sksl Implement compile-time optimization for length(). 2021-05-26 00:58:53 +00:00
LessThan.sksl Allow compile-time intrinsic evaluation to read const variables. 2021-05-07 13:36:08 +00:00
LessThanEqual.sksl Allow compile-time intrinsic evaluation to read const variables. 2021-05-07 13:36:08 +00:00
Log2.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Log.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
MatrixCompMult.sksl Implement compile-time optimization for matrixCompMult(). 2021-06-01 19:35:23 +00:00
MaxFloat.sksl Implement compile-time optimization for min() and max(). 2021-05-25 14:52:11 +00:00
MaxInt.sksl Implement compile-time optimization for min() and max(). 2021-05-25 14:52:11 +00:00
MinFloat.sksl Implement compile-time optimization for min() and max(). 2021-05-25 14:52:11 +00:00
MinInt.sksl Implement compile-time optimization for min() and max(). 2021-05-25 14:52:11 +00:00
MixBool.sksl Implement compile-time optimization for mix(). 2021-06-01 19:36:05 +00:00
MixFloat.sksl Implement compile-time optimization for mix(). 2021-06-01 19:36:05 +00:00
Mod.sksl Implement compile-time optimization for mod(). 2021-05-25 22:07:53 +00:00
Modf.sksl Reland "Add coords parameter to all .sksl test files used as runtime effects" 2021-04-27 20:47:31 +00:00
Normalize.sksl Implement compile-time optimization for normalize(). 2021-05-26 15:06:08 +00:00
Not.sksl Optimize not() intrinsic. 2021-05-11 14:08:39 +00:00
NotEqual.sksl Allow compile-time intrinsic evaluation to read const variables. 2021-05-07 13:36:08 +00:00
OuterProduct.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Pack.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Pow.sksl Implement compile-time optimization for pow(). 2021-05-26 19:54:09 +00:00
Radians.sksl Optimize remaining simple 1-argument intrinsics. 2021-05-11 16:44:09 +00:00
Reflect.sksl Implement compile-time optimization for reflect(). 2021-05-26 19:49:29 +00:00
Refract.sksl Implement compile-time optimization for refract(). 2021-05-26 19:55:39 +00:00
Round.sksl Optimize remaining simple 1-argument intrinsics. 2021-05-11 16:44:09 +00:00
RoundEven.sksl Optimize remaining simple 1-argument intrinsics. 2021-05-11 16:44:09 +00:00
Saturate.sksl Optimize remaining simple 1-argument intrinsics. 2021-05-11 16:44:09 +00:00
SignFloat.sksl Evaluate single-argument generic intrinsics at compile time. 2021-05-10 14:50:50 +00:00
SignInt.sksl Evaluate single-argument generic intrinsics at compile time. 2021-05-10 14:50:50 +00:00
Sin.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Sinh.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Smoothstep.sksl Implement compile-time optimization for smoothstep(). 2021-05-25 20:32:46 +00:00
Sqrt.sksl Implement compile-time optimization for sqrt(constant). 2021-05-25 04:43:10 +00:00
Step.sksl Implement compile-time optimization for step(). 2021-05-25 16:59:22 +00:00
Tan.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Tanh.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
Transpose.sksl
Trunc.sksl Evaluate various single-argument float intrinsics at compile time. 2021-05-07 14:37:18 +00:00
UintBitsToFloat.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
Unpack.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00