aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-03-31 14:53:17 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-31 20:33:14 +0000
commitc6f5e10709649708e4c5e6fff7ccf633e1c7bd10 (patch)
tree3aca1e845081dc38ad0669eb101b8a9419dc99be /src
parent0df1b04db87c3d86ee0b0bd6aa2cb5b6be32cac2 (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.cpp2
-rw-r--r--src/sksl/SkSLSPIRVCodeGenerator.cpp9
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: