Revert of Implement support for using GL ES 3.0 with command buffer (patchset #6 id:100001 of https://codereview.chromium.org/1684413003/ )

Reason for revert:
The dependency, ES3 implementation in command_buffer_gles2, got reverted.

Original issue's description:
> Implement support for using GL ES 3.0 with command buffer
>
> Adds a new 'api': --config gpu(api=commandbuffer3) for dm/nanobench.
>
> BUG=skia:4943
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1684413003
>
> Committed: https://skia.googlesource.com/skia/+/45c2c8166bbd84a87e29fdd344b39e36e8a28a3f

TBR=bsalomon@google.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=skia:4943
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1744963002

Review URL: https://codereview.chromium.org/1744963002
diff --git a/dm/DM.cpp b/dm/DM.cpp
index 2eb5593..f2c74e307 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -1344,8 +1344,7 @@
         GrContextFactory::kANGLE_GL_GLContextType,
 #endif
 #if SK_COMMAND_BUFFER
-        GrContextFactory::kCommandBufferES2_GLContextType,
-        GrContextFactory::kCommandBufferES3_GLContextType,
+        GrContextFactory::kCommandBuffer_GLContextType,
 #endif
 #if SK_MESA
         GrContextFactory::kMESA_GLContextType,
diff --git a/dm/DMGpuSupport.h b/dm/DMGpuSupport.h
index 50d271b..ed27645 100644
--- a/dm/DMGpuSupport.h
+++ b/dm/DMGpuSupport.h
@@ -68,8 +68,7 @@
 
     static const GLContextType kANGLE_GLContextType         = 0,
                                kANGLE_GL_GLContextType      = 0,
-                               kCommandBufferES2_GLContextType = 0,
-                               kCommandBufferES3_GLContextType = 0,
+                               kCommandBuffer_GLContextType = 0,
                                kDebug_GLContextType         = 0,
                                kMESA_GLContextType          = 0,
                                kNVPR_GLContextType          = 0,
diff --git a/include/gpu/gl/command_buffer/SkCommandBufferGLContext.h b/include/gpu/gl/command_buffer/SkCommandBufferGLContext.h
index cf16c22..47f3fd9 100644
--- a/include/gpu/gl/command_buffer/SkCommandBufferGLContext.h
+++ b/include/gpu/gl/command_buffer/SkCommandBufferGLContext.h
@@ -16,16 +16,8 @@
 public:
     ~SkCommandBufferGLContext() override;
 
-    static SkCommandBufferGLContext* CreateES2() {
-        SkCommandBufferGLContext* ctx = new SkCommandBufferGLContext(kGLES2_ContextVersion);
-        if (!ctx->isValid()) {
-            delete ctx;
-            return nullptr;
-        }
-        return ctx;
-    }
-    static SkCommandBufferGLContext* CreateES3() {
-        SkCommandBufferGLContext* ctx = new SkCommandBufferGLContext(kGLES3_ContextVersion);
+    static SkCommandBufferGLContext* Create() {
+        SkCommandBufferGLContext* ctx = new SkCommandBufferGLContext;
         if (!ctx->isValid()) {
             delete ctx;
             return nullptr;
@@ -50,14 +42,10 @@
     int getSampleCount();
 
 private:
-    enum ContextVersion {
-        kGLES2_ContextVersion,
-        kGLES3_ContextVersion
-    };
-    SkCommandBufferGLContext(ContextVersion minContextVersion);
+    SkCommandBufferGLContext();
     SkCommandBufferGLContext(void* nativeWindow, int msaaSampleCount);
-    void initializeGLContext(ContextVersion minContextVersion, void* nativeWindow,
-                             const int* configAttribs, const int* surfaceAttribs);
+    void initializeGLContext(void* nativeWindow, const int* configAttribs,
+                             const int* surfaceAttribs);
     void destroyGLContext();
 
     void onPlatformMakeCurrent() const override;
diff --git a/include/views/SkOSWindow_Mac.h b/include/views/SkOSWindow_Mac.h
index 66f0cdf..6ce8983 100644
--- a/include/views/SkOSWindow_Mac.h
+++ b/include/views/SkOSWindow_Mac.h
@@ -28,7 +28,7 @@
         kANGLE_BackEndType,
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-        kCommandBufferES2_BackEndType,
+        kCommandBuffer_BackEndType,
 #endif // SK_COMMAND_BUFFER
     };
 
diff --git a/include/views/SkOSWindow_SDL.h b/include/views/SkOSWindow_SDL.h
index 65ef07e..e08108a 100644
--- a/include/views/SkOSWindow_SDL.h
+++ b/include/views/SkOSWindow_SDL.h
@@ -24,7 +24,7 @@
         kANGLE_BackEndType,
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-        kCommandBufferES2_BackEndType,
+        kCommandBuffer_BackEndType,
 #endif // SK_COMMAND_BUFFER
     };
 
diff --git a/include/views/SkOSWindow_Unix.h b/include/views/SkOSWindow_Unix.h
index 3395ab9..ecd0a14 100644
--- a/include/views/SkOSWindow_Unix.h
+++ b/include/views/SkOSWindow_Unix.h
@@ -40,7 +40,7 @@
         kANGLE_BackEndType,
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-        kCommandBufferES2_BackEndType,
+        kCommandBuffer_BackEndType,
 #endif // SK_COMMAND_BUFFER
     };
 
diff --git a/include/views/SkOSWindow_Win.h b/include/views/SkOSWindow_Win.h
index 9e771c2..c1a68c6 100644
--- a/include/views/SkOSWindow_Win.h
+++ b/include/views/SkOSWindow_Win.h
@@ -42,7 +42,7 @@
         kANGLE_BackEndType,
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-        kCommandBufferES2_BackEndType,
+        kCommandBuffer_BackEndType,
 #endif // SK_COMMAND_BUFFER
 #endif // SK_SUPPORT_GPU
     };
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 5b13310..7ebac5f 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -206,9 +206,9 @@
                 break;
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-            case kCommandBufferES2_DeviceType:
+            case kCommandBuffer_DeviceType:
                 // Command buffer is really the only other odd man out :D
