diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2017-06-27 11:20:22 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-27 18:27:57 +0000 |
commit | c070939fd1a954b7a492bc30f0cf64a664b90181 (patch) | |
tree | 6b1167726bc9ac4d2073f893c699b40c70f63ba1 /src/sksl/ir/SkSLLayout.h | |
parent | 26249e0e1d1b18a1e67195a2998b49958426f8ba (diff) |
Re-land sksl fragment processor support
This reverts commit ed50200682e0de72c3abecaa4d5324ebcd1ed9f9.
Bug: skia:
Change-Id: I9caa7454b391450620d6989dc472abb3cf7a2cab
Reviewed-on: https://skia-review.googlesource.com/20965
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src/sksl/ir/SkSLLayout.h')
-rw-r--r-- | src/sksl/ir/SkSLLayout.h | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/src/sksl/ir/SkSLLayout.h b/src/sksl/ir/SkSLLayout.h index 3a8416ac4e..8bf0472a95 100644 --- a/src/sksl/ir/SkSLLayout.h +++ b/src/sksl/ir/SkSLLayout.h @@ -8,6 +8,7 @@ #ifndef SKSL_LAYOUT #define SKSL_LAYOUT +#include "SkSLString.h" #include "SkSLUtil.h" namespace SkSL { @@ -42,6 +43,16 @@ struct Layout { kR8I, }; + // used by SkSL processors + enum Key { + // field is not a key + kNo_Key, + // field is a key + kKey_Key, + // key is 0 or 1 depending on whether the matrix is an identity matrix + kIdentity_Key, + }; + static const char* FormatToStr(Format format) { switch (format) { case Format::kUnspecified: return ""; @@ -55,7 +66,6 @@ struct Layout { case Format::kR8I: return "r8i"; } ABORT("Unexpected format"); - return ""; } static bool ReadFormat(String str, Format* format) { @@ -90,7 +100,7 @@ struct Layout { Layout(int location, int offset, int binding, int index, int set, int builtin, int inputAttachmentIndex, bool originUpperLeft, bool overrideCoverage, bool blendSupportAllEquations, Format format, bool pushconstant, Primitive primitive, - int maxVertices, int invocations) + int maxVertices, int invocations, String when, Key key) : fLocation(location) , fOffset(offset) , fBinding(binding) @@ -105,7 +115,9 @@ struct Layout { , fPushConstant(pushconstant) , fPrimitive(primitive) , fMaxVertices(maxVertices) - , fInvocations(invocations) {} + , fInvocations(invocations) + , fWhen(when) + , fKey(key) {} Layout() : fLocation(-1) @@ -122,7 +134,8 @@ struct Layout { , fPushConstant(false) , fPrimitive(kUnspecified_Primitive) , fMaxVertices(-1) - , fInvocations(-1) {} + , fInvocations(-1) + , fKey(kNo_Key) {} String description() const { String result; @@ -215,6 +228,22 @@ struct Layout { result += separator + "invocations = " + to_string(fInvocations); separator = ", "; } + if (fWhen.size()) { + result += separator + "when = " + fWhen; + separator = ", "; + } + switch (fKey) { + case kNo_Key: + break; + case kKey_Key: + result += separator + "key"; + separator = ", "; + break; + case kIdentity_Key: + result += separator + "key=identity"; + separator = ", "; + break; + } if (result.size() > 0) { result = "layout (" + result + ")"; } @@ -261,6 +290,8 @@ struct Layout { Primitive fPrimitive; int fMaxVertices; int fInvocations; + String fWhen; + Key fKey; }; } // namespace |