diff options
Diffstat (limited to 'src/sksl/ir/SkSLVariableReference.cpp')
-rw-r--r-- | src/sksl/ir/SkSLVariableReference.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/sksl/ir/SkSLVariableReference.cpp b/src/sksl/ir/SkSLVariableReference.cpp index fa23e4749b..e6092c940c 100644 --- a/src/sksl/ir/SkSLVariableReference.cpp +++ b/src/sksl/ir/SkSLVariableReference.cpp @@ -93,6 +93,11 @@ std::unique_ptr<Expression> VariableReference::constantPropagate(const IRGenerat if (fRefKind != kRead_RefKind) { return nullptr; } + if (irGenerator.fKind == Program::kPipelineStage_Kind && + fVariable.fStorage == Variable::kGlobal_Storage && + (fVariable.fModifiers.fFlags & Modifiers::kIn_Flag)) { + return irGenerator.getArg(fOffset, fVariable.fName); + } if ((fVariable.fModifiers.fFlags & Modifiers::kConst_Flag) && fVariable.fInitialValue && fVariable.fInitialValue->isConstant()) { return copy_constant(irGenerator, fVariable.fInitialValue); |