Apply max draw buffer limit for WebGL shaders.
For WebGL, using native caps incorrectly sets gl_MaxDrawBuffers.
This change always applys the limit for compatible shaders.
BUG=angleproject:1523
Change-Id: Ie956f4b9fdd10bdf9276ae08eaeb49e65690185b
Reviewed-on: https://chromium-review.googlesource.com/425477
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index ffc6e82..9e0bf31 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -2293,11 +2293,14 @@
}
mExtensionString = mergeExtensionStrings(mExtensionStrings);
+ const gl::Extensions &nativeExtensions = mImplementation->getNativeExtensions();
+
mRequestableExtensionStrings.clear();
for (const auto &extensionInfo : GetExtensionInfoMap())
{
if (extensionInfo.second.Requestable &&
- !(mExtensions.*(extensionInfo.second.ExtensionsMember)))
+ !(mExtensions.*(extensionInfo.second.ExtensionsMember)) &&
+ nativeExtensions.*(extensionInfo.second.ExtensionsMember))
{
mRequestableExtensionStrings.push_back(MakeStaticString(extensionInfo.first));
}
@@ -2370,6 +2373,10 @@
mExtensions.*(extension.ExtensionsMember) = true;
updateCaps();
initExtensionStrings();
+
+ // Re-create the compiler with the requested extensions enabled.
+ SafeDelete(mCompiler);
+ mCompiler = new Compiler(mImplementation.get(), mState);
}
size_t Context::getRequestableExtensionStringCount() const