Check that the requested extension is supported by the backend.
Previously, we would only check that the extension was requestable and
not verify that the driver could support it.
BUG=angleproject:1523
Change-Id: I5273920fc08a20beda54d4afaeb406c6c1c2056f
Reviewed-on: https://chromium-review.googlesource.com/723559
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 15274e4..64b9d4f 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -2566,12 +2566,23 @@
return mExtensionStrings.size();
}
+bool Context::isExtensionRequestable(const char *name)
+{
+ const ExtensionInfoMap &extensionInfos = GetExtensionInfoMap();
+ auto extension = extensionInfos.find(name);
+
+ const Extensions &nativeExtensions = mImplementation->getNativeExtensions();
+ return extension != extensionInfos.end() && extension->second.Requestable &&
+ nativeExtensions.*(extension->second.ExtensionsMember);
+}
+
void Context::requestExtension(const char *name)
{
const ExtensionInfoMap &extensionInfos = GetExtensionInfoMap();
ASSERT(extensionInfos.find(name) != extensionInfos.end());
const auto &extension = extensionInfos.at(name);
ASSERT(extension.Requestable);
+ ASSERT(mImplementation->getNativeExtensions().*(extension.ExtensionsMember));
if (mExtensions.*(extension.ExtensionsMember))
{