-                fBackend = kCommandBufferES2_BackEndType;
+                fBackend = kCommandBuffer_BackEndType;
                 break;
 #endif // SK_COMMAND_BUFFER
             default:
@@ -237,7 +237,7 @@
                 break;
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-            case kCommandBufferES2_DeviceType:
+            case kCommandBuffer_DeviceType:
                 glInterface.reset(GrGLCreateCommandBufferInterface());
                 break;
 #endif // SK_COMMAND_BUFFER
@@ -692,7 +692,7 @@
         , SampleWindow::kANGLE_DeviceType
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-        , SampleWindow::kCommandBufferES2_DeviceType
+        , SampleWindow::kCommandBuffer_DeviceType
 #endif // SK_COMMAND_BUFFER
 #endif // SK_SUPPORT_GPU
     };
@@ -859,7 +859,7 @@
     fDeviceType = kANGLE_DeviceType;
 #endif
 #if SK_COMMAND_BUFFER && DEFAULT_TO_COMMAND_BUFFER
-    fDeviceType = kCommandBufferES2_DeviceType;
+    fDeviceType = kCommandBuffer_DeviceType;
 #endif
 
     fUseClip = false;
diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h
index 9bcb085..d4157fa 100644
--- a/samplecode/SampleApp.h
+++ b/samplecode/SampleApp.h
@@ -39,7 +39,7 @@
         kANGLE_DeviceType,
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-        kCommandBufferES2_DeviceType,
+        kCommandBuffer_DeviceType,
 #endif // SK_COMMAND_BUFFER
 #endif // SK_SUPPORT_GPU
         kDeviceTypeCnt
@@ -53,7 +53,7 @@
             case kANGLE_DeviceType:
     #endif // SK_ANGLE
     #if SK_COMMAND_BUFFER
-            case kCommandBufferES2_DeviceType:
+            case kCommandBuffer_DeviceType:
     #endif // SK_COMMAND_BUFFER
                 return true;
             default:
diff --git a/src/gpu/GrContextFactory.cpp b/src/gpu/GrContextFactory.cpp
index 3f7fd4a..b7e4825 100755
--- a/src/gpu/GrContextFactory.cpp
+++ b/src/gpu/GrContextFactory.cpp
@@ -95,11 +95,8 @@
             break;
 #endif
 #if SK_COMMAND_BUFFER
-        case kCommandBufferES2_GLContextType:
-            glCtx.reset(SkCommandBufferGLContext::CreateES2());
-            break;
-        case kCommandBufferES3_GLContextType:
-            glCtx.reset(SkCommandBufferGLContext::CreateES3());
+        case kCommandBuffer_GLContextType:
+            glCtx.reset(SkCommandBufferGLContext::Create());
             break;
 #endif
 #if SK_MESA
