aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-04-17 11:19:57 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-17 17:20:44 +0000
commit4b2f915f9d29b7b5c777fb96d36bd5c00c6e54c0 (patch)
tree86358718f5335921373c0961488d982776ac8617 /src/sksl
parent053d04697acd74c45883058e81e422d731f06a0f (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.cpp8
-rw-r--r--src/sksl/SkSLGLSLCodeGenerator.h1
-rw-r--r--src/sksl/SkSLUtil.h4
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 "";
}