skia2/resources/sksl/inliner
John Stiles bff24abab8 Disallow inlining a function with out-parameters.
It is difficult to do this both efficiently and correctly while honoring
GLSL semantics (which require the lvalues to be kept distinct, even when
they point to the same variable). We could make it work by making copies
of every out parameter in each direction (going in for inouts, and
coming out for outs and inouts).

However, this could be self-defeating if it makes it harder for the
driver to track variable lifetimes. Simply opting out of inlining these
functions entirely seems like the best tradeoff; let the driver optimize
them if it can, and we can enjoy reduced complexity in the SkSL inliner.

Change-Id: I62f7b4550cc181cfe789e4f2ff4e408ba1baf9cb
Bug: skia:11326
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/370257
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-03-17 18:04:00 +00:00
..
DoWhileBodyMustBeInlinedIntoAScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DoWhileTestCannotBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
EnumsCanBeInlinedSafely.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ExponentialGrowth.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForBodyMustBeInlinedIntoAScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForInitializerExpressionsCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForWithoutReturnInsideCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForWithReturnInsideCannotBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfBodyMustBeInlinedIntoAScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfElseBodyMustBeInlinedIntoAScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfElseChainWithReturnsCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfTestCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfWithReturnsCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlineKeywordOverridesThreshold.sksl Disallow inlining a function with out-parameters. 2021-03-17 18:04:00 +00:00
InlinerAvoidsVariableNameOverlap.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlinerCanBeDisabled.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlinerElidesTempVarForReturnsInsideBlock.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlinerHonorsGLSLOutParamSemantics.sksl Add test to demonstrate out-param semantics violation. 2021-02-16 14:28:49 +00:00
InlinerManglesNames.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlinerUsesTempVarForMultipleReturns.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlinerUsesTempVarForReturnsInsideBlockWithVar.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlineThreshold.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlineWithInoutArgument.sksl Disallow inlining a function with out-parameters. 2021-03-17 18:04:00 +00:00
InlineWithModifiedArgument.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlineWithNestedBigCalls.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlineWithNestedCalls.sksl Disallow inlining a function with out-parameters. 2021-03-17 18:04:00 +00:00
InlineWithUnmodifiedArgument.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlineWithUnnecessaryBlocks.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
NoInline.sksl Add noinline keyword to SkSL. 2021-03-10 15:39:48 +00:00
ShortCircuitEvaluationsCannotInlineRightHandSide.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitch.sksl Eliminate control-flow analysis. 2021-03-11 13:24:54 +00:00
StructsCanBeInlinedSafely.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchWithCastCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchWithoutReturnInsideCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleCanBeInlinedDirectly.sksl Disallow inlining a function with out-parameters. 2021-03-17 18:04:00 +00:00
TernaryResultsCannotBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
TernaryTestCanBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
TrivialArgumentsInlineDirectly.sksl Disallow inlining a function with out-parameters. 2021-03-17 18:04:00 +00:00
WhileBodyMustBeInlinedIntoAScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
WhileTestCannotBeInlined.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00