diff --git a/src/gpu/GrContextFactory.h b/src/gpu/GrContextFactory.h
index ca4420e..7afa310 100644
--- a/src/gpu/GrContextFactory.h
+++ b/src/gpu/GrContextFactory.h
@@ -34,9 +34,7 @@
         kANGLE_GL_GLContextType, //! ANGLE on OpenGL OpenGL ES context.
 #endif
 #if SK_COMMAND_BUFFER
-        kCommandBufferES2_GLContextType, //! Chromium command buffer OpenGL ES 2.0 context.
-        kCommandBufferES3_GLContextType, //! Chromium command buffer OpenGL ES 3.0 context.
-                                         //! Not ready for production.
+        kCommandBuffer_GLContextType, //! Chromium command buffer OpenGL ES context.
 #endif
 #if SK_MESA
         kMESA_GLContextType,  //! MESA OpenGL context
@@ -84,10 +82,8 @@
                 return "angle-gl";
 #endif
 #if SK_COMMAND_BUFFER
-            case kCommandBufferES2_GLContextType:
+            case kCommandBuffer_GLContextType:
                 return "commandbuffer";
-            case kCommandBufferES3_GLContextType:
-                return "commandbuffer3";
 #endif
 #if SK_MESA
             case kMESA_GLContextType:
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index 22aa13f..5baed59 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -363,12 +363,12 @@
     } else {
         // Unextended GLES2 doesn't have any buffer mapping.
         fMapBufferFlags = kNone_MapBufferType;
-        if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_EXT_map_buffer_range")) {
-            fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
-            fMapBufferType = kMapBufferRange_MapBufferType;
-        } else if (ctxInfo.hasExtension("GL_CHROMIUM_map_sub")) {
+        if (ctxInfo.hasExtension("GL_CHROMIUM_map_sub")) {
             fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
             fMapBufferType = kChromium_MapBufferType;
+        } else if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_EXT_map_buffer_range")) {
+            fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
+            fMapBufferType = kMapBufferRange_MapBufferType;
         } else if (ctxInfo.hasExtension("GL_OES_mapbuffer")) {
             fMapBufferFlags = kCanMap_MapFlag;
             fMapBufferType = kMapBuffer_MapBufferType;
@@ -523,16 +523,6 @@
         fTextureSwizzleSupport = false;
     }
 
-    // TODO: remove after command buffer supports full ES 3.0.
-    if (kGLES_GrGLStandard == standard && version >= GR_GL_VER(3, 0) &&
-        kChromium_GrGLDriver == ctxInfo.driver()) {
-        fSupportsInstancedDraws = false;
-        fTextureSwizzleSupport = false;
-        SkASSERT(ctxInfo.hasExtension("GL_CHROMIUM_map_sub"));
-        fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
-        fMapBufferType = kChromium_MapBufferType;
-    }
-
     // Requires fTextureRedSupport, fTextureSwizzleSupport, msaa support, ES compatibility have
     // already been detected.
     this->initConfigTable(ctxInfo, gli, glslCaps);
diff --git a/src/gpu/gl/GrGLInterface.cpp b/src/gpu/gl/GrGLInterface.cpp
index 7c77447..84c51fb 100644
--- a/src/gpu/gl/GrGLInterface.cpp
+++ b/src/gpu/gl/GrGLInterface.cpp
@@ -216,15 +216,6 @@
     if (GR_GL_INVALID_VER == glVer) {
         RETURN_FALSE_INTERFACE
     }
-    // TODO: Remove this once command buffer implements full ES3.
-    bool ALLOW_MISSING_FUNCTIONS_FOR_INCOMPLETE_COMMAND_BUFFER_ES3 = false;
-    if (kGLES_GrGLStandard == fStandard && glVer >= GR_GL_VER(3,0)) {
-        const GrGLubyte* rendererUByte;
-        GR_GL_CALL_RET(this, rendererUByte, GetString(GR_GL_RENDERER));
-        const char* renderer = reinterpret_cast<const char*>(rendererUByte);
-        ALLOW_MISSING_FUNCTIONS_FOR_INCOMPLETE_COMMAND_BUFFER_ES3 =
-                0 == strcmp(renderer, "Chromium");
-    }
 
     // Now check that baseline ES/Desktop fns not covered above are present
     // and that we have fn pointers for any advertised fExtensions that we will
