Add Variable::fBuiltin, to track Variables owned by pre-includes
Similar to the same field on Enum and FunctionDeclaration, will be used
to facilitate cloning builtin variables into Programs that use them.
Bug: skia:10589
Change-Id: Ic63701c61ee4658a5ec72adb506cc96aa0b2836f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/321196
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
diff --git a/src/sksl/SkSLCompiler.cpp b/src/sksl/SkSLCompiler.cpp
index 2b9bed1..b757c8d 100644
--- a/src/sksl/SkSLCompiler.cpp
+++ b/src/sksl/SkSLCompiler.cpp
@@ -240,11 +240,13 @@
StringFragment fpAliasName("shader");
fRootSymbolTable->addWithoutOwnership(fpAliasName, fContext->fFragmentProcessor_Type.get());
+ // sk_Caps is "builtin", but all references to it are resolved to Settings, so we don't need to
+ // treat it as builtin (ie, no need to clone it into the Program).
StringFragment skCapsName("sk_Caps");
- fRootSymbolTable->add(
- skCapsName,
- std::make_unique<Variable>(/*offset=*/-1, Modifiers(), skCapsName,
- fContext->fSkCaps_Type.get(), Variable::kGlobal_Storage));
+ fRootSymbolTable->add(skCapsName,
+ std::make_unique<Variable>(/*offset=*/-1, Modifiers(), skCapsName,
+ fContext->fSkCaps_Type.get(),
+ /*builtin=*/false, Variable::kGlobal_Storage));
fIRGenerator->fIntrinsics = fGPUIntrinsics.get();
std::vector<std::unique_ptr<ProgramElement>> gpuIntrinsics;