Add an AssertOnShaderCompileFailure GrContextOption

Part of a multi-step plan:

1) Add this option (which is *not* GL specific).
2) Disable this in Chromium at context-creation.
3) Finish adding the shader error handler, with default
   behavior controlled via this flag, and remove Chromium
   driver checks from the corresponding code at the same time.

Change-Id: I7e50c8404a05c1f291f187cf48481d0cbb34066a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/211646
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp
index 0d7a29b..473414e 100644
--- a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp
+++ b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp
@@ -61,7 +61,8 @@
                                     GrGLuint programId,
                                     GrGLenum type,
                                     const SkSL::String& glsl,
-                                    GrGpu::Stats* stats) {
+                                    GrGpu::Stats* stats,
+                                    bool assertOnFailure) {
     const GrGLInterface* gli = glCtx.interface();
 
     // Specify GLSL source to the driver.
@@ -101,7 +102,7 @@
             }
             // In Chrome we may have failed due to context-loss. So we should just continue along
             // wihthout asserting until the GrContext gets abandoned.
-            if (kChromium_GrGLDriver != glCtx.driver()) {
+            if (assertOnFailure && kChromium_GrGLDriver != glCtx.driver()) {
                 SkDEBUGFAIL("GLSL compilation failed!");
             }
             GR_GL_CALL(gli, DeleteShader(shaderId));