@@ -315,10 +306,8 @@
             }
         }
     } else if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_EXT_texture_storage")) {
-        if (!ALLOW_MISSING_FUNCTIONS_FOR_INCOMPLETE_COMMAND_BUFFER_ES3) {
-            if (nullptr == fFunctions.fTexStorage2D) {
-                RETURN_FALSE_INTERFACE
-            }
+        if (nullptr == fFunctions.fTexStorage2D) {
+            RETURN_FALSE_INTERFACE
         }
     }
 
@@ -491,11 +480,9 @@
     if (glVer >= GR_GL_VER(3,0) ||
         (kGLES_GrGLStandard == fStandard && fExtensions.has("GL_EXT_map_buffer_range")) ||
         (kGL_GrGLStandard == fStandard && fExtensions.has("GL_ARB_map_buffer_range"))) {
-        if (!ALLOW_MISSING_FUNCTIONS_FOR_INCOMPLETE_COMMAND_BUFFER_ES3) {
-            if (nullptr == fFunctions.fMapBufferRange ||
-                nullptr == fFunctions.fFlushMappedBufferRange) {
-                RETURN_FALSE_INTERFACE;
-            }
+        if (nullptr == fFunctions.fMapBufferRange ||
+            nullptr == fFunctions.fFlushMappedBufferRange) {
+            RETURN_FALSE_INTERFACE;
         }
     }
 
@@ -583,16 +570,14 @@
                 nullptr == fFunctions.fDrawElementsInstanced) {
                 RETURN_FALSE_INTERFACE
             }
-        }
+        }    
     } else if (kGLES_GrGLStandard == fStandard) {
-        if (!ALLOW_MISSING_FUNCTIONS_FOR_INCOMPLETE_COMMAND_BUFFER_ES3) {
-            if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_EXT_draw_instanced")) {
-                if (nullptr == fFunctions.fDrawArraysInstanced ||
-                    nullptr == fFunctions.fDrawElementsInstanced) {
-                    RETURN_FALSE_INTERFACE
-                }
+        if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_EXT_draw_instanced")) {
+            if (nullptr == fFunctions.fDrawArraysInstanced ||
+                nullptr == fFunctions.fDrawElementsInstanced) {
+                RETURN_FALSE_INTERFACE
             }
-        }
+        }    
     }
 
     if (kGL_GrGLStandard == fStandard) {
@@ -600,15 +585,13 @@
             if (nullptr == fFunctions.fVertexAttribDivisor) {
                 RETURN_FALSE_INTERFACE
             }
-        }
+        }    
     } else if (kGLES_GrGLStandard == fStandard) {
-        if (!ALLOW_MISSING_FUNCTIONS_FOR_INCOMPLETE_COMMAND_BUFFER_ES3) {
-            if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_EXT_instanced_arrays")) {
-                if (nullptr == fFunctions.fVertexAttribDivisor) {
-                    RETURN_FALSE_INTERFACE
-                }
+        if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_EXT_instanced_arrays")) {
+            if (nullptr == fFunctions.fVertexAttribDivisor) {
+                RETURN_FALSE_INTERFACE
             }
-        }
+        }    
     }
 
     if ((kGL_GrGLStandard == fStandard && glVer >= GR_GL_VER(4,3)) ||
diff --git a/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp b/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp
index 946cd4a..cf9da93 100644
--- a/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp
+++ b/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp
@@ -33,7 +33,6 @@
 #define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
 #define EGL_SURFACE_TYPE 0x3033
 #define EGL_PBUFFER_BIT 0x0001
-#define EGL_WINDOW_BIT 0x0004
 #define EGL_RENDERABLE_TYPE 0x3040
 #define EGL_RED_SIZE 0x3024
 #define EGL_GREEN_SIZE 0x3023
@@ -53,11 +52,6 @@
 
 #endif
 
-#ifndef EGL_OPENGL_ES3_BIT
-// Part of EGL 1.5, typical headers are 1.4.
-#define EGL_OPENGL_ES3_BIT 0x0040
-#endif
-
 typedef EGLDisplay (*GetDisplayProc)(EGLNativeDisplayType display_id);
 typedef EGLBoolean (*InitializeProc)(EGLDisplay dpy, EGLint *major, EGLint *minor);
 typedef EGLBoolean (*TerminateProc)(EGLDisplay dpy);
@@ -143,15 +137,14 @@
     return GrGLAssembleGLESInterface(gLibrary, command_buffer_get_gl_proc);
 }
 
