Add test configs for instanced rendering

Adds the following configs and enables them on select bots:

  glinst, glinst4, glinstdit4, glinst16, glinstdit16,
  esinst, esinst4, esinstdit4

Makes general changes to GrContextOptions, GrCaps, etc. to facilitate
this.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2182783004

Review-Url: https://codereview.chromium.org/2182783004
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index a484b05..653b5ca 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -12,6 +12,7 @@
 #include "GrGLContext.h"
 #include "GrGLRenderTarget.h"
 #include "glsl/GrGLSLCaps.h"
+#include "instanced/GLInstancedRendering.h"
 #include "SkTSearch.h"
 #include "SkTSort.h"
 
@@ -40,7 +41,6 @@
     fDrawIndirectSupport = false;
     fMultiDrawIndirectSupport = false;
     fBaseInstanceSupport = false;
-    fCanDrawIndirectToFloat = false;
     fIsCoreProfile = false;
     fBindFragDataLocationSupport = false;
     fRectangleTextureSupport = false;
@@ -526,14 +526,6 @@
         fBaseInstanceSupport = ctxInfo.hasExtension("GL_EXT_base_instance");
     }
 
-    // OS X doesn't seem to write correctly to floating point textures when using glDraw*Indirect,
-    // regardless of the underlying GPU.
-#ifndef SK_BUILD_FOR_MAC
-    if (fDrawIndirectSupport) {
-        fCanDrawIndirectToFloat = true;
-    }
-#endif
-
     this->initShaderPrecisionTable(ctxInfo, gli, glslCaps);
 
     if (contextOptions.fUseShaderSwizzling) {
@@ -1116,7 +1108,6 @@
     r.appendf("Draw indirect support: %s\n", (fDrawIndirectSupport ? "YES" : "NO"));
     r.appendf("Multi draw indirect support: %s\n", (fMultiDrawIndirectSupport ? "YES" : "NO"));
     r.appendf("Base instance support: %s\n", (fBaseInstanceSupport ? "YES" : "NO"));
-    r.appendf("Can draw indirect to float: %s\n", (fCanDrawIndirectToFloat ? "YES" : "NO"));
     r.appendf("RGBA 8888 pixel ops are slow: %s\n", (fRGBA8888PixelsOpsAreSlow ? "YES" : "NO"));
     r.appendf("Partial FBO read is slow: %s\n", (fPartialFBOReadIsSlow ? "YES" : "NO"));
     r.appendf("Bind uniform location support: %s\n", (fBindUniformLocationSupport ? "YES" : "NO"));
@@ -1935,4 +1926,13 @@
 #endif
 }
 
-void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {}
+void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {
+    if (options.fEnableInstancedRendering) {
+        fInstancedSupport = gr_instanced::GLInstancedRendering::CheckSupport(*this);
+#ifndef SK_BUILD_FOR_MAC
+        // OS X doesn't seem to write correctly to floating point textures when using
+        // glDraw*Indirect, regardless of the underlying GPU.
+        fAvoidInstancedDrawsToFPTargets = true;
+#endif
+    }
+}