diff options
author | Brian Osman <brianosman@google.com> | 2018-04-17 11:19:57 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-04-17 17:20:44 +0000 |
commit | 4b2f915f9d29b7b5c777fb96d36bd5c00c6e54c0 (patch) | |
tree | 86358718f5335921373c0961488d982776ac8617 /src/sksl | |
parent | 053d04697acd74c45883058e81e422d731f06a0f (diff) |
Move external texture extension logic into SkSL
Automatically enable the extension if any external samplers are used.
Bug: skia:7713
Change-Id: I1de2faddd7c8eda864873941b90d7a4c4606497a
Reviewed-on: https://skia-review.googlesource.com/121797
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/sksl')
-rw-r--r-- | src/sksl/SkSLGLSLCodeGenerator.cpp | 8 | ||||
-rw-r--r-- | src/sksl/SkSLGLSLCodeGenerator.h | 1 | ||||
-rw-r--r-- | src/sksl/SkSLUtil.h | 4 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/sksl/SkSLGLSLCodeGenerator.cpp b/src/sksl/SkSLGLSLCodeGenerator.cpp index 0ee0afa6a6..bcf45ba7be 100644 --- a/src/sksl/SkSLGLSLCodeGenerator.cpp +++ b/src/sksl/SkSLGLSLCodeGenerator.cpp @@ -1083,6 +1083,14 @@ void GLSLCodeGenerator::writeVarDeclarations(const VarDeclarations& decl, bool g } fFoundImageDecl = true; } + if (!fFoundExternalSamplerDecl && var.fVar->fType == *fContext.fSamplerExternalOES_Type) { + if (fProgram.fSettings.fCaps->externalTextureExtensionString()) { + fHeader.writeText("#extension "); + fHeader.writeText(fProgram.fSettings.fCaps->externalTextureExtensionString()); + fHeader.writeText(" : require\n"); + } + fFoundExternalSamplerDecl = true; + } } if (wroteType) { this->write(";"); diff --git a/src/sksl/SkSLGLSLCodeGenerator.h b/src/sksl/SkSLGLSLCodeGenerator.h index 2b308e3702..362ae7ca18 100644 --- a/src/sksl/SkSLGLSLCodeGenerator.h +++ b/src/sksl/SkSLGLSLCodeGenerator.h @@ -209,6 +209,7 @@ protected: // true if we have run into usages of dFdx / dFdy bool fFoundDerivatives = false; bool fFoundImageDecl = false; + bool fFoundExternalSamplerDecl = false; bool fFoundGSInvocations = false; bool fSetupFragPositionGlobal = false; bool fSetupFragPositionLocal = false; diff --git a/src/sksl/SkSLUtil.h b/src/sksl/SkSLUtil.h index 78a80736b8..dc87246605 100644 --- a/src/sksl/SkSLUtil.h +++ b/src/sksl/SkSLUtil.h @@ -151,6 +151,10 @@ public: return nullptr; } + const char* externalTextureExtensionString() const { + return nullptr; + } + const char* versionDeclString() const { return ""; } |