-SkCommandBufferGLContext::SkCommandBufferGLContext(ContextVersion minContextVersion)
+SkCommandBufferGLContext::SkCommandBufferGLContext()
     : fContext(EGL_NO_CONTEXT)
     , fDisplay(EGL_NO_DISPLAY)
     , fSurface(EGL_NO_SURFACE) {
 
     static const EGLint configAttribs[] = {
         EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
-        EGL_RENDERABLE_TYPE,  minContextVersion == kGLES3_ContextVersion ? EGL_OPENGL_ES3_BIT
-                                                                         : EGL_OPENGL_ES2_BIT,
+        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
         EGL_RED_SIZE, 8,
         EGL_GREEN_SIZE, 8,
         EGL_BLUE_SIZE, 8,
@@ -165,15 +158,13 @@
         EGL_NONE
     };
 
-    initializeGLContext(minContextVersion, nullptr, configAttribs, surfaceAttribs);
+    initializeGLContext(nullptr, configAttribs, surfaceAttribs);
 }
 
 SkCommandBufferGLContext::SkCommandBufferGLContext(void* nativeWindow, int msaaSampleCount) {
     static const EGLint surfaceAttribs[] = { EGL_NONE };
 
     EGLint configAttribs[] = {
-        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
         EGL_RED_SIZE,       8,
         EGL_GREEN_SIZE,     8,
         EGL_BLUE_SIZE,      8,
@@ -188,11 +179,10 @@
         configAttribs[12] = EGL_NONE;
     }
 
-    initializeGLContext(kGLES2_ContextVersion, nativeWindow, configAttribs, surfaceAttribs);
+    initializeGLContext(nativeWindow, configAttribs, surfaceAttribs);
 }
 
