diff options
author | 2017-03-31 14:53:17 -0400 | |
---|---|---|
committer | 2017-03-31 20:33:14 +0000 | |
commit | c6f5e10709649708e4c5e6fff7ccf633e1c7bd10 (patch) | |
tree | 3aca1e845081dc38ad0669eb101b8a9419dc99be /src | |
parent | 0df1b04db87c3d86ee0b0bd6aa2cb5b6be32cac2 (diff) |
fixed SPIR-V compilation error with unmodified variables
Change-Id: I22981a60c21a2e16d41d69c53e099f221a202a58
Reviewed-on: https://skia-review.googlesource.com/11000
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/sksl/SkSLParser.cpp | 2 | ||||
-rw-r--r-- | src/sksl/SkSLSPIRVCodeGenerator.cpp | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/sksl/SkSLParser.cpp b/src/sksl/SkSLParser.cpp index 1004de85b1..cdbf25e0d5 100644 --- a/src/sksl/SkSLParser.cpp +++ b/src/sksl/SkSLParser.cpp @@ -498,7 +498,7 @@ std::unique_ptr<ASTVarDeclarations> Parser::varDeclarationEnd(Modifiers mods, /* modifiers type IDENTIFIER (LBRACKET INT_LITERAL RBRACKET)? */ std::unique_ptr<ASTParameter> Parser::parameter() { - Modifiers modifiers = this->modifiersWithDefaults(Modifiers::kIn_Flag); + Modifiers modifiers = this->modifiersWithDefaults(0); std::unique_ptr<ASTType> type = this->type(); if (!type) { return nullptr; diff --git a/src/sksl/SkSLSPIRVCodeGenerator.cpp b/src/sksl/SkSLSPIRVCodeGenerator.cpp index 2b8feb93b9..d713d6fddd 100644 --- a/src/sksl/SkSLSPIRVCodeGenerator.cpp +++ b/src/sksl/SkSLSPIRVCodeGenerator.cpp @@ -1642,8 +1642,13 @@ SpvStorageClass_ get_storage_class(const Modifiers& modifiers) { SpvStorageClass_ get_storage_class(const Expression& expr) { switch (expr.fKind) { - case Expression::kVariableReference_Kind: - return get_storage_class(((VariableReference&) expr).fVariable.fModifiers); + case Expression::kVariableReference_Kind: { + const Variable& var = ((VariableReference&) expr).fVariable; + if (var.fStorage != Variable::kGlobal_Storage) { + return SpvStorageClassFunction; + } + return get_storage_class(var.fModifiers); + } case Expression::kFieldAccess_Kind: return get_storage_class(*((FieldAccess&) expr).fBase); case Expression::kIndex_Kind: |