diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2017-06-29 10:03:38 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-29 14:57:47 +0000 |
commit | 762466e9fe0478bcf11fba532998e81e33b3069e (patch) | |
tree | 8934a152b11007d7d530db05f7ba731bb05aa5c0 /src/sksl/ir/SkSLLayout.h | |
parent | e78c8ed9cba31ebb970d3002270ddb03f4d6baae (diff) |
Re-re-land sksl fragment processor support
This reverts commit 5ce397205528f82084fc650c2ce27d246c01da33.
Bug: skia:
Change-Id: I88260c90004610a1cf8ad1a87c2b4b222525bbb6
Reviewed-on: https://skia-review.googlesource.com/21108
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 |