61e5e202a5
The fuzzer is currently learning to make unboundedly-large programs by nesting medium-size loops repeatedly. SkVM doesn't have a mechanism to limit the ensuing explosion of code and ends up making unreasonably deep stacks and/or unreasonably large programs. SkSL now enforces an upper bound of approximately 100,000 IR nodes on a fully-flattened, fully-inlined strict-ES2 program. The limit is picked out of thin air, but this should be enough to prevent SkVM from going haywire while still being large enough to handle any reasonable program. We can definitely tune this value if we find that it is too large (admitting dangerous code) or too small (rejecting good code). Change-Id: I11735636175721fbc79460b4e194d8e4b42dc47d Bug: skia:12396, oss-fuzz:37827, oss-fuzz:37837 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/444358 Auto-Submit: John Stiles <johnstiles@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
606 lines
24 KiB
Plaintext
606 lines
24 KiB
Plaintext
# Copyright 2020 Google LLC
|
|
#
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
sksl_error_tests = [
|
|
"/sksl/errors/ArgumentCountMismatch.sksl",
|
|
"/sksl/errors/ArgumentMismatch.sksl",
|
|
"/sksl/errors/ArgumentModifiers.sksl",
|
|
"/sksl/errors/ArrayConstructorElementCount.sksl",
|
|
"/sksl/errors/ArrayIndexOutOfRange.sksl",
|
|
"/sksl/errors/ArrayOfInvalidSize.sksl",
|
|
"/sksl/errors/ArrayOfVoid.sksl",
|
|
"/sksl/errors/ArrayOfVoidInStruct.sksl",
|
|
"/sksl/errors/ArrayReturnTypes.sksl",
|
|
"/sksl/errors/ArraySplitDimensions.sksl",
|
|
"/sksl/errors/ArraySplitDimensionsInFuncBody.sksl",
|
|
"/sksl/errors/ArraySplitDimensionsInFuncDecl.sksl",
|
|
"/sksl/errors/ArraySplitDimensionsInStruct.sksl",
|
|
"/sksl/errors/ArrayTooManyDimensions.sksl",
|
|
"/sksl/errors/ArrayTooManyDimensionsInFuncBody.sksl",
|
|
"/sksl/errors/ArrayTooManyDimensionsInFuncDecl.sksl",
|
|
"/sksl/errors/ArrayTooManyDimensionsInStruct.sksl",
|
|
"/sksl/errors/ArrayTypeTooManyDimensions.sksl",
|
|
"/sksl/errors/ArrayTypeTooManyDimensionsInFuncBody.sksl",
|
|
"/sksl/errors/ArrayTypeTooManyDimensionsInFuncDecl.sksl",
|
|
"/sksl/errors/ArrayTypeTooManyDimensionsInStruct.sksl",
|
|
"/sksl/errors/ArrayUnspecifiedDimensions.sksl",
|
|
"/sksl/errors/AssignmentTypeMismatch.sksl",
|
|
"/sksl/errors/BadCaps.sksl",
|
|
"/sksl/errors/BadConstInitializers.sksl",
|
|
"/sksl/errors/BadFieldAccess.sksl",
|
|
"/sksl/errors/BadIndex.sksl",
|
|
"/sksl/errors/BadModifiers.sksl",
|
|
"/sksl/errors/BinaryInvalidType.sksl",
|
|
"/sksl/errors/BinaryTypeCoercion.sksl",
|
|
"/sksl/errors/BinaryTypeMismatch.sksl",
|
|
"/sksl/errors/BitShiftFloat.sksl",
|
|
"/sksl/errors/BitShiftFloatMatrix.sksl",
|
|
"/sksl/errors/BitShiftFloatVector.sksl",
|
|
"/sksl/errors/BooleanArithmetic.sksl",
|
|
"/sksl/errors/BreakOutsideLoop.sksl",
|
|
"/sksl/errors/CallNonFunction.sksl",
|
|
"/sksl/errors/CanExitWithoutReturningValue.sksl",
|
|
"/sksl/errors/ConstructorArgumentCount.sksl",
|
|
"/sksl/errors/ConstructorTypeMismatch.sksl",
|
|
"/sksl/errors/ContinueOutsideLoop.sksl",
|
|
"/sksl/errors/DivideByZero.sksl",
|
|
"/sksl/errors/DoTypeMismatch.sksl",
|
|
"/sksl/errors/DuplicateFunction.sksl",
|
|
"/sksl/errors/DuplicateOutput.sksl",
|
|
"/sksl/errors/DuplicateSymbol.sksl",
|
|
"/sksl/errors/EmptyArray.sksl",
|
|
"/sksl/errors/EmptyStruct.sksl",
|
|
"/sksl/errors/ErrorsInDeadCode.sksl",
|
|
"/sksl/errors/FloatRemainder.sksl",
|
|
"/sksl/errors/ForInitStmt.sksl",
|
|
"/sksl/errors/ForTypeMismatch.sksl",
|
|
"/sksl/errors/FunctionParameterOfVoid.sksl",
|
|
"/sksl/errors/GenericArgumentMismatch.sksl",
|
|
"/sksl/errors/PrecisionQualifiersDisallowed.sksl",
|
|
"/sksl/errors/IfTypeMismatch.sksl",
|
|
"/sksl/errors/InVarWithInitializerExpression.sksl",
|
|
"/sksl/errors/InterfaceBlockScope.sksl",
|
|
"/sksl/errors/InterfaceBlockStorageModifiers.sksl",
|
|
"/sksl/errors/InterfaceBlockWithNoMembers.sksl",
|
|
"/sksl/errors/IntrinsicInGlobalVariable.sksl",
|
|
"/sksl/errors/InvalidAssignment.sksl",
|
|
"/sksl/errors/InvalidOutParams.sksl",
|
|
"/sksl/errors/InvalidToken.sksl",
|
|
"/sksl/errors/InvalidUnary.sksl",
|
|
"/sksl/errors/LayoutInFunctions.sksl",
|
|
"/sksl/errors/LayoutRepeatedQualifiers.sksl",
|
|
"/sksl/errors/MatrixToVectorCast3x3.sksl",
|
|
"/sksl/errors/MatrixToVectorCastBoolean.sksl",
|
|
"/sksl/errors/MatrixToVectorCastInteger.sksl",
|
|
"/sksl/errors/MatrixToVectorCastTooSmall.sksl",
|
|
"/sksl/errors/MismatchedNumbers.sksl",
|
|
"/sksl/errors/ModifiersInStruct.sksl",
|
|
"/sksl/errors/NoES3ModifierInUserCode.sksl",
|
|
"/sksl/errors/OpaqueTypeAssignment.sksl",
|
|
"/sksl/errors/OpaqueTypeConstruction.sksl",
|
|
"/sksl/errors/OpaqueTypeInArray.sksl",
|
|
"/sksl/errors/OpaqueTypeInInterfaceBlock.sksl",
|
|
"/sksl/errors/OpaqueTypeInStruct.sksl",
|
|
"/sksl/errors/OpenArray.sksl",
|
|
"/sksl/errors/Ossfuzz26700.sksl",
|
|
"/sksl/errors/Ossfuzz27614.sksl",
|
|
"/sksl/errors/Ossfuzz27650.sksl",
|
|
"/sksl/errors/Ossfuzz27663.sksl",
|
|
"/sksl/errors/Ossfuzz28050.sksl",
|
|
"/sksl/errors/Ossfuzz29444.sksl",
|
|
"/sksl/errors/Ossfuzz29845.sksl",
|
|
"/sksl/errors/Ossfuzz29849.sksl",
|
|
"/sksl/errors/Ossfuzz31410.sksl",
|
|
"/sksl/errors/Ossfuzz31469.sksl",
|
|
"/sksl/errors/Ossfuzz32156.sksl",
|
|
"/sksl/errors/Ossfuzz32587.sksl",
|
|
"/sksl/errors/Ossfuzz32851.sksl",
|
|
"/sksl/errors/Ossfuzz37457.sksl",
|
|
"/sksl/errors/Ossfuzz37465.sksl",
|
|
"/sksl/errors/Ossfuzz37620.sksl",
|
|
"/sksl/errors/OverflowFloatLiteral.sksl",
|
|
"/sksl/errors/OverflowIntLiteral.sksl",
|
|
"/sksl/errors/OverflowInt64Literal.sksl",
|
|
"/sksl/errors/OverflowParamArraySize.sksl",
|
|
"/sksl/errors/OverflowUintLiteral.sksl",
|
|
"/sksl/errors/PrototypeInFuncBody.sksl",
|
|
"/sksl/errors/PrivateTypes.sksl",
|
|
"/sksl/errors/RedeclareBasicType.sksl",
|
|
"/sksl/errors/RedeclareSamplerType.sksl",
|
|
"/sksl/errors/RedeclareStruct.sksl",
|
|
"/sksl/errors/RedeclareStructTypeWithName.sksl",
|
|
"/sksl/errors/RedeclareUserType.sksl",
|
|
"/sksl/errors/RedeclareVariable.sksl",
|
|
"/sksl/errors/ReturnDifferentType.sksl",
|
|
"/sksl/errors/ReturnFromVoid.sksl",
|
|
"/sksl/errors/ReturnMissingValue.sksl",
|
|
"/sksl/errors/ReturnTypeMismatch.sksl",
|
|
"/sksl/errors/SelfReferentialInitializerExpression.sksl",
|
|
"/sksl/errors/SpuriousFloat.sksl",
|
|
"/sksl/errors/StaticIfTest.sksl",
|
|
"/sksl/errors/StaticSwitchConditionalBreak.sksl",
|
|
"/sksl/errors/StaticSwitchTest.sksl",
|
|
"/sksl/errors/StaticSwitchWithConditionalBreak.sksl",
|
|
"/sksl/errors/StaticSwitchWithConditionalContinue.sksl",
|
|
"/sksl/errors/StaticSwitchWithConditionalReturn.sksl",
|
|
"/sksl/errors/StructNameWithoutIdentifier.sksl",
|
|
"/sksl/errors/StructTooDeeplyNested.sksl",
|
|
"/sksl/errors/SwitchDuplicateCase.sksl",
|
|
"/sksl/errors/SwitchDuplicateDefault.sksl",
|
|
"/sksl/errors/SwitchTypes.sksl",
|
|
"/sksl/errors/SwizzleConstantOutput.sksl",
|
|
"/sksl/errors/SwizzleDomain.sksl",
|
|
"/sksl/errors/SwizzleMatrix.sksl",
|
|
"/sksl/errors/SwizzleOnlyLiterals.sksl",
|
|
"/sksl/errors/SwizzleOutOfBounds.sksl",
|
|
"/sksl/errors/SwizzleTooManyComponents.sksl",
|
|
"/sksl/errors/TernaryMismatch.sksl",
|
|
"/sksl/errors/UndeclaredFunction.sksl",
|
|
"/sksl/errors/UndefinedFunction.sksl",
|
|
"/sksl/errors/UndefinedSymbol.sksl",
|
|
"/sksl/errors/UniformVarWithInitializerExpression.sksl",
|
|
"/sksl/errors/UnknownDivideByZero.sksl",
|
|
"/sksl/errors/UnsupportedGLSLIdentifiers.sksl",
|
|
"/sksl/errors/UnscopedVariableInDoWhile.sksl",
|
|
"/sksl/errors/UnscopedVariableInElse.sksl",
|
|
"/sksl/errors/UnscopedVariableInFor.sksl",
|
|
"/sksl/errors/UnscopedVariableInIf.sksl",
|
|
"/sksl/errors/UnscopedVariableInWhile.sksl",
|
|
"/sksl/errors/UsingInvalidValue.sksl",
|
|
"/sksl/errors/VectorSlice.sksl",
|
|
"/sksl/errors/VertexEarlyReturn.vert",
|
|
"/sksl/errors/WhileTypeMismatch.sksl",
|
|
]
|
|
|
|
sksl_glsl_tests = [
|
|
"/sksl/glsl/ForceHighPrecision.sksl",
|
|
"/sksl/glsl/IncompleteShortIntPrecision.sksl",
|
|
"/sksl/glsl/LayoutQualifiers.sksl",
|
|
"/sksl/glsl/ShortIntPrecision.sksl",
|
|
"/sksl/glsl/TextureSharpenVersion110.sksl",
|
|
"/sksl/glsl/TextureVersion110.sksl",
|
|
"/sksl/glsl/UsesPrecisionModifiers.sksl",
|
|
"/sksl/glsl/Version110.sksl",
|
|
"/sksl/glsl/Version450Core.sksl",
|
|
]
|
|
|
|
sksl_metal_tests = [
|
|
"/sksl/metal/CastHalf4ToMat2x2.sksl",
|
|
"/sksl/metal/CastMat2x2ToMat3x3.sksl",
|
|
"/sksl/metal/CastMat2x3ToMat4x4.sksl",
|
|
"/sksl/metal/CastMat4x4ToMat3x4.sksl",
|
|
"/sksl/metal/CastMat4x4ToMat4x3.sksl",
|
|
"/sksl/metal/NumericGlobals.sksl",
|
|
"/sksl/metal/OpaqueTypeInInterfaceBlock.sksl",
|
|
"/sksl/metal/OpaqueTypeInStruct.sksl",
|
|
"/sksl/metal/OutParams.sksl",
|
|
"/sksl/metal/OutVarsRequireLocation.sksl",
|
|
"/sksl/metal/SamplerGlobals.sksl",
|
|
"/sksl/metal/SwizzleHelper.sksl",
|
|
]
|
|
|
|
sksl_spirv_tests = [
|
|
"/sksl/spirv/ConstantVectorFromVector.sksl",
|
|
"/sksl/spirv/InterfaceBlockPushConstant.sksl",
|
|
"/sksl/spirv/LayoutMultipleOf4.sksl",
|
|
"/sksl/spirv/LayoutOutOfOrder.sksl",
|
|
"/sksl/spirv/OpaqueTypeInArray.sksl",
|
|
"/sksl/spirv/Ossfuzz35916.sksl",
|
|
"/sksl/spirv/Ossfuzz37627.sksl",
|
|
"/sksl/workarounds/RewriteMatrixVectorMultiply.sksl",
|
|
"/sksl/errors/Ossfuzz36850.sksl",
|
|
"/sksl/errors/Ossfuzz37469.sksl",
|
|
"/sksl/errors/UndefinedFunction.sksl",
|
|
"/sksl/errors/UnusedInterfaceBlock.sksl",
|
|
]
|
|
|
|
sksl_shared_tests = [
|
|
"/sksl/intrinsics/AbsFloat.sksl",
|
|
"/sksl/intrinsics/AbsInt.sksl",
|
|
"/sksl/intrinsics/Acos.sksl",
|
|
"/sksl/intrinsics/Acosh.sksl",
|
|
"/sksl/intrinsics/All.sksl",
|
|
"/sksl/intrinsics/Any.sksl",
|
|
"/sksl/intrinsics/Asin.sksl",
|
|
"/sksl/intrinsics/Asinh.sksl",
|
|
"/sksl/intrinsics/Atan.sksl",
|
|
"/sksl/intrinsics/Atanh.sksl",
|
|
"/sksl/intrinsics/BitCount.sksl",
|
|
"/sksl/intrinsics/Ceil.sksl",
|
|
"/sksl/intrinsics/ClampFloat.sksl",
|
|
"/sksl/intrinsics/ClampInt.sksl",
|
|
"/sksl/intrinsics/Cos.sksl",
|
|
"/sksl/intrinsics/Cosh.sksl",
|
|
"/sksl/intrinsics/Cross.sksl",
|
|
"/sksl/intrinsics/CrossNoInline.sksl",
|
|
"/sksl/intrinsics/Degrees.sksl",
|
|
"/sksl/intrinsics/Determinant.sksl",
|
|
"/sksl/intrinsics/DFdx.sksl",
|
|
"/sksl/intrinsics/DFdy.sksl",
|
|
"/sksl/intrinsics/Distance.sksl",
|
|
"/sksl/intrinsics/Dot.sksl",
|
|
"/sksl/intrinsics/Equal.sksl",
|
|
"/sksl/intrinsics/Exp.sksl",
|
|
"/sksl/intrinsics/Exp2.sksl",
|
|
"/sksl/intrinsics/FaceForward.sksl",
|
|
"/sksl/intrinsics/FindLSB.sksl",
|
|
"/sksl/intrinsics/FindMSB.sksl",
|
|
"/sksl/intrinsics/FloatBitsToInt.sksl",
|
|
"/sksl/intrinsics/FloatBitsToUint.sksl",
|
|
"/sksl/intrinsics/Floor.sksl",
|
|
"/sksl/intrinsics/Fma.sksl",
|
|
"/sksl/intrinsics/Fract.sksl",
|
|
"/sksl/intrinsics/Frexp.sksl",
|
|
"/sksl/intrinsics/Fwidth.sksl",
|
|
"/sksl/intrinsics/GreaterThan.sksl",
|
|
"/sksl/intrinsics/GreaterThanEqual.sksl",
|
|
"/sksl/intrinsics/IntBitsToFloat.sksl",
|
|
"/sksl/intrinsics/Inverse.sksl",
|
|
"/sksl/intrinsics/Inversesqrt.sksl",
|
|
"/sksl/intrinsics/IsInf.sksl",
|
|
"/sksl/intrinsics/IsNan.sksl",
|
|
"/sksl/intrinsics/Ldexp.sksl",
|
|
"/sksl/intrinsics/Length.sksl",
|
|
"/sksl/intrinsics/LessThan.sksl",
|
|
"/sksl/intrinsics/LessThanEqual.sksl",
|
|
"/sksl/intrinsics/Log.sksl",
|
|
"/sksl/intrinsics/Log2.sksl",
|
|
"/sksl/intrinsics/MatrixCompMult.sksl",
|
|
"/sksl/intrinsics/MaxFloat.sksl",
|
|
"/sksl/intrinsics/MaxInt.sksl",
|
|
"/sksl/intrinsics/MinFloat.sksl",
|
|
"/sksl/intrinsics/MinInt.sksl",
|
|
"/sksl/intrinsics/MixFloat.sksl",
|
|
"/sksl/intrinsics/MixBool.sksl",
|
|
"/sksl/intrinsics/Mod.sksl",
|
|
"/sksl/intrinsics/Modf.sksl",
|
|
"/sksl/intrinsics/Normalize.sksl",
|
|
"/sksl/intrinsics/Not.sksl",
|
|
"/sksl/intrinsics/NotEqual.sksl",
|
|
"/sksl/intrinsics/OuterProduct.sksl",
|
|
"/sksl/intrinsics/Pack.sksl",
|
|
"/sksl/intrinsics/Pow.sksl",
|
|
"/sksl/intrinsics/Radians.sksl",
|
|
"/sksl/intrinsics/Reflect.sksl",
|
|
"/sksl/intrinsics/Refract.sksl",
|
|
"/sksl/intrinsics/Round.sksl",
|
|
"/sksl/intrinsics/RoundEven.sksl",
|
|
"/sksl/intrinsics/Saturate.sksl",
|
|
"/sksl/intrinsics/SignFloat.sksl",
|
|
"/sksl/intrinsics/SignInt.sksl",
|
|
"/sksl/intrinsics/Sin.sksl",
|
|
"/sksl/intrinsics/Sinh.sksl",
|
|
"/sksl/intrinsics/Smoothstep.sksl",
|
|
"/sksl/intrinsics/Sqrt.sksl",
|
|
"/sksl/intrinsics/Step.sksl",
|
|
"/sksl/intrinsics/Tan.sksl",
|
|
"/sksl/intrinsics/Tanh.sksl",
|
|
"/sksl/intrinsics/Transpose.sksl",
|
|
"/sksl/intrinsics/Trunc.sksl",
|
|
"/sksl/intrinsics/UintBitsToFloat.sksl",
|
|
"/sksl/intrinsics/Unpack.sksl",
|
|
"/sksl/shared/ArrayCast.sksl",
|
|
"/sksl/shared/ArrayComparison.sksl",
|
|
"/sksl/shared/ArrayConstructors.sksl",
|
|
"/sksl/shared/ArrayFollowedByScalar.sksl",
|
|
"/sksl/shared/ArrayIndexTypes.sksl",
|
|
"/sksl/shared/ArrayNarrowingConversions.sksl",
|
|
"/sksl/shared/ArrayTypes.sksl",
|
|
"/sksl/shared/Assignment.sksl",
|
|
"/sksl/shared/Caps.sksl",
|
|
"/sksl/shared/CastsRoundTowardZero.sksl",
|
|
"/sksl/shared/Clockwise.sksl",
|
|
"/sksl/shared/CommaMixedTypes.sksl",
|
|
"/sksl/shared/CommaSideEffects.sksl",
|
|
"/sksl/shared/ComplexDelete.sksl",
|
|
"/sksl/shared/ConstArray.sksl",
|
|
"/sksl/shared/ConstVariableComparison.sksl",
|
|
"/sksl/shared/ConstantIf.sksl",
|
|
"/sksl/shared/Control.sksl",
|
|
"/sksl/shared/DeadDoWhileLoop.sksl",
|
|
"/sksl/shared/DeadIfStatement.sksl",
|
|
"/sksl/shared/DeadLoopVariable.sksl",
|
|
"/sksl/shared/DeadReturn.sksl",
|
|
"/sksl/shared/DeadReturnES3.sksl",
|
|
"/sksl/shared/DeadStripFunctions.sksl",
|
|
"/sksl/shared/DependentInitializers.sksl",
|
|
"/sksl/shared/DerivativesUnused.sksl",
|
|
"/sksl/shared/Discard.sksl",
|
|
"/sksl/shared/DoWhileControlFlow.sksl",
|
|
"/sksl/shared/EmptyBlocksES2.sksl",
|
|
"/sksl/shared/EmptyBlocksES3.sksl",
|
|
"/sksl/shared/ForLoopControlFlow.sksl",
|
|
"/sksl/shared/ForLoopMultipleInit.sksl",
|
|
"/sksl/shared/FragCoords.sksl",
|
|
"/sksl/shared/FunctionArgTypeMatch.sksl",
|
|
"/sksl/shared/FunctionReturnTypeMatch.sksl",
|
|
"/sksl/shared/FunctionPrototype.sksl",
|
|
"/sksl/shared/Functions.sksl",
|
|
"/sksl/shared/GaussianBlur.sksl",
|
|
"/sksl/shared/GeometricIntrinsics.sksl",
|
|
"/sksl/shared/HelloWorld.sksl",
|
|
"/sksl/shared/Hex.sksl",
|
|
"/sksl/shared/HexUnsigned.sksl",
|
|
"/sksl/shared/InstanceID.vert",
|
|
"/sksl/shared/InterfaceBlockNamed.sksl",
|
|
"/sksl/shared/InterfaceBlockNamedArray.sksl",
|
|
"/sksl/shared/Matrices.sksl",
|
|
"/sksl/shared/MatricesNonsquare.sksl",
|
|
"/sksl/shared/MatrixEquality.sksl",
|
|
"/sksl/shared/MatrixScalarSplat.sksl",
|
|
"/sksl/shared/MatrixToVectorCast.sksl",
|
|
"/sksl/shared/MultipleAssignments.sksl",
|
|
"/sksl/shared/Negation.sksl",
|
|
"/sksl/shared/NoFragCoordsPos.vert",
|
|
"/sksl/shared/NoFragCoordsPosRT.vert",
|
|
"/sksl/shared/NormalizationVert.vert",
|
|
"/sksl/shared/NumberCasts.sksl",
|
|
"/sksl/shared/NumberConversions.sksl",
|
|
"/sksl/shared/Offset.sksl",
|
|
"/sksl/shared/OperatorsES2.sksl",
|
|
"/sksl/shared/OperatorsES3.sksl",
|
|
"/sksl/shared/Ossfuzz26167.sksl",
|
|
"/sksl/shared/Ossfuzz26759.sksl",
|
|
"/sksl/shared/Ossfuzz28794.sksl",
|
|
"/sksl/shared/Ossfuzz28904.sksl",
|
|
"/sksl/shared/Ossfuzz29085.sksl",
|
|
"/sksl/shared/Ossfuzz29494.sksl",
|
|
"/sksl/shared/Ossfuzz36770.sksl",
|
|
"/sksl/shared/Ossfuzz36852.sksl",
|
|
"/sksl/shared/Ossfuzz37466.sksl",
|
|
"/sksl/shared/Ossfuzz37677.sksl",
|
|
"/sksl/shared/Ossfuzz37900.sksl",
|
|
"/sksl/shared/OutParams.sksl",
|
|
"/sksl/shared/OutParamsNoInline.sksl",
|
|
"/sksl/shared/OutParamsTricky.sksl",
|
|
"/sksl/shared/Overflow.sksl",
|
|
"/sksl/shared/RectangleTexture.sksl",
|
|
"/sksl/shared/ResizeMatrix.sksl",
|
|
"/sksl/shared/ResizeMatrixNonsquare.sksl",
|
|
"/sksl/shared/ReturnBadTypeFromMain.sksl",
|
|
"/sksl/shared/ReturnColorFromMain.sksl",
|
|
"/sksl/shared/ReturnsValueOnEveryPathES2.sksl",
|
|
"/sksl/shared/ReturnsValueOnEveryPathES3.sksl",
|
|
"/sksl/shared/SampleLocations.vert",
|
|
"/sksl/shared/ScalarConversionConstructorsES2.sksl",
|
|
"/sksl/shared/ScalarConversionConstructorsES3.sksl",
|
|
"/sksl/shared/ScopedSymbol.sksl",
|
|
"/sksl/shared/StackingVectorCasts.sksl",
|
|
"/sksl/shared/StaticIf.sksl",
|
|
"/sksl/shared/StaticSwitch.sksl",
|
|
"/sksl/shared/StaticSwitchWithBreak.sksl",
|
|
"/sksl/shared/StaticSwitchWithBreakInsideBlock.sksl",
|
|
"/sksl/shared/StaticSwitchWithConditionalBreak.sksl",
|
|
"/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.sksl",
|
|
"/sksl/shared/StaticSwitchWithContinue.sksl",
|
|
"/sksl/shared/StaticSwitchWithFallthroughA.sksl",
|
|
"/sksl/shared/StaticSwitchWithFallthroughB.sksl",
|
|
"/sksl/shared/StaticSwitchWithStaticConditionalBreak.sksl",
|
|
"/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.sksl",
|
|
"/sksl/shared/StructArrayFollowedByScalar.sksl",
|
|
"/sksl/shared/Structs.sksl",
|
|
"/sksl/shared/StructsInFunctions.sksl",
|
|
"/sksl/shared/StructMaxDepth.sksl",
|
|
"/sksl/shared/Switch.sksl",
|
|
"/sksl/shared/SwitchContainingDeadCode.sksl",
|
|
"/sksl/shared/SwitchWithFallthrough.sksl",
|
|
"/sksl/shared/SwizzleBoolConstants.sksl",
|
|
"/sksl/shared/SwizzleByConstantIndex.sksl",
|
|
"/sksl/shared/SwizzleByIndex.sksl",
|
|
"/sksl/shared/SwizzleConstants.sksl",
|
|
"/sksl/shared/SwizzleLTRB.sksl",
|
|
"/sksl/shared/SwizzleOpt.sksl",
|
|
"/sksl/shared/SwizzleScalar.sksl",
|
|
"/sksl/shared/SwizzleScalarBool.sksl",
|
|
"/sksl/shared/SwizzleScalarInt.sksl",
|
|
"/sksl/shared/TernaryAsLValueEntirelyFoldable.sksl",
|
|
"/sksl/shared/TernaryAsLValueFoldableTest.sksl",
|
|
"/sksl/shared/TernaryExpression.sksl",
|
|
"/sksl/shared/Texture1D.sksl",
|
|
"/sksl/shared/Texture2D.sksl",
|
|
"/sksl/shared/TextureSharpen.sksl",
|
|
"/sksl/shared/UnaryPositiveNegative.sksl",
|
|
"/sksl/shared/UniformArray.sksl",
|
|
"/sksl/shared/UniformBuffers.sksl",
|
|
"/sksl/shared/Uniforms.sksl",
|
|
"/sksl/shared/UnusedVariables.sksl",
|
|
"/sksl/shared/VectorConstructors.sksl",
|
|
"/sksl/shared/VectorScalarMath.sksl",
|
|
"/sksl/shared/VectorToMatrixCast.sksl",
|
|
"/sksl/shared/VertexID.vert",
|
|
"/sksl/shared/WhileLoopControlFlow.sksl",
|
|
]
|
|
|
|
sksl_folding_tests = [
|
|
"/sksl/folding/ArrayFolding.sksl",
|
|
"/sksl/folding/AssignmentOps.sksl",
|
|
"/sksl/folding/BoolFolding.sksl",
|
|
"/sksl/folding/CastFolding.sksl",
|
|
"/sksl/folding/FloatFolding.sksl",
|
|
"/sksl/folding/IntFoldingES2.sksl",
|
|
"/sksl/folding/IntFoldingES3.sksl",
|
|
"/sksl/folding/MatrixFoldingES2.sksl",
|
|
"/sksl/folding/MatrixFoldingES3.sksl",
|
|
"/sksl/folding/SelfAssignment.sksl",
|
|
"/sksl/folding/ShortCircuitBoolFolding.sksl",
|
|
"/sksl/folding/SwizzleFolding.sksl",
|
|
"/sksl/folding/VectorScalarFolding.sksl",
|
|
"/sksl/folding/VectorVectorFolding.sksl",
|
|
]
|
|
|
|
sksl_inliner_tests = [
|
|
"/sksl/inliner/DoWhileBodyMustBeInlinedIntoAScope.sksl",
|
|
"/sksl/inliner/DoWhileTestCannotBeInlined.sksl",
|
|
"/sksl/inliner/ForBodyMustBeInlinedIntoAScope.sksl",
|
|
"/sksl/inliner/ForInitializerExpressionsCanBeInlined.sksl",
|
|
"/sksl/inliner/ForWithReturnInsideCannotBeInlined.sksl",
|
|
"/sksl/inliner/ForWithoutReturnInsideCanBeInlined.sksl",
|
|
"/sksl/inliner/IfBodyMustBeInlinedIntoAScope.sksl",
|
|
"/sksl/inliner/IfElseBodyMustBeInlinedIntoAScope.sksl",
|
|
"/sksl/inliner/IfElseChainWithReturnsCanBeInlined.sksl",
|
|
"/sksl/inliner/IfTestCanBeInlined.sksl",
|
|
"/sksl/inliner/IfWithReturnsCanBeInlined.sksl",
|
|
"/sksl/inliner/InlineKeywordOverridesThreshold.sksl",
|
|
"/sksl/inliner/InlineThreshold.sksl",
|
|
"/sksl/inliner/InlinerElidesTempVarForReturnsInsideBlock.sksl",
|
|
"/sksl/inliner/InlinerUsesTempVarForMultipleReturns.sksl",
|
|
"/sksl/inliner/InlinerUsesTempVarForReturnsInsideBlockWithVar.sksl",
|
|
"/sksl/inliner/InlineWithInoutArgument.sksl",
|
|
"/sksl/inliner/InlineWithModifiedArgument.sksl",
|
|
"/sksl/inliner/InlineWithNestedBigCalls.sksl",
|
|
"/sksl/inliner/InlineWithNestedCalls.sksl",
|
|
"/sksl/inliner/InlineWithUnmodifiedArgument.sksl",
|
|
"/sksl/inliner/InlineWithUnnecessaryBlocks.sksl",
|
|
"/sksl/inliner/InlinerAvoidsVariableNameOverlap.sksl",
|
|
"/sksl/inliner/InlinerHonorsGLSLOutParamSemantics.sksl",
|
|
"/sksl/inliner/InlinerManglesNames.sksl",
|
|
"/sksl/inliner/NoInline.sksl",
|
|
"/sksl/inliner/ShortCircuitEvaluationsCannotInlineRightHandSide.sksl",
|
|
"/sksl/inliner/StaticSwitch.sksl",
|
|
"/sksl/inliner/StructsCanBeInlinedSafely.sksl",
|
|
"/sksl/inliner/SwitchWithCastCanBeInlined.sksl",
|
|
"/sksl/inliner/SwitchWithoutReturnInsideCanBeInlined.sksl",
|
|
"/sksl/inliner/SwizzleCanBeInlinedDirectly.sksl",
|
|
"/sksl/inliner/TernaryResultsCannotBeInlined.sksl",
|
|
"/sksl/inliner/TernaryTestCanBeInlined.sksl",
|
|
"/sksl/inliner/TrivialArgumentsInlineDirectly.sksl",
|
|
"/sksl/inliner/WhileBodyMustBeInlinedIntoAScope.sksl",
|
|
"/sksl/inliner/WhileTestCannotBeInlined.sksl",
|
|
]
|
|
|
|
sksl_blend_tests = [
|
|
"/sksl/blend/BlendClear.sksl",
|
|
"/sksl/blend/BlendColor.sksl",
|
|
"/sksl/blend/BlendColorBurn.sksl",
|
|
"/sksl/blend/BlendColorDodge.sksl",
|
|
"/sksl/blend/BlendDarken.sksl",
|
|
"/sksl/blend/BlendDifference.sksl",
|
|
"/sksl/blend/BlendDst.sksl",
|
|
"/sksl/blend/BlendDstAtop.sksl",
|
|
"/sksl/blend/BlendDstIn.sksl",
|
|
"/sksl/blend/BlendDstOut.sksl",
|
|
"/sksl/blend/BlendDstOver.sksl",
|
|
"/sksl/blend/BlendExclusion.sksl",
|
|
"/sksl/blend/BlendHardLight.sksl",
|
|
"/sksl/blend/BlendHue.sksl",
|
|
"/sksl/blend/BlendLighten.sksl",
|
|
"/sksl/blend/BlendLuminosity.sksl",
|
|
"/sksl/blend/BlendModulate.sksl",
|
|
"/sksl/blend/BlendMultiply.sksl",
|
|
"/sksl/blend/BlendOverlay.sksl",
|
|
"/sksl/blend/BlendPlus.sksl",
|
|
"/sksl/blend/BlendSaturation.sksl",
|
|
"/sksl/blend/BlendScreen.sksl",
|
|
"/sksl/blend/BlendSoftLight.sksl",
|
|
"/sksl/blend/BlendSrc.sksl",
|
|
"/sksl/blend/BlendSrcAtop.sksl",
|
|
"/sksl/blend/BlendSrcIn.sksl",
|
|
"/sksl/blend/BlendSrcOut.sksl",
|
|
"/sksl/blend/BlendSrcOver.sksl",
|
|
"/sksl/blend/BlendXor.sksl",
|
|
]
|
|
|
|
sksl_settings_tests = [
|
|
"/sksl/glsl/TypePrecision.sksl",
|
|
"/sksl/inliner/ExponentialGrowth.sksl",
|
|
"/sksl/inliner/InlinerCanBeDisabled.sksl",
|
|
"/sksl/shared/Derivatives.sksl",
|
|
"/sksl/workarounds/AbsInt.sksl",
|
|
"/sksl/workarounds/BlendGuardedDivide.sksl",
|
|
"/sksl/workarounds/BlendModesAllZeroVec.sksl",
|
|
"/sksl/workarounds/FractNegative.sksl",
|
|
"/sksl/workarounds/FragCoords.sksl",
|
|
"/sksl/workarounds/LoopCondition.sksl",
|
|
"/sksl/workarounds/MinAndAbsTogether.sksl",
|
|
"/sksl/workarounds/NegatedAtan.sksl",
|
|
"/sksl/workarounds/NegatedLdexp.sksl",
|
|
"/sksl/workarounds/PowWithConstantExponent.sksl",
|
|
"/sksl/workarounds/RewriteDoWhileLoops.sksl",
|
|
"/sksl/workarounds/RewriteMatrixComparisons.sksl",
|
|
"/sksl/workarounds/RewriteMatrixVectorMultiply.sksl",
|
|
"/sksl/workarounds/TernaryShortCircuit.sksl",
|
|
]
|
|
|
|
sksl_rte_tests = [
|
|
"/sksl/runtime/AllowNarrowingConversions.rts",
|
|
"/sksl/runtime/ArrayIndexing.rts",
|
|
"/sksl/runtime/ArrayNarrowingConversions.rts",
|
|
"/sksl/runtime/Blend.rtb",
|
|
"/sksl/runtime/ConstPreservation.rts",
|
|
"/sksl/runtime/ConversionConstructors.rts",
|
|
"/sksl/runtime/GLSLTypeNames.rts",
|
|
"/sksl/runtime/GlobalVariables.rts",
|
|
"/sksl/runtime/LargeProgram_FlatLoop.rts",
|
|
"/sksl/runtime/LargeProgram_Functions.rts",
|
|
"/sksl/runtime/LargeProgram_NestedLoops.rts",
|
|
"/sksl/runtime/LargeProgram_SplitLoops.rts",
|
|
"/sksl/runtime/LargeProgram_ZeroIterFor.rts",
|
|
"/sksl/runtime/LoopInt.rts",
|
|
"/sksl/runtime/LoopFloat.rts",
|
|
"/sksl/runtime/PrecisionQualifiers.rts",
|
|
"/sksl/runtime/SampleWithExplicitCoord.rts",
|
|
"/sksl/runtime/VectorIndexing.rts",
|
|
]
|
|
|
|
sksl_rte_error_tests = [
|
|
"/sksl/runtime_errors/DerivativesES2.rts",
|
|
"/sksl/runtime_errors/ES3Types.rts",
|
|
"/sksl/runtime_errors/FirstClassArrays.rts",
|
|
"/sksl/runtime_errors/IllegalArrayOps.rts",
|
|
"/sksl/runtime_errors/IllegalIndexing.rts",
|
|
"/sksl/runtime_errors/IllegalOperators.rts",
|
|
"/sksl/runtime_errors/IllegalPrecisionQualifiers.rts",
|
|
"/sksl/runtime_errors/IllegalRecursionComplex.rts",
|
|
"/sksl/runtime_errors/IllegalRecursionMutual.rts",
|
|
"/sksl/runtime_errors/IllegalRecursionSimple.rts",
|
|
"/sksl/runtime_errors/IllegalShaderSampling.rts",
|
|
"/sksl/runtime_errors/IllegalShaderUse.rts",
|
|
"/sksl/runtime_errors/IllegalStatements.rts",
|
|
"/sksl/runtime_errors/InvalidBlendMain.rtb",
|
|
"/sksl/runtime_errors/InvalidColorFilterFeatures.rtcf",
|
|
"/sksl/runtime_errors/InvalidColorFilterMain.rtcf",
|
|
"/sksl/runtime_errors/InvalidShaderMain.rts",
|
|
"/sksl/runtime_errors/LoopConditionErrors.rts",
|
|
"/sksl/runtime_errors/LoopExpressionErrors.rts",
|
|
"/sksl/runtime_errors/LoopInitializerErrors.rts",
|
|
"/sksl/runtime_errors/LoopStructureErrors.rts",
|
|
"/sksl/runtime_errors/Ossfuzz36655.rts",
|
|
"/sksl/runtime_errors/ProgramTooLarge_FlatLoop.rts",
|
|
"/sksl/runtime_errors/ProgramTooLarge_Functions.rts",
|
|
"/sksl/runtime_errors/ProgramTooLarge_NestedLoops.rts",
|
|
"/sksl/runtime_errors/ProgramTooLarge_SplitLoops.rts",
|
|
"/sksl/runtime_errors/UnsupportedTypeFragmentProcessor.rts",
|
|
"/sksl/runtime_errors/UnsupportedTypeSampler.rts",
|
|
"/sksl/runtime_errors/UnsupportedTypeTexture.rts",
|
|
]
|
|
|
|
# Tests in sksl_glsl_tests_sources will be compiled with --settings on, and are expected to generate
|
|
# a .glsl output file.
|
|
sksl_glsl_tests_sources =
|
|
sksl_error_tests + sksl_glsl_tests + sksl_inliner_tests +
|
|
sksl_folding_tests + sksl_shared_tests
|
|
|
|
# Tests in sksl_glsl_settings_tests_sources will be compiled twice, once with --settings and once
|
|
# using --nosettings. In the latter mode, StandaloneSettings is appended to the output filename.
|
|
sksl_glsl_settings_tests_sources = sksl_blend_tests + sksl_settings_tests
|
|
|
|
# Tests in sksl_metal_tests_sources will be compiled with --settings on, and are expected to
|
|
# generate a .metal output file.
|
|
sksl_metal_tests_sources =
|
|
sksl_metal_tests + sksl_blend_tests + sksl_shared_tests
|
|
|
|
# Tests in sksl_spirv_tests_sources will be compiled with --settings on, and are expected to
|
|
# generate a .asm.(frag|vert|geom) output file.
|
|
sksl_spirv_tests_sources =
|
|
sksl_blend_tests + sksl_shared_tests + sksl_spirv_tests
|
|
|
|
## Tests in sksl_skvm_tests_sources will be compiled with --settings on, and are expected to
|
|
## generate a .skvm output file.
|
|
sksl_skvm_tests_sources = sksl_rte_tests + sksl_rte_error_tests
|
|
|
|
## Tests in sksl_stage_tests_sources will be compiled with --settings on, and are expected to
|
|
## generate a .stage output file.
|
|
sksl_stage_tests_sources = sksl_rte_tests
|