skia2/resources/sksl/errors
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
..
ArgumentCountMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentModifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArrayConstructorElementCount.sksl Reject array constructors with the wrong number of elements. 2021-02-03 22:33:02 +00:00
ArrayIndexOutOfRange.sksl Remove support for unsized arrays 2021-08-27 22:14:16 +00:00
ArrayOfInvalidSize.sksl Improve error-checking during array-size conversion. 2021-08-23 14:35:00 +00:00
ArrayOfVoid.sksl Improve error-checking during array-size conversion. 2021-08-23 14:35:00 +00:00
ArrayOfVoidInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayReturnTypes.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArraySplitDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInStruct.sksl Remove obsolete TODO. 2021-03-15 14:43:25 +00:00
ArrayTooManyDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayUnspecifiedDimensions.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
AssignmentTypeMismatch.sksl Fix fuzzer-discovered assertion with global variables. 2021-08-27 21:38:19 +00:00
BadCaps.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadConstInitializers.sksl Align SkSL const rules more closely with GLSL 2021-02-26 17:44:11 +00:00
BadFieldAccess.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadIndex.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadModifiers.sksl Remove custom SkVertices data and runtime effect varying support 2021-04-19 17:49:25 +00:00
BinaryInvalidType.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
BinaryTypeCoercion.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BinaryTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloat.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatMatrix.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatVector.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BooleanArithmetic.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BreakOutsideLoop.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CallNonFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CanExitWithoutReturningValue.sksl Improve do-while test in CanExitWithoutReturningValue. 2021-03-17 14:50:56 +00:00
ConstructorArgumentCount.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ConstructorTypeMismatch.sksl Add support for struct constructors to SkSL. 2021-04-09 13:54:16 +00:00
ContinueOutsideLoop.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DivideByZero.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DoTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateOutput.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateSymbol.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
EmptyArray.sksl Add unit test for array of zero or negative size. 2021-04-09 14:38:47 +00:00
EmptyStruct.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
ErrorsInDeadCode.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FloatRemainder.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForInitStmt.sksl Simplify for init-stmts at the IR level. 2021-04-20 14:38:36 +00:00
ForTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FunctionParameterOfVoid.sksl Allow function declarations to take (void). 2021-05-21 19:21:23 +00:00
GenericArgumentMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockStorageModifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockWithNoMembers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IntrinsicInGlobalVariable.sksl Fix fuzzer-discovered assertion with global variables. 2021-08-27 21:38:19 +00:00
InvalidAssignment.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
InvalidOutParams.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidToken.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidUnary.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
InVarWithInitializerExpression.sksl Force global initializers to be constant expressions 2021-03-15 16:54:05 +00:00
LastFragColorWithoutCaps.sksl Report an error if sk_LastFragColor is referenced without fbFetchSupport 2021-09-15 15:41:49 +00:00
LayoutInFunctions.sksl Remove (unused) geometry shader support 2021-08-27 19:41:10 +00:00
LayoutRepeatedQualifiers.sksl Remove (unused) geometry shader support 2021-08-27 19:41:10 +00:00
MatrixColumnOverflow.sksl Disallow matrix ctors which overflow a column. 2021-09-16 22:14:49 +00:00
MatrixToVectorCast3x3.sksl Shore up matrix/vector conversion tests. 2021-07-12 15:02:51 +00:00
MatrixToVectorCastBoolean.sksl Shore up matrix/vector conversion tests. 2021-07-12 15:02:51 +00:00
MatrixToVectorCastInteger.sksl Add support for mat2-to-ivec4 conversions in SkSL. 2021-07-12 14:09:18 +00:00
MatrixToVectorCastTooSmall.sksl Add support for matrix-to-vector conversions in SkSL. 2021-07-09 17:55:22 +00:00
MismatchedNumbers.sksl Fixed a function name in MismatchedNumbers.sksl 2021-08-31 15:31:58 +00:00
ModifiersInStruct.sksl Remove custom SkVertices data and runtime effect varying support 2021-04-19 17:49:25 +00:00
NoES3ModifierInUserCode.sksl Add $es3 modifier to SkSL. 2021-08-13 14:07:40 +00:00
OpaqueTypeAssignment.sksl Migrate VarDeclaration conversion out of IRGenerator. 2021-03-22 14:25:26 +00:00
OpaqueTypeConstruction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInArray.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInInterfaceBlock.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInStruct.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpenArray.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz26700.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27614.sksl Fix fuzzer-discovered error with ~ prefix on literals. 2021-02-26 17:30:26 +00:00
Ossfuzz27650.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27663.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz28050.sksl Fix various fuzzer-generated tests. 2021-04-12 13:44:59 +00:00
Ossfuzz29444.sksl Fix various fuzzer-generated tests. 2021-04-12 13:44:59 +00:00
Ossfuzz29845.sksl Fix fuzzer-discovered errors in SkSL parser. 2021-01-26 00:47:13 +00:00
Ossfuzz29849.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
Ossfuzz31410.sksl Fix fuzzer-discovered error with ~ prefix on literals. 2021-02-26 17:30:26 +00:00
Ossfuzz31469.sksl Fix fuzzer-discovered error with inlining. 2021-03-01 20:06:50 +00:00
Ossfuzz32156.sksl Add regression test for oss-fuzz:32156. 2021-06-01 15:19:13 +00:00
Ossfuzz32587.sksl Fix fuzzer-discovered error with variable declarations. 2021-03-29 14:35:09 +00:00
Ossfuzz32851.sksl Add regression test for oss-fuzz finding. 2021-04-05 19:39:16 +00:00
Ossfuzz36850.sksl Fix fuzzer-discovered error with SPIR-V interface arrays. 2021-08-05 21:44:16 +00:00
Ossfuzz37457.sksl Fix assertion discovered by fuzzer. 2021-08-23 14:23:46 +00:00
Ossfuzz37465.sksl Fix const function-parameter assertion discovered by fuzzer. 2021-08-23 19:28:29 +00:00
Ossfuzz37469.sksl Added reportPendingErrors to SkSL code generation 2021-08-23 20:54:40 +00:00
Ossfuzz37620.sksl Report intermediate expressions as errors in For next-exprs. 2021-08-25 17:26:21 +00:00
Ossfuzz38106.sksl Fixed DSLParser crash with invalid swizzle 2021-09-10 14:29:22 +00:00
Ossfuzz38107.sksl Reland "Fixed DSL assertion error on source files containing nulls" 2021-09-15 15:00:23 +00:00
Ossfuzz38140.sksl Fixed duplicate function definition error discovered by fuzzer 2021-09-10 17:35:52 +00:00
Ossfuzz38560.sksl Fix for-statement assertion detected by the fuzzer. 2021-09-13 13:34:48 +00:00
OverflowFloatLiteral.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowInt64Literal.sksl Add test for literals that overflow int64. 2021-06-01 17:34:23 +00:00
OverflowIntLiteral.sksl Detect out-of-range integer assignment. 2021-06-01 15:53:43 +00:00
OverflowParamArraySize.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowUintLiteral.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrecisionQualifiersDisallowed.sksl Honor lowp/mediump/highp precision qualifiers in IRGenerator. 2021-08-04 21:29:10 +00:00
PrivateTypes.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrototypeInFuncBody.sksl Improve error reporting for invalid var-decls. 2021-02-12 22:26:36 +00:00
RedeclareBasicType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareSamplerType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStruct.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStructTypeWithName.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareUserType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareVariable.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnDifferentType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnFromVoid.sksl Fix assertion when returning intermediate types. 2021-08-27 16:27:15 +00:00
ReturnMissingValue.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SelfReferentialInitializerExpression.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SpuriousFloat.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticIfTest.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
StaticSwitchConditionalBreak.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
StaticSwitchTest.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
StaticSwitchWithConditionalBreak.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StaticSwitchWithConditionalContinue.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StaticSwitchWithConditionalReturn.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StructNameWithoutIdentifier.sksl Remove ASTNode::TypeData 2021-01-28 16:56:59 +00:00
StructTooDeeplyNested.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchDuplicateCase.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchDuplicateDefault.sksl Add test for duplicate default switch-case. 2021-02-19 20:31:50 +00:00
SwitchTypes.sksl Disallow initializers on uniform variables 2021-02-18 01:01:38 +00:00
SwizzleConstantOutput.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleDomain.sksl Enforce consistency in swizzle domains. 2021-07-09 20:30:22 +00:00
SwizzleMatrix.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOnlyLiterals.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOutOfBounds.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleTooManyComponents.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
TernaryMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndeclaredFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedSymbol.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UniformVarWithInitializerExpression.sksl Force global initializers to be constant expressions 2021-03-15 16:54:05 +00:00
UnknownDivideByZero.sksl Added detection for non-constant-folded divide by zero errors in 2021-02-06 03:13:16 +00:00
UnscopedVariableInDoWhile.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInElse.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInFor.sksl Disallow unscoped for blocks which declare a variable. 2021-03-04 17:04:40 +00:00
UnscopedVariableInIf.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInWhile.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnsupportedGLSLIdentifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UnusedInterfaceBlock.sksl Fix for fuzzer-discovered error in SPIR-V compilation. 2021-04-19 15:55:04 +00:00
UsingInvalidValue.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
VectorSlice.sksl Add test for SkSL vector-slice constructors. 2021-07-12 20:33:44 +00:00
VertexEarlyReturn.vert Migrate function-body finalization out of IRGenerator. 2021-08-27 18:51:52 +00:00
WhileTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00