Centralize renderer limitations for non-conformant renderers

Some renderer configurations (e.g. D3D11 Feature Level 9_3) have
some limitations and aren't quite conformant. This change
generates errors when applications hit these limitations, and
informs developers that they must work around them.

BUG=angleproject:1055

Change-Id: I6a4a9e5cc71288ca366a54c769ca0eb82e79a7f7
Reviewed-on: https://chromium-review.googlesource.com/282814
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index b21c7ee..2a24990 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -1389,6 +1389,11 @@
     return mExtensions;
 }
 
+const Limitations &Context::getLimitations() const
+{
+    return mLimitations;
+}
+
 void Context::detachTexture(GLuint texture)
 {
     // Simple pass-through to State's detachTexture method, as textures do not require
@@ -1605,6 +1610,8 @@
 
     mExtensions = mRenderer->getRendererExtensions();
 
+    mLimitations = mRenderer->getRendererLimitations();
+
     if (clientVersion < 3)
     {
         // Disable ES3+ extensions