aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/SkSLMetalCodeGenerator.h
diff options
context:
space:
mode:
authorGravatar Timothy Liang <timliang@google.com>2018-05-17 10:40:04 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-17 15:21:23 +0000
commit6403b0e29055b8573eab20b5cb586c07785a2435 (patch)
tree55c09b9bdacbe262e29596f0d854e40ad4f6a621 /src/sksl/SkSLMetalCodeGenerator.h
parent27575e881ed68ee306d53e94a070c38c5d81e2a6 (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.h18
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;