diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2017-06-27 09:56:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-27 14:20:05 +0000 |
commit | ccf59917d3fe7aaf59de714acfbd0596503f324f (patch) | |
tree | cc97719c47276c9dcbf0ec09effd580c4e7450dd /src/sksl/ir/SkSLLayout.h | |
parent | c3aef18419c1bb16951370e11758c7ef131fa10b (diff) |
sksl fragment processor support
Bug: skia:
Change-Id: Ia3b0305c2b0c78074303831f628fb01852b90d34
Reviewed-on: https://skia-review.googlesource.com/17843
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Mike Klein <mtklein@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 |