Skip to content

Commit 041fd0a

Browse files
Ethan NicholasSkia Commit-Bot
authored andcommitted
moved SkSL Variable data into IRNode
Change-Id: I53af66c1b65971c204ac7c515e0d0e39481b015d Reviewed-on: https://skia-review.googlesource.com/c/skia/+/323097 Reviewed-by: Brian Osman <[email protected]> Commit-Queue: Ethan Nicholas <[email protected]>
1 parent 54c1b3d commit 041fd0a

39 files changed

+597
-375
lines changed

src/core/SkRuntimeEffect.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ SkRuntimeEffect::EffectResult SkRuntimeEffect::Make(SkString sksl) {
160160
const SkSL::Type& varType = var.type();
161161

162162
// Varyings (only used in conjunction with drawVertices)
163-
if (var.fModifiers.fFlags & SkSL::Modifiers::kVarying_Flag) {
163+
if (var.modifiers().fFlags & SkSL::Modifiers::kVarying_Flag) {
164164
varyings.push_back({var.name(),
165165
varType.typeKind() == SkSL::Type::TypeKind::kVector
166166
? varType.columns()
@@ -172,7 +172,7 @@ SkRuntimeEffect::EffectResult SkRuntimeEffect::Make(SkString sksl) {
172172
sampleUsages.push_back(SkSL::Analysis::GetSampleUsage(*program, var));
173173
}
174174
// 'uniform' variables
175-
else if (var.fModifiers.fFlags & SkSL::Modifiers::kUniform_Flag) {
175+
else if (var.modifiers().fFlags & SkSL::Modifiers::kUniform_Flag) {
176176
Uniform uni;
177177
uni.fName = var.name();
178178
uni.fFlags = 0;
@@ -189,7 +189,7 @@ SkRuntimeEffect::EffectResult SkRuntimeEffect::Make(SkString sksl) {
189189
RETURN_FAILURE("Invalid uniform type: '%s'", type->displayName().c_str());
190190
}
191191

192-
const SkSL::StringFragment& marker(var.fModifiers.fLayout.fMarker);
192+
const SkSL::StringFragment& marker(var.modifiers().fLayout.fMarker);
193193
if (marker.fLength) {
194194
uni.fFlags |= Uniform::kMarker_Flag;
195195
allowColorFilter = false;
@@ -199,7 +199,7 @@ SkRuntimeEffect::EffectResult SkRuntimeEffect::Make(SkString sksl) {
199199
}
200200
}
201201

202-
if (var.fModifiers.fLayout.fFlags & SkSL::Layout::Flag::kSRGBUnpremul_Flag) {
202+
if (var.modifiers().fLayout.fFlags & SkSL::Layout::Flag::kSRGBUnpremul_Flag) {
203203
uni.fFlags |= Uniform::kSRGBUnpremul_Flag;
204204
}
205205

src/sksl/SkSLAnalysis.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ class BuiltinVariableVisitor : public ProgramVisitor {
139139
bool visitExpression(const Expression& e) override {
140140
if (e.is<VariableReference>()) {
141141
const VariableReference& var = e.as<VariableReference>();
142-
return var.fVariable->fModifiers.fLayout.fBuiltin == fBuiltin;
142+
return var.fVariable->modifiers().fLayout.fBuiltin == fBuiltin;
143143
}
144144
return INHERITED::visitExpression(e);
145145
}
@@ -240,8 +240,8 @@ class IsAssignableVisitor {
240240
case Expression::Kind::kVariableReference: {
241241
VariableReference& varRef = expr.as<VariableReference>();
242242
const Variable* var = varRef.fVariable;
243-
if (var->fModifiers.fFlags & (Modifiers::kConst_Flag | Modifiers::kUniform_Flag |
244-
Modifiers::kVarying_Flag)) {
243+
if (var->modifiers().fFlags & (Modifiers::kConst_Flag | Modifiers::kUniform_Flag |
244+
Modifiers::kVarying_Flag)) {
245245
fErrors->error(expr.fOffset,
246246
"cannot modify immutable variable '" + var->name() + "'");
247247
} else if (fAssignableVar) {

src/sksl/SkSLAnalysis.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct FunctionDefinition;
2121
struct Program;
2222
struct ProgramElement;
2323
struct Statement;
24-
struct Variable;
24+
class Variable;
2525
struct VariableReference;
2626

2727
/**

src/sksl/SkSLByteCodeGenerator.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,11 @@ int ByteCodeGenerator::SlotCount(const Type& type) {
117117
}
118118

119119
static inline bool is_uniform(const SkSL::Variable& var) {
120-
return var.fModifiers.fFlags & Modifiers::kUniform_Flag;
120+
return var.modifiers().fFlags & Modifiers::kUniform_Flag;
121121
}
122122

123123
static inline bool is_in(const SkSL::Variable& var) {
124-
return var.fModifiers.fFlags & Modifiers::kIn_Flag;
124+
return var.modifiers().fFlags & Modifiers::kIn_Flag;
125125
}
126126

127127
void ByteCodeGenerator::gatherUniforms(const Type& type, const String& name) {
@@ -165,7 +165,7 @@ bool ByteCodeGenerator::generateCode() {
165165
if (declVar->type() == *fContext.fFragmentProcessor_Type) {
166166
fOutput->fChildFPCount++;
167167
}
168-
if (declVar->fModifiers.fLayout.fBuiltin >= 0 || is_in(*declVar)) {
168+
if (declVar->modifiers().fLayout.fBuiltin >= 0 || is_in(*declVar)) {
169169
continue;
170170
}
171171
if (is_uniform(*declVar)) {
@@ -218,8 +218,8 @@ std::unique_ptr<ByteCodeFunction> ByteCodeGenerator::writeFunction(const Functio
218218
static int expression_as_builtin(const Expression& e) {
219219
if (e.is<VariableReference>()) {
220220
const Variable& var(*e.as<VariableReference>().fVariable);
221-
if (var.fStorage == Variable::kGlobal_Storage) {
222-
return var.fModifiers.fLayout.fBuiltin;
221+
if (var.storage() == Variable::kGlobal_Storage) {
222+
return var.modifiers().fLayout.fBuiltin;
223223
}
224224
}
225225
return -1;
@@ -423,7 +423,7 @@ int ByteCodeGenerator::StackUsage(ByteCodeInstruction inst, int count_) {
423423
ByteCodeGenerator::Location ByteCodeGenerator::getLocation(const Variable& var) {
424424
// given that we seldom have more than a couple of variables, linear search is probably the most
425425
// efficient way to handle lookups
426-
switch (var.fStorage) {
426+
switch (var.storage()) {
427427
case Variable::kLocal_Storage: {
428428
for (int i = fLocals.size() - 1; i >= 0; --i) {
429429
if (fLocals[i] == &var) {
@@ -486,7 +486,7 @@ ByteCodeGenerator::Location ByteCodeGenerator::getLocation(const Variable& var)
486486
if (e.is<GlobalVarDeclaration>()) {
487487
const GlobalVarDeclaration& decl = e.as<GlobalVarDeclaration>();
488488
const Variable* declVar = decl.fDecl->fVar;
489-
if (declVar->fModifiers.fLayout.fBuiltin >= 0 || is_in(*declVar)) {
489+
if (declVar->modifiers().fLayout.fBuiltin >= 0 || is_in(*declVar)) {
490490
continue;
491491
}
492492
if (isUniform != is_uniform(*declVar)) {
@@ -1265,7 +1265,7 @@ void ByteCodeGenerator::writeFunctionCall(const FunctionCall& f) {
12651265
for (int i = 0; i < argCount; ++i) {
12661266
const auto& param = f.function().fParameters[i];
12671267
const auto& arg = f.arguments()[i];
1268-
if (param->fModifiers.fFlags & Modifiers::kOut_Flag) {
1268+
if (param->modifiers().fFlags & Modifiers::kOut_Flag) {
12691269
lvalues.emplace_back(this->getLValue(*arg));
12701270
lvalues.back()->load();
12711271
} else {
@@ -1298,7 +1298,7 @@ void ByteCodeGenerator::writeFunctionCall(const FunctionCall& f) {
12981298
for (int i = argCount - 1; i >= 0; --i) {
12991299
const auto& param = f.function().fParameters[i];
13001300
const auto& arg = f.arguments()[i];
1301-
if (param->fModifiers.fFlags & Modifiers::kOut_Flag) {
1301+
if (param->modifiers().fFlags & Modifiers::kOut_Flag) {
13021302
pop();
13031303
lvalues.back()->store(true);
13041304
lvalues.pop_back();
@@ -1834,7 +1834,7 @@ ByteCodeFunction::ByteCodeFunction(const FunctionDeclaration* declaration)
18341834
fParameterCount = 0;
18351835
for (const auto& p : declaration->fParameters) {
18361836
int slots = ByteCodeGenerator::SlotCount(p->type());
1837-
fParameters.push_back({ slots, (bool)(p->fModifiers.fFlags & Modifiers::kOut_Flag) });
1837+
fParameters.push_back({ slots, (bool)(p->modifiers().fFlags & Modifiers::kOut_Flag) });
18381838
fParameterCount += slots;
18391839
}
18401840
}

0 commit comments

Comments
 (0)