Index: src/sksl/SkSLSPIRVCodeGenerator.h |
diff --git a/src/sksl/SkSLSPIRVCodeGenerator.h b/src/sksl/SkSLSPIRVCodeGenerator.h |
index 885c6b8b706bc1ea6043b2d41af122d2113f9bcf..a20ad9f40b976fd693229936f34628a83e146142 100644 |
--- a/src/sksl/SkSLSPIRVCodeGenerator.h |
+++ b/src/sksl/SkSLSPIRVCodeGenerator.h |
@@ -61,8 +61,9 @@ public: |
virtual void store(SpvId value, std::ostream& out) = 0; |
}; |
- SPIRVCodeGenerator() |
- : fCapabilities(1 << SpvCapabilityShader) |
+ SPIRVCodeGenerator(const Context* context) |
+ : fContext(*context) |
+ , fCapabilities(1 << SpvCapabilityShader) |
, fIdCount(1) |
, fBoolTrue(0) |
, fBoolFalse(0) |
@@ -92,9 +93,9 @@ private: |
SpvId getType(const Type& type); |
- SpvId getFunctionType(std::shared_ptr<FunctionDeclaration> function); |
+ SpvId getFunctionType(const FunctionDeclaration& function); |
- SpvId getPointerType(std::shared_ptr<Type> type, SpvStorageClass_ storageClass); |
+ SpvId getPointerType(const Type& type, SpvStorageClass_ storageClass); |
std::vector<SpvId> getAccessChain(Expression& expr, std::ostream& out); |
@@ -108,11 +109,11 @@ private: |
SpvId writeInterfaceBlock(InterfaceBlock& intf); |
- SpvId writeFunctionStart(std::shared_ptr<FunctionDeclaration> f, std::ostream& out); |
+ SpvId writeFunctionStart(const FunctionDeclaration& f, std::ostream& out); |
- SpvId writeFunctionDeclaration(std::shared_ptr<FunctionDeclaration> f, std::ostream& out); |
+ SpvId writeFunctionDeclaration(const FunctionDeclaration& f, std::ostream& out); |
- SpvId writeFunction(FunctionDefinition& f, std::ostream& out); |
+ SpvId writeFunction(const FunctionDefinition& f, std::ostream& out); |
void writeGlobalVars(VarDeclaration& v, std::ostream& out); |
@@ -227,14 +228,16 @@ private: |
int32_t word5, int32_t word6, int32_t word7, int32_t word8, |
std::ostream& out); |
+ const Context& fContext; |
+ |
uint64_t fCapabilities; |
SpvId fIdCount; |
SpvId fGLSLExtendedInstructions; |
typedef std::tuple<IntrinsicKind, int32_t, int32_t, int32_t, int32_t> Intrinsic; |
std::unordered_map<std::string, Intrinsic> fIntrinsicMap; |
- std::unordered_map<std::shared_ptr<FunctionDeclaration>, SpvId> fFunctionMap; |
- std::unordered_map<std::shared_ptr<Variable>, SpvId> fVariableMap; |
- std::unordered_map<std::shared_ptr<Variable>, int32_t> fInterfaceBlockMap; |
+ std::unordered_map<const FunctionDeclaration*, SpvId> fFunctionMap; |
+ std::unordered_map<const Variable*, SpvId> fVariableMap; |
+ std::unordered_map<const Variable*, int32_t> fInterfaceBlockMap; |
std::unordered_map<std::string, SpvId> fTypeMap; |
std::stringstream fCapabilitiesBuffer; |
std::stringstream fGlobalInitializersBuffer; |