diff options
author | 2018-06-05 09:58:07 -0400 | |
---|---|---|
committer | 2018-06-05 15:20:58 +0000 | |
commit | 7d63778a0a262a8728fd2507794d3a8d92e5fac5 (patch) | |
tree | 5d05fbcbabbf6b9249a8e07cf251aed42fdfd36f /src/sksl/SkSLMetalCodeGenerator.h | |
parent | 1b7cd334f8d6de2e31396eb0d2a8ad3a99c1d221 (diff) |
fixed interface/in/out struct for mvk integration and added a few missing builtins to skslc msl backend
Bug: skia:
Change-Id: Id514dc6af64bb2a5eb71f2161ceba549a8a6836d
Reviewed-on: https://skia-review.googlesource.com/131881
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Timothy Liang <timliang@google.com>
Diffstat (limited to 'src/sksl/SkSLMetalCodeGenerator.h')
-rw-r--r-- | src/sksl/SkSLMetalCodeGenerator.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/sksl/SkSLMetalCodeGenerator.h b/src/sksl/SkSLMetalCodeGenerator.h index 517f9f655b..3f0bc2862b 100644 --- a/src/sksl/SkSLMetalCodeGenerator.h +++ b/src/sksl/SkSLMetalCodeGenerator.h @@ -53,6 +53,7 @@ namespace SkSL { class MetalCodeGenerator : public CodeGenerator { public: static constexpr const char* SAMPLER_SUFFIX = "Smplr"; + static constexpr const char* PACKED_PREFIX = "packed_"; enum Precedence { kParentheses_Precedence = 1, @@ -83,6 +84,7 @@ public: this->setupIntrinsics(); } + bool generateCode(int shaderNum); // FIXME - remove when done inserting MSL bool generateCode() override; protected: @@ -129,6 +131,12 @@ protected: void writeOutputStruct(); + void writeInterfaceBlocks(); + + int size(const Type* type, bool isPacked) const; + + int alignment(const Type* type, bool isPacked) const; + void writeGlobalStruct(); void writePrecisionModifier(); @@ -221,13 +229,14 @@ protected: Requirements requirements(const Statement& e); - typedef std::tuple<IntrinsicKind, int32_t, int32_t, int32_t, int32_t> Intrinsic; + typedef std::pair<IntrinsicKind, int32_t> Intrinsic; std::unordered_map<String, Intrinsic> fIntrinsicMap; std::vector<const VarDeclaration*> fInitNonConstGlobalVars; std::vector<const Variable*> fTextures; std::unordered_map<const Type::Field*, const InterfaceBlock*> fInterfaceBlockMap; std::unordered_map<const InterfaceBlock*, String> fInterfaceBlockNameMap; int fAnonInterfaceCount = 0; + int fPaddingCount = 0; bool fNeedsGlobalStructInit = false; const char* fLineEnding; const Context& fContext; |