diff options
author | Timothy Liang <timliang@google.com> | 2018-05-17 10:40:04 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-17 15:21:23 +0000 |
commit | 6403b0e29055b8573eab20b5cb586c07785a2435 (patch) | |
tree | 55c09b9bdacbe262e29596f0d854e40ad4f6a621 /src/sksl/SkSLMetalCodeGenerator.h | |
parent | 27575e881ed68ee306d53e94a070c38c5d81e2a6 (diff) |
added basic texturing to metal sksl backend
Bug: skia:
Change-Id: I2e70efe53f5c2fb208979cc89be9c3c841944a48
Reviewed-on: https://skia-review.googlesource.com/128844
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 | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/sksl/SkSLMetalCodeGenerator.h b/src/sksl/SkSLMetalCodeGenerator.h index 3eccbf0909..6f8933c381 100644 --- a/src/sksl/SkSLMetalCodeGenerator.h +++ b/src/sksl/SkSLMetalCodeGenerator.h @@ -77,7 +77,9 @@ public: OutputStream* out) : INHERITED(program, errors, out) , fLineEnding("\n") - , fContext(*context) {} + , fContext(*context) { + this->setupIntrinsics(); + } bool generateCode() override; @@ -88,6 +90,16 @@ protected: static constexpr Requirements kOutputs_Requirement = 1 << 1; static constexpr Requirements kUniforms_Requirement = 1 << 2; + enum IntrinsicKind { + kSpecial_IntrinsicKind + }; + + enum SpecialIntrinsic { + kTexture_SpecialIntrinsic, + }; + + void setupIntrinsics(); + void write(const char* s); void writeLine(); @@ -142,6 +154,8 @@ protected: void writeFunctionCall(const FunctionCall& c); + void writeSpecialIntrinsic(const FunctionCall& c, SpecialIntrinsic kind); + void writeConstructor(const Constructor& c); void writeFieldAccess(const FieldAccess& f); @@ -194,6 +208,8 @@ protected: Requirements requirements(const Statement& e); + typedef std::tuple<IntrinsicKind, int32_t, int32_t, int32_t, int32_t> Intrinsic; + std::unordered_map<String, Intrinsic> fIntrinsicMap; const char* fLineEnding; const Context& fContext; StringStream fHeader; |