-void SkCommandBufferGLContext::initializeGLContext(ContextVersion minContextVersion,
-                                                   void* nativeWindow, const int* configAttribs,
+void SkCommandBufferGLContext::initializeGLContext(void* nativeWindow, const int* configAttribs,
                                                    const int* surfaceAttribs) {
     LoadCommandBufferOnce();
     if (!gfFunctionsLoadedSuccessfully) {
@@ -201,14 +191,16 @@
     }
 
     // Make sure CHROMIUM_path_rendering is enabled for NVPR support.
-    sk_setenv("CHROME_COMMAND_BUFFER_GLES2_ARGS", "--enable-gl-path-rendering --enable-unsafe-es3-apis");
+    sk_setenv("CHROME_COMMAND_BUFFER_GLES2_ARGS", "--enable-gl-path-rendering");
     fDisplay = gfGetDisplay(EGL_DEFAULT_DISPLAY);
     if (EGL_NO_DISPLAY == fDisplay) {
         SkDebugf("Command Buffer: Could not create EGL display.\n");
         return;
     }
 
-    if (!gfInitialize(fDisplay, nullptr, nullptr)) {
+    EGLint majorVersion;
+    EGLint minorVersion;
+    if (!gfInitialize(fDisplay, &majorVersion, &minorVersion)) {
         SkDebugf("Command Buffer: Could not initialize EGL display.\n");
         this->destroyGLContext();
         return;
@@ -216,7 +208,7 @@
 
     EGLint numConfigs;
     if (!gfChooseConfig(fDisplay, configAttribs, static_cast<EGLConfig*>(&fConfig), 1,
-                        &numConfigs) || numConfigs < 1) {
+                        &numConfigs) || numConfigs != 1) {
         SkDebugf("Command Buffer: Could not choose EGL config.\n");
         this->destroyGLContext();
         return;
@@ -239,7 +231,7 @@
     }
 
     static const EGLint contextAttribs[] = {
-        EGL_CONTEXT_CLIENT_VERSION, minContextVersion == kGLES3_ContextVersion ? 3 : 2,
+        EGL_CONTEXT_CLIENT_VERSION, 2,
         EGL_NONE
     };
     fContext = gfCreateContext(fDisplay, static_cast<EGLConfig>(fConfig), nullptr, contextAttribs);
@@ -279,28 +271,22 @@
     if (!gfFunctionsLoadedSuccessfully) {
         return;
     }
-    if (EGL_NO_DISPLAY == fDisplay) {
-        return;
-    }
+    if (fDisplay) {
+        gfMakeCurrent(fDisplay, 0, 0, 0);
 
-    if (EGL_NO_CONTEXT != fContext) {
-        gfDestroyContext(fDisplay, fContext);
-        fContext = EGL_NO_CONTEXT;
-    }
-    // Call MakeCurrent after destroying the context, so that the EGL implementation knows
-    // that the context is not used anymore after it is released from being current.
-    // This way command buffer does not need to abandon the context before destruction, and no
-    // client-side errors are printed.
-    gfMakeCurrent(fDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+        if (fContext) {
+            gfDestroyContext(fDisplay, fContext);
+            fContext = EGL_NO_CONTEXT;
+        }
 
-    if (EGL_NO_SURFACE != fSurface) {
-        gfDestroySurface(fDisplay, fSurface);
-        fSurface = EGL_NO_SURFACE;
+        if (fSurface) {
+            gfDestroySurface(fDisplay, fSurface);
+            fSurface = EGL_NO_SURFACE;
+        }
+
+        gfTerminate(fDisplay);
+        fDisplay = EGL_NO_DISPLAY;
     }
-    // The display is likely to be used again for another test, do not call gfTerminate.  Also,
-    // terminating could imply terminating the "host" EGL inside command buffer. This would
-    // terminate also EGL that this thread might use outside of command buffer.
-    fDisplay = EGL_NO_DISPLAY;
 }
 
 void SkCommandBufferGLContext::onPlatformMakeCurrent() const {
diff --git a/src/views/win/SkOSWindow_win.cpp b/src/views/win/SkOSWindow_win.cpp
index 3a2a5f6..c451708 100644
--- a/src/views/win/SkOSWindow_win.cpp
+++ b/src/views/win/SkOSWindow_win.cpp
@@ -618,7 +618,7 @@
         break;
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-    case kCommandBufferES2_BackEndType:
+    case kCommandBuffer_BackEndType:
         result = attachCommandBuffer(msaaSampleCount, info);
         break;
 #endif // SK_COMMAND_BUFFER
@@ -651,7 +651,7 @@
         break;
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-    case kCommandBufferES2_BackEndType:
+    case kCommandBuffer_BackEndType:
         detachCommandBuffer();
         break;
 #endif // SK_COMMAND_BUFFER
@@ -678,7 +678,7 @@
         break;
 #endif // SK_ANGLE
 #if SK_COMMAND_BUFFER
-    case kCommandBufferES2_BackEndType:
+    case kCommandBuffer_BackEndType:
         presentCommandBuffer();
         break;
 #endif // SK_COMMAND_BUFFER
diff --git a/tests/TestConfigParsing.cpp b/tests/TestConfigParsing.cpp
index f1f353e..777d1fb 100644
--- a/tests/TestConfigParsing.cpp
+++ b/tests/TestConfigParsing.cpp
@@ -169,7 +169,7 @@
 #endif
 #if SK_COMMAND_BUFFER
     REPORTER_ASSERT(reporter, configs[4]->asConfigGpu()->getContextType() ==
-                    GrContextFactory::kCommandBufferES2_GLContextType);
+                    GrContextFactory::kCommandBuffer_GLContextType);
 
 #else
     REPORTER_ASSERT(reporter, !configs[4]->asConfigGpu());
diff --git a/tools/flags/SkCommonFlagsConfig.cpp b/tools/flags/SkCommonFlagsConfig.cpp
index c82e8de..e2aa327 100644
--- a/tools/flags/SkCommonFlagsConfig.cpp
+++ b/tools/flags/SkCommonFlagsConfig.cpp
@@ -64,7 +64,6 @@
 #endif
 #if SK_COMMAND_BUFFER
     "\t\tcommandbuffer\t\tUse command buffer.\n"
-    "\t\tcommandbuffer3\t\tUse command buffer ES 3.0 (experimental).\n"
 #endif
 #if SK_MESA
     "\t\tmesa\t\t\tUse MESA.\n"
@@ -215,11 +214,7 @@
 #endif
 #if SK_COMMAND_BUFFER
     if (value.equals("commandbuffer")) {
-        *outContextType = GrContextFactory::kCommandBufferES2_GLContextType;
-        return true;
-    }
-    if (value.equals("commandbuffer3")) {
-        *outContextType = GrContextFactory::kCommandBufferES3_GLContextType;
+        *outContextType = GrContextFactory::kCommandBuffer_GLContextType;
         return true;
     }
 #endif