skia2/resources/sksl/intrinsics
John Stiles eb68973c2f Disallow matrix ctors which overflow a column.
The GLSL spec allows matrix constructors containing vectors that would
split between multiple columns of the matrix. However, in practice, this
does not actually work well on a lot of GPUs!

- "cast not allowed", "internal error":
	Tegra 3
	Quadro P400
	GTX 660
	GTX 960
- Compiles, but generates wrong result:
	RadeonR9M470X
	RadeonHD7770

Since this isn't a pattern we expect to see in user code, we now report
it as an error at compile time. mat2(vec4) is treated as an exceptional
case and still allowed.

Change-Id: Id6925984a2d1ec948aec4defcc790a197a96cf86
Bug: skia:12443
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/449518
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-09-16 22:14:49 +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 Add ES3 Angle and Trigonometry methods to sksl_public. 2021-08-13 20:57:44 +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 Add ES3 Angle and Trigonometry methods to sksl_public. 2021-08-13 20:57:44 +00:00
Atan.sksl Implement compile-time optimization for atan(). 2021-06-01 15:16:43 +00:00
Atanh.sksl Add ES3 Angle and Trigonometry methods to sksl_public. 2021-08-13 20:57:44 +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 Implement determinant() in SkSL ES3 public API. 2021-08-19 15:27:10 +00:00
DFdx.sksl Avoid mix-up between MAIN_COORDS and FRAGCOORD. 2021-08-18 20:11:19 +00:00
DFdy.sksl Avoid mix-up between MAIN_COORDS and FRAGCOORD. 2021-08-18 20:11:19 +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 Add floatBitsToInt family of ES3 intrinsics to SkSL public ES3. 2021-08-20 14:58:44 +00:00
FloatBitsToUint.sksl Add floatBitsToInt family of ES3 intrinsics to SkSL public ES3. 2021-08-20 14:58:44 +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 Add fwidth intrinsic to public SkSL in ES3. 2021-09-16 01:56:32 +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 Add floatBitsToInt family of ES3 intrinsics to SkSL public ES3. 2021-08-20 14:58:44 +00:00
Inverse.sksl Fix crash when inverse() is passed a constant variable. 2021-08-17 21:11:24 +00:00
Inversesqrt.sksl Optimize remaining simple 1-argument intrinsics. 2021-05-11 16:44:09 +00:00
IsInf.sksl Reland "Add ES3 intrinsics isinf/isnan to public SkSL ES3." 2021-08-25 19:01:22 +00:00
IsNan.sksl Reland "Add ES3 intrinsics isinf/isnan to public SkSL ES3." 2021-08-25 19:01:22 +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
MatrixCompMultES2.sksl Add non-square MatrixCompMult support to public SkSL in ES3 mode. 2021-09-14 18:15:23 +00:00
MatrixCompMultES3.sksl Disallow matrix ctors which overflow a column. 2021-09-16 22:14:49 +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 Add ES3 intrinsic modf to sksl_public. 2021-09-08 18:45:16 +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 Enable outerProduct() in public SkSL and add unit tests. 2021-09-10 14:32:50 +00:00
Pack.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00
PackUnorm2x16.sksl Add support for pack/unpackUnorm2x16 to public SkSL. 2021-09-09 18:59:15 +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 Add trunc/round/roundEven SKSL ES3 public APIs. 2021-08-23 15:44:15 +00:00
RoundEven.sksl Add trunc/round/roundEven SKSL ES3 public APIs. 2021-08-23 15:44:15 +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 Add compile-time optimization for transpose(). 2021-08-18 13:49:04 +00:00
Trunc.sksl Add trunc/round/roundEven SKSL ES3 public APIs. 2021-08-23 15:44:15 +00:00
UintBitsToFloat.sksl Add floatBitsToInt family of ES3 intrinsics to SkSL public ES3. 2021-08-20 14:58:44 +00:00
Unpack.sksl Change sksl tests to avoid SPIR-V validation errors 2021-03-16 13:39:53 +00:00