Reland "Renamed SkSL "offset" to "line""
This reverts commit cc91452f0a65f261283615db9ed3d37b1c3acd15.
Change-Id: I7eff0ddeebef4ce298893f9b3ba410b09647e9a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/453138
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
index 47e80a0..aeae383 100644
--- a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
@@ -447,7 +447,7 @@
for (int32_t i = 0; i < (int32_t) type.fields().size(); i++) {
const Type::Field& field = type.fields()[i];
if (!MemoryLayout::LayoutIsSupported(*field.fType)) {
- fContext.fErrors->error(type.fOffset, "type '" + field.fType->name() +
+ fContext.fErrors->error(type.fLine, "type '" + field.fType->name() +
"' is not permitted here");
return;
}
@@ -456,12 +456,12 @@
const Layout& fieldLayout = field.fModifiers.fLayout;
if (fieldLayout.fOffset >= 0) {
if (fieldLayout.fOffset < (int) offset) {
- fContext.fErrors->error(type.fOffset,
+ fContext.fErrors->error(type.fLine,
"offset of field '" + field.fName + "' must be at "
"least " + to_string((int) offset));
}
if (fieldLayout.fOffset % alignment) {
- fContext.fErrors->error(type.fOffset,
+ fContext.fErrors->error(type.fLine,
"offset of field '" + field.fName + "' must be a multiple"
" of " + to_string((int) alignment));
}
@@ -590,13 +590,13 @@
break;
case Type::TypeKind::kArray: {
if (!MemoryLayout::LayoutIsSupported(*type)) {
- fContext.fErrors->error(type->fOffset,
+ fContext.fErrors->error(type->fLine,
"type '" + type->name() + "' is not permitted here");
return this->nextId(nullptr);
}
if (type->columns() > 0) {
SpvId typeId = this->getType(type->componentType(), layout);
- Literal countLiteral(/*offset=*/-1, type->columns(),
+ Literal countLiteral(/*line=*/-1, type->columns(),
fContext.fTypes.fInt.get());
SpvId countId = this->writeLiteral(countLiteral);
this->writeInstruction(SpvOpTypeArray, result, typeId, countId,
@@ -606,7 +606,7 @@
fDecorationBuffer);
} else {
// We shouldn't have any runtime-sized arrays right now
- fContext.fErrors->error(type->fOffset,
+ fContext.fErrors->error(type->fLine,
"runtime-sized arrays are not supported in SPIR-V");
this->writeInstruction(SpvOpTypeRuntimeArray, result,
this->getType(type->componentType(), layout),
@@ -789,8 +789,7 @@
const FunctionDeclaration& function = c.function();
auto intrinsic = fIntrinsicMap.find(function.intrinsicKind());
if (intrinsic == fIntrinsicMap.end()) {
- fContext.fErrors->error(c.fOffset, "unsupported intrinsic '" + function.description() +
- "'");
+ fContext.fErrors->error(c.fLine, "unsupported intrinsic '" + function.description() + "'");
return -1;
}
int32_t intrinsicId;
@@ -876,8 +875,8 @@
case kSpecial_IntrinsicOpcodeKind:
return this->writeSpecialIntrinsic(c, (SpecialIntrinsic) intrinsicId, out);
default:
- fContext.fErrors->error(c.fOffset, "unsupported intrinsic '" + function.description() +
- "'");
+ fContext.fErrors->error(c.fLine, "unsupported intrinsic '" + function.description() +
+ "'");
return -1;
}
}
@@ -984,9 +983,9 @@
SpvId img = this->writeExpression(*arguments[0], out);
ExpressionArray args;
args.reserve_back(2);
- args.push_back(Literal::MakeInt(fContext, /*offset=*/-1, /*value=*/0));
- args.push_back(Literal::MakeInt(fContext, /*offset=*/-1, /*value=*/0));
- ConstructorCompound ctor(/*offset=*/-1, *fContext.fTypes.fInt2, std::move(args));
+ args.push_back(Literal::MakeInt(fContext, /*line=*/-1, /*value=*/0));
+ args.push_back(Literal::MakeInt(fContext, /*line=*/-1, /*value=*/0));
+ ConstructorCompound ctor(/*line=*/-1, *fContext.fTypes.fInt2, std::move(args));
SpvId coords = this->writeConstantVector(ctor);
if (arguments.size() == 1) {
this->writeInstruction(SpvOpImageRead,
@@ -1051,7 +1050,7 @@
} else {
SkASSERT(arguments.size() == 2);
if (fProgram.fConfig->fSettings.fSharpenTextures) {
- Literal lodBias(/*offset=*/-1, /*value=*/-0.5, fContext.fTypes.fFloat.get());
+ Literal lodBias(/*line=*/-1, /*value=*/-0.5, fContext.fTypes.fFloat.get());
this->writeInstruction(op, type, result, sampler, uv,
SpvImageOperandsBiasMask,
this->writeLiteral(lodBias),
@@ -1091,9 +1090,9 @@
this->writeWord(this->getType(callType), out);
this->writeWord(result, out);
this->writeWord(fn, out);
- this->addRTFlipUniform(c.fOffset);
+ this->addRTFlipUniform(c.fLine);
using namespace dsl;
- DSLExpression rtFlip(DSLWriter::IRGenerator().convertIdentifier(/*offset=*/-1,
+ DSLExpression rtFlip(DSLWriter::IRGenerator().convertIdentifier(/*line=*/-1,
SKSL_RTFLIP_NAME));
SpvId rtFlipY = this->vectorize(*rtFlip.y().release(), callType.columns(), out);
SpvId flipped = this->nextId(&callType);
@@ -1144,8 +1143,8 @@
ExpressionArray finalArgs;
finalArgs.reserve_back(3);
finalArgs.push_back(arguments[0]->clone());
- finalArgs.push_back(Literal::MakeFloat(fContext, /*offset=*/-1, /*value=*/0));
- finalArgs.push_back(Literal::MakeFloat(fContext, /*offset=*/-1, /*value=*/1));
+ finalArgs.push_back(Literal::MakeFloat(fContext, /*line=*/-1, /*value=*/0));
+ finalArgs.push_back(Literal::MakeFloat(fContext, /*line=*/-1, /*value=*/1));
std::vector<SpvId> spvArgs = this->vectorize(finalArgs, out);
this->writeGLSLExtendedInstruction(callType, result, GLSLstd450FClamp, GLSLstd450SClamp,
GLSLstd450UClamp, spvArgs, out);
@@ -1232,8 +1231,8 @@
const ExpressionArray& arguments = c.arguments();
const auto& entry = fFunctionMap.find(&function);
if (entry == fFunctionMap.end()) {
- fContext.fErrors->error(c.fOffset, "function '" + function.description() +
- "' is not defined");
+ fContext.fErrors->error(c.fLine, "function '" + function.description() +
+ "' is not defined");
return -1;
}
// Temp variables are used to write back out-parameters after the function call is complete.
@@ -1333,9 +1332,9 @@
SpvId result = this->nextId(&outputType);
if (inputType.isBoolean()) {
// Use OpSelect to convert the boolean argument to a literal 1.0 or 0.0.
- Literal one(/*offset=*/-1, /*value=*/1, fContext.fTypes.fFloat.get());
+ Literal one(/*line=*/-1, /*value=*/1, fContext.fTypes.fFloat.get());
const SpvId oneID = this->writeLiteral(one);
- Literal zero(/*offset=*/-1, /*value=*/0, fContext.fTypes.fFloat.get());
+ Literal zero(/*line=*/-1, /*value=*/0, fContext.fTypes.fFloat.get());
const SpvId zeroID = this->writeLiteral(zero);
this->writeInstruction(SpvOpSelect, this->getType(outputType), result,
inputId, oneID, zeroID, out);
@@ -1369,9 +1368,9 @@
SpvId result = this->nextId(&outputType);
if (inputType.isBoolean()) {
// Use OpSelect to convert the boolean argument to a literal 1 or 0.
- Literal one(/*offset=*/-1, /*value=*/1, fContext.fTypes.fInt.get());
+ Literal one(/*line=*/-1, /*value=*/1, fContext.fTypes.fInt.get());
const SpvId oneID = this->writeLiteral(one);
- Literal zero(/*offset=*/-1, /*value=*/0, fContext.fTypes.fInt.get());
+ Literal zero(/*line=*/-1, /*value=*/0, fContext.fTypes.fInt.get());
const SpvId zeroID = this->writeLiteral(zero);
this->writeInstruction(SpvOpSelect, this->getType(outputType), result,
inputId, oneID, zeroID, out);
@@ -1406,9 +1405,9 @@
SpvId result = this->nextId(&outputType);
if (inputType.isBoolean()) {
// Use OpSelect to convert the boolean argument to a literal 1u or 0u.
- Literal one(/*offset=*/-1, /*value=*/1, fContext.fTypes.fUInt.get());
+ Literal one(/*line=*/-1, /*value=*/1, fContext.fTypes.fUInt.get());
const SpvId oneID = this->writeLiteral(one);
- Literal zero(/*offset=*/-1, /*value=*/0, fContext.fTypes.fUInt.get());
+ Literal zero(/*line=*/-1, /*value=*/0, fContext.fTypes.fUInt.get());
const SpvId zeroID = this->writeLiteral(zero);
this->writeInstruction(SpvOpSelect, this->getType(outputType), result,
inputId, oneID, zeroID, out);
@@ -1443,19 +1442,19 @@
SpvId result = this->nextId(nullptr);
if (inputType.isSigned()) {
// Synthesize a boolean result by comparing the input against a signed zero literal.
- Literal zero(/*offset=*/-1, /*value=*/0, fContext.fTypes.fInt.get());
+ Literal zero(/*line=*/-1, /*value=*/0, fContext.fTypes.fInt.get());
const SpvId zeroID = this->writeLiteral(zero);
this->writeInstruction(SpvOpINotEqual, this->getType(outputType), result,
inputId, zeroID, out);
} else if (inputType.isUnsigned()) {
// Synthesize a boolean result by comparing the input against an unsigned zero literal.
- Literal zero(/*offset=*/-1, /*value=*/0, fContext.fTypes.fUInt.get());
+ Literal zero(/*line=*/-1, /*value=*/0, fContext.fTypes.fUInt.get());
const SpvId zeroID = this->writeLiteral(zero);
this->writeInstruction(SpvOpINotEqual, this->getType(outputType), result,
inputId, zeroID, out);
} else if (inputType.isFloat()) {
// Synthesize a boolean result by comparing the input against a floating-point zero literal.
- Literal zero(/*offset=*/-1, /*value=*/0, fContext.fTypes.fFloat.get());
+ Literal zero(/*line=*/-1, /*value=*/0, fContext.fTypes.fFloat.get());
const SpvId zeroID = this->writeLiteral(zero);
this->writeInstruction(SpvOpFUnordNotEqual, this->getType(outputType), result,
inputId, zeroID, out);
@@ -1468,7 +1467,7 @@
void SPIRVCodeGenerator::writeUniformScaleMatrix(SpvId id, SpvId diagonal, const Type& type,
OutputStream& out) {
- Literal zero(/*offset=*/-1, /*value=*/0, fContext.fTypes.fFloat.get());
+ Literal zero(/*line=*/-1, /*value=*/0, fContext.fTypes.fFloat.get());
SpvId zeroId = this->writeLiteral(zero);
std::vector<SpvId> columnIds;
columnIds.reserve(type.columns());
@@ -1507,9 +1506,9 @@
dstType.rows(),
1));
SkASSERT(dstType.componentType().isFloat());
- Literal zero(/*offset=*/-1, /*value=*/0.0, &dstType.componentType());
+ Literal zero(/*line=*/-1, /*value=*/0.0, &dstType.componentType());
const SpvId zeroId = this->writeLiteral(zero);
- Literal one(/*offset=*/-1, /*value=*/1.0, &dstType.componentType());
+ Literal one(/*line=*/-1, /*value=*/1.0, &dstType.componentType());
const SpvId oneId = this->writeLiteral(one);
SpvId columns[4];
@@ -1864,7 +1863,7 @@
case Expression::Kind::kFieldAccess: {
const FieldAccess& fieldExpr = expr.as<FieldAccess>();
chain = this->getAccessChain(*fieldExpr.base(), out);
- Literal index(/*offset=*/-1, fieldExpr.fieldIndex(), fContext.fTypes.fInt.get());
+ Literal index(/*line=*/-1, fieldExpr.fieldIndex(), fContext.fTypes.fInt.get());
chain.push_back(this->writeLiteral(index));
break;
}
@@ -2013,7 +2012,7 @@
const Variable& var = *expr.as<VariableReference>().variable();
int uniformIdx = this->findUniformFieldIndex(var);
if (uniformIdx >= 0) {
- Literal uniformIdxLiteral{/*offset=*/-1, (double)uniformIdx,
+ Literal uniformIdxLiteral{/*line=*/-1, (double)uniformIdx,
fContext.fTypes.fInt.get()};
SpvId memberId = this->nextId(nullptr);
SpvId typeId = this->getPointerType(type, SpvStorageClassUniform);
@@ -2052,12 +2051,12 @@
}
SpvId base = lvalue->getPointer();
if (base == (SpvId) -1) {
- fContext.fErrors->error(swizzle.fOffset, "unable to retrieve lvalue from swizzle");
+ fContext.fErrors->error(swizzle.fLine, "unable to retrieve lvalue from swizzle");
}
if (swizzle.components().size() == 1) {
SpvId member = this->nextId(nullptr);
SpvId typeId = this->getPointerType(type, get_storage_class(*swizzle.base()));
- Literal index(/*offset=*/-1, swizzle.components()[0], fContext.fTypes.fInt.get());
+ Literal index(/*line=*/-1, swizzle.components()[0], fContext.fTypes.fInt.get());
SpvId indexId = this->writeLiteral(index);
this->writeInstruction(SpvOpAccessChain, typeId, member, base, indexId, out);
return std::make_unique<PointerLValue>(*this,
@@ -2105,7 +2104,7 @@
// Handle inserting use of uniform to flip y when referencing sk_FragCoord.
if (variable->modifiers().fLayout.fBuiltin == SK_FRAGCOORD_BUILTIN) {
- this->addRTFlipUniform(ref.fOffset);
+ this->addRTFlipUniform(ref.fLine);
// Use sk_RTAdjust to compute the flipped coordinate
using namespace dsl;
const char* DEVICE_COORDS_NAME = "__device_FragCoords";
@@ -2113,13 +2112,13 @@
// Use a uniform to flip the Y coordinate. The new expression will be written in
// terms of __device_FragCoords, which is a fake variable that means "access the
// underlying fragcoords directly without flipping it".
- DSLExpression rtFlip(DSLWriter::IRGenerator().convertIdentifier(/*offset=*/-1,
+ DSLExpression rtFlip(DSLWriter::IRGenerator().convertIdentifier(/*line=*/-1,
SKSL_RTFLIP_NAME));
if (!symbols[DEVICE_COORDS_NAME]) {
AutoAttachPoolToThread attach(fProgram.fPool.get());
Modifiers modifiers;
modifiers.fLayout.fBuiltin = DEVICE_FRAGCOORDS_BUILTIN;
- auto coordsVar = std::make_unique<Variable>(/*offset=*/-1,
+ auto coordsVar = std::make_unique<Variable>(/*line=*/-1,
fContext.fModifiersPool->add(modifiers),
DEVICE_COORDS_NAME,
fContext.fTypes.fFloat4.get(),
@@ -2141,20 +2140,20 @@
// Handle flipping sk_Clockwise.
if (variable->modifiers().fLayout.fBuiltin == SK_CLOCKWISE_BUILTIN) {
- this->addRTFlipUniform(ref.fOffset);
+ this->addRTFlipUniform(ref.fLine);
using namespace dsl;
const char* DEVICE_CLOCKWISE_NAME = "__device_Clockwise";
SymbolTable& symbols = *dsl::DSLWriter::SymbolTable();
// Use a uniform to flip the Y coordinate. The new expression will be written in
// terms of __device_Clockwise, which is a fake variable that means "access the
// underlying FrontFacing directly".
- DSLExpression rtFlip(DSLWriter::IRGenerator().convertIdentifier(/*offset=*/-1,
+ DSLExpression rtFlip(DSLWriter::IRGenerator().convertIdentifier(/*line=*/-1,
SKSL_RTFLIP_NAME));
if (!symbols[DEVICE_CLOCKWISE_NAME]) {
AutoAttachPoolToThread attach(fProgram.fPool.get());
Modifiers modifiers;
modifiers.fLayout.fBuiltin = DEVICE_CLOCKWISE_BUILTIN;
- auto clockwiseVar = std::make_unique<Variable>(/*offset=*/-1,
+ auto clockwiseVar = std::make_unique<Variable>(/*line=*/-1,
fContext.fModifiersPool->add(modifiers),
DEVICE_CLOCKWISE_NAME,
fContext.fTypes.fBool.get(),
@@ -2225,7 +2224,7 @@
} else if (is_bool(fContext, operandType)) {
this->writeInstruction(ifBool, this->getType(resultType), result, lhs, rhs, out);
} else {
- fContext.fErrors->error(operandType.fOffset,
+ fContext.fErrors->error(operandType.fLine,
"unsupported operand for binary expression: " + operandType.description());
}
return result;
@@ -2297,12 +2296,12 @@
static std::unique_ptr<Expression> create_literal_1(const Context& context, const Type& type) {
SkASSERT(type.isInteger() || type.isFloat());
- return Literal::Make(/*offset=*/-1, /*value=*/1.0, &type);
+ return Literal::Make(/*line=*/-1, /*value=*/1.0, &type);
}
SpvId SPIRVCodeGenerator::writeReciprocal(const Type& type, SpvId value, OutputStream& out) {
SkASSERT(type.isFloat());
- SpvId one = this->writeLiteral({/*offset=*/-1, /*value=*/1, &type});
+ SpvId one = this->writeLiteral({/*line=*/-1, /*value=*/1, &type});
SpvId reciprocal = this->nextId(&type);
this->writeInstruction(SpvOpFDiv, this->getType(type), reciprocal, one, value, out);
return reciprocal;
@@ -2436,7 +2435,7 @@
resultType, out);
}
} else {
- fContext.fErrors->error(leftType.fOffset, "unsupported mixed-type expression");
+ fContext.fErrors->error(leftType.fLine, "unsupported mixed-type expression");
return -1;
}
} else {
@@ -2707,7 +2706,7 @@
// This converts `expr / 2` into `expr * 0.5`
// This improves codegen, especially for certain types of divides (e.g. vector/scalar).
op = Operator(Token::Kind::TK_STAR);
- Literal reciprocal{right->fOffset, 1.0f / rhsValue, &right->type()};
+ Literal reciprocal{right->fLine, 1.0f / rhsValue, &right->type()};
rhs = this->writeExpression(reciprocal, out);
} else {
// Write the right-hand side expression normally.
@@ -2724,7 +2723,7 @@
SpvId SPIRVCodeGenerator::writeLogicalAnd(const Expression& left, const Expression& right,
OutputStream& out) {
- Literal falseLiteral(/*offset=*/-1, /*value=*/false, fContext.fTypes.fBool.get());
+ Literal falseLiteral(/*line=*/-1, /*value=*/false, fContext.fTypes.fBool.get());
SpvId falseConstant = this->writeLiteral(falseLiteral);
SpvId lhs = this->writeExpression(left, out);
SpvId rhsLabel = this->nextId(nullptr);
@@ -2745,7 +2744,7 @@
SpvId SPIRVCodeGenerator::writeLogicalOr(const Expression& left, const Expression& right,
OutputStream& out) {
- Literal trueLiteral(/*offset=*/-1, /*value=*/true, fContext.fTypes.fBool.get());
+ Literal trueLiteral(/*line=*/-1, /*value=*/true, fContext.fTypes.fBool.get());
SpvId trueConstant = this->writeLiteral(trueLiteral);
SpvId lhs = this->writeExpression(left, out);
SpvId rhsLabel = this->nextId(nullptr);
@@ -3018,7 +3017,7 @@
const Variable& intfVar = intf.variable();
const Type& type = intfVar.type();
if (!MemoryLayout::LayoutIsSupported(type)) {
- fContext.fErrors->error(type.fOffset, "type '" + type.name() + "' is not permitted here");
+ fContext.fErrors->error(type.fLine, "type '" + type.name() + "' is not permitted here");
return this->nextId(nullptr);
}
SpvStorageClass_ storageClass = get_storage_class(intf.variable(), SpvStorageClassFunction);
@@ -3042,16 +3041,16 @@
{
AutoAttachPoolToThread attach(fProgram.fPool.get());
const Type* rtFlipStructType = fProgram.fSymbols->takeOwnershipOfSymbol(
- Type::MakeStructType(type.fOffset, type.name(), std::move(fields)));
+ Type::MakeStructType(type.fLine, type.name(), std::move(fields)));
const Variable* modifiedVar = fProgram.fSymbols->takeOwnershipOfSymbol(
- std::make_unique<Variable>(intfVar.fOffset,
+ std::make_unique<Variable>(intfVar.fLine,
&intfVar.modifiers(),
intfVar.name(),
rtFlipStructType,
intfVar.isBuiltin(),
intfVar.storage()));
fSPIRVBonusVariables.insert(modifiedVar);
- InterfaceBlock modifiedCopy(intf.fOffset,
+ InterfaceBlock modifiedCopy(intf.fLine,
*modifiedVar,
intf.typeName(),
intf.instanceName(),
@@ -3059,7 +3058,7 @@
intf.typeOwner());
result = this->writeInterfaceBlock(modifiedCopy, false);
fProgram.fSymbols->add(std::make_unique<Field>(
- /*offset=*/-1, modifiedVar, rtFlipStructType->fields().size() - 1));
+ /*line=*/-1, modifiedVar, rtFlipStructType->fields().size() - 1));
}
fVariableMap[&intfVar] = result;
fWroteRTFlip = true;
@@ -3374,30 +3373,30 @@
const Symbol* skFragColorSymbol = (*symbolTable)["sk_FragColor"];
SkASSERT(skFragColorSymbol);
const Variable& skFragColorVar = skFragColorSymbol->as<Variable>();
- auto skFragColorRef = std::make_unique<VariableReference>(/*offset=*/-1, &skFragColorVar,
+ auto skFragColorRef = std::make_unique<VariableReference>(/*line=*/-1, &skFragColorVar,
VariableReference::RefKind::kWrite);
// Synthesize a call to the `main()` function.
if (main.returnType() != skFragColorRef->type()) {
- fContext.fErrors->error(main.fOffset, "SPIR-V does not support returning '" +
- main.returnType().description() + "' from main()");
+ fContext.fErrors->error(main.fLine, "SPIR-V does not support returning '" +
+ main.returnType().description() + "' from main()");
return {};
}
ExpressionArray args;
if (main.parameters().size() == 1) {
if (main.parameters()[0]->type() != *fContext.fTypes.fFloat2) {
- fContext.fErrors->error(main.fOffset,
+ fContext.fErrors->error(main.fLine,
"SPIR-V does not support parameter of type '" +
main.parameters()[0]->type().description() + "' to main()");
return {};
}
args.push_back(dsl::Float2(0).release());
}
- auto callMainFn = std::make_unique<FunctionCall>(/*offset=*/-1, &main.returnType(), &main,
+ auto callMainFn = std::make_unique<FunctionCall>(/*line=*/-1, &main.returnType(), &main,
std::move(args));
// Synthesize `skFragColor = main()` as a BinaryExpression.
auto assignmentStmt = std::make_unique<ExpressionStatement>(std::make_unique<BinaryExpression>(
- /*offset=*/-1,
+ /*line=*/-1,
std::move(skFragColorRef),
Token::Kind::TK_EQ,
std::move(callMainFn),
@@ -3406,14 +3405,14 @@
// Function bodies are always wrapped in a Block.
StatementArray entrypointStmts;
entrypointStmts.push_back(std::move(assignmentStmt));
- auto entrypointBlock = Block::Make(/*offset=*/-1, std::move(entrypointStmts),
+ auto entrypointBlock = Block::Make(/*line=*/-1, std::move(entrypointStmts),
symbolTable, /*isScope=*/true);
// Declare an entrypoint function.
EntrypointAdapter adapter;
adapter.fLayout = {};
adapter.fModifiers = Modifiers{adapter.fLayout, Modifiers::kHasSideEffects_Flag};
adapter.entrypointDecl =
- std::make_unique<FunctionDeclaration>(/*offset=*/-1,
+ std::make_unique<FunctionDeclaration>(/*line=*/-1,
&adapter.fModifiers,
"_entrypoint",
/*parameters=*/std::vector<const Variable*>{},
@@ -3421,7 +3420,7 @@
/*builtin=*/false);
// Define it.
adapter.entrypointDef = FunctionDefinition::Convert(fContext,
- /*offset=*/-1,
+ /*line=*/-1,
*adapter.entrypointDecl,
std::move(entrypointBlock),
/*builtin=*/false);
@@ -3444,7 +3443,7 @@
fTopLevelUniformMap[var] = (int)fields.size();
fields.emplace_back(var->modifiers(), var->name(), &var->type());
}
- fUniformBuffer.fStruct = Type::MakeStructType(/*offset=*/-1, kUniformBufferName,
+ fUniformBuffer.fStruct = Type::MakeStructType(/*line=*/-1, kUniformBufferName,
std::move(fields));
// Create a global variable to contain this struct.
@@ -3454,7 +3453,7 @@
Modifiers modifiers{layout, Modifiers::kUniform_Flag};
fUniformBuffer.fInnerVariable = std::make_unique<Variable>(
- /*offset=*/-1, fProgram.fModifiers->add(modifiers), kUniformBufferName,
+ /*line=*/-1, fProgram.fModifiers->add(modifiers), kUniformBufferName,
fUniformBuffer.fStruct.get(), /*builtin=*/false, Variable::Storage::kGlobal);
// Create an interface block object for this global variable.
@@ -3466,7 +3465,7 @@
fUniformBufferId = this->writeInterfaceBlock(*fUniformBuffer.fInterfaceBlock);
}
-void SPIRVCodeGenerator::addRTFlipUniform(int offset) {
+void SPIRVCodeGenerator::addRTFlipUniform(int line) {
if (fWroteRTFlip) {
return;
}
@@ -3475,7 +3474,7 @@
fWroteRTFlip = true;
std::vector<Type::Field> fields;
if (fProgram.fConfig->fSettings.fRTFlipOffset < 0) {
- fContext.fErrors->error(offset, "RTFlipOffset is negative");
+ fContext.fErrors->error(line, "RTFlipOffset is negative");
}
fields.emplace_back(Modifiers(Layout(/*flags=*/0,
/*location=*/-1,
@@ -3490,14 +3489,14 @@
fContext.fTypes.fFloat2.get());
skstd::string_view name = "sksl_synthetic_uniforms";
const Type* intfStruct =
- fSynthetics.takeOwnershipOfSymbol(Type::MakeStructType(/*offset=*/-1, name, fields));
+ fSynthetics.takeOwnershipOfSymbol(Type::MakeStructType(/*line=*/-1, name, fields));
int binding = fProgram.fConfig->fSettings.fRTFlipBinding;
if (binding == -1) {
- fContext.fErrors->error(offset, "layout(binding=...) is required in SPIR-V");
+ fContext.fErrors->error(line, "layout(binding=...) is required in SPIR-V");
}
int set = fProgram.fConfig->fSettings.fRTFlipSet;
if (set == -1) {
- fContext.fErrors->error(offset, "layout(set=...) is required in SPIR-V");
+ fContext.fErrors->error(line, "layout(set=...) is required in SPIR-V");
}
bool usePushConstants = fProgram.fConfig->fSettings.fUsePushConstants;
int flags = usePushConstants ? Layout::Flag::kPushConstant_Flag : 0;
@@ -3516,7 +3515,7 @@
modsPtr = fProgram.fModifiers->add(modifiers);
}
const Variable* intfVar = fSynthetics.takeOwnershipOfSymbol(
- std::make_unique<Variable>(/*offset=*/-1,
+ std::make_unique<Variable>(/*line=*/-1,
modsPtr,
name,
intfStruct,
@@ -3525,9 +3524,9 @@
fSPIRVBonusVariables.insert(intfVar);
{
AutoAttachPoolToThread attach(fProgram.fPool.get());
- fProgram.fSymbols->add(std::make_unique<Field>(/*offset=*/-1, intfVar, /*field=*/0));
+ fProgram.fSymbols->add(std::make_unique<Field>(/*line=*/-1, intfVar, /*field=*/0));
}
- InterfaceBlock intf(/*offset=*/-1,
+ InterfaceBlock intf(/*line=*/-1,
*intfVar,
name,
/*instanceName=*/"",
@@ -3554,7 +3553,7 @@
}
// Make sure we have a main() function.
if (!main) {
- fContext.fErrors->error(/*offset=*/-1, "program does not contain a main() function");
+ fContext.fErrors->error(/*line=*/-1, "program does not contain a main() function");
return;
}
// Emit interface blocks.