aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/ir/SkSLVariableReference.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sksl/ir/SkSLVariableReference.cpp')
-rw-r--r--src/sksl/ir/SkSLVariableReference.cpp5
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);