diff --git a/cc/raster/raster_buffer_provider_perftest.cc b/cc/raster/raster_buffer_provider_perftest.cc
index 78cd768d4857a..f6c39937b46c6 100644
--- a/cc/raster/raster_buffer_provider_perftest.cc
+++ b/cc/raster/raster_buffer_provider_perftest.cc
@@ -40,12 +40,6 @@ namespace {
 
 class PerfGLES2Interface : public gpu::gles2::GLES2InterfaceStub {
   // Overridden from gpu::gles2::GLES2Interface:
-  GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                             GLsizei width,
-                             GLsizei height,
-                             GLenum internalformat) override {
-    return 1u;
-  }
   void GenBuffers(GLsizei n, GLuint* buffers) override {
     for (GLsizei i = 0; i < n; ++i)
       buffers[i] = 1u;
diff --git a/components/viz/test/test_gles2_interface.cc b/components/viz/test/test_gles2_interface.cc
index 7ea3e529f4ca7..e31685ab32498 100644
--- a/components/viz/test/test_gles2_interface.cc
+++ b/components/viz/test/test_gles2_interface.cc
@@ -275,27 +275,6 @@ void TestGLES2Interface::PixelStorei(GLenum pname, GLint param) {
   }
 }
 
-GLuint TestGLES2Interface::CreateImageCHROMIUM(ClientBuffer buffer,
-                                               GLsizei width,
-                                               GLsizei height,
-                                               GLenum internalformat) {
-  DCHECK(internalformat == GL_RGB || internalformat == GL_RGBA ||
-         (test_capabilities_.texture_format_bgra8888 &&
-          internalformat == GL_BGRA_EXT));
-  GLuint image_id = NextImageId();
-  images_.insert(image_id);
-  return image_id;
-}
-
-void TestGLES2Interface::DestroyImageCHROMIUM(GLuint image_id) {
-  RetireImageId(image_id);
-  if (!images_.count(image_id)) {
-    ADD_FAILURE() << "destroyImageCHROMIUM called on unknown image "
-                  << image_id;
-  }
-  images_.erase(image_id);
-}
-
 void* TestGLES2Interface::MapBufferCHROMIUM(GLuint target, GLenum access) {
   DCHECK_GT(bound_buffer_.count(target), 0u);
   DCHECK_GT(buffers_.count(bound_buffer_[target]), 0u);
diff --git a/components/viz/test/test_gles2_interface.h b/components/viz/test/test_gles2_interface.h
index af21b1f23e84b..d927b0d4f93e5 100644
--- a/components/viz/test/test_gles2_interface.h
+++ b/components/viz/test/test_gles2_interface.h
@@ -73,12 +73,6 @@ class TestGLES2Interface : public gpu::gles2::GLES2InterfaceStub {
 
   void PixelStorei(GLenum pname, GLint param) override;
 
-  GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                             GLsizei width,
-                             GLsizei height,
-                             GLenum internalformat) override;
-  void DestroyImageCHROMIUM(GLuint image_id) override;
-
   void* MapBufferCHROMIUM(GLuint target, GLenum access) override;
   GLboolean UnmapBufferCHROMIUM(GLuint target) override;
   void BufferData(GLenum target,
@@ -242,7 +236,6 @@ class TestGLES2Interface : public gpu::gles2::GLES2InterfaceStub {
   unsigned next_texture_id_ = 1;
   unsigned next_renderbuffer_id_ = 1;
   std::unordered_map<unsigned, std::unique_ptr<Buffer>> buffers_;
-  std::unordered_set<unsigned> images_;
   std::unordered_set<unsigned> textures_;
   std::unordered_set<unsigned> renderbuffer_set_;
 
diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_image.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_image.txt
deleted file mode 100644
index 0d6a4c46fd662..0000000000000
--- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_image.txt
+++ /dev/null
@@ -1,132 +0,0 @@
-Name
-
-    CHROMIUM_image
-
-Name Strings
-
-    GL_CHROMIUM_image
-
-Version
-
-    Last Modifed Date: May 13, 2015
-
-Dependencies
-
-    OpenGL ES 2.0 is required.
-
-    EXT_texture_format_BGRA8888 affects the definition of this extension.
-    ARB_texture_rg affects the definition of this extension.
-
-Overview
-
-    This extension defines a new resource type that is suitable for
-    sharing 2D arrays of image data between client APIs.
-
-Issues
-
-    None
-
-New Tokens
-
-    None
-
-New Procedures and Functions
-
-  GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                             GLsizei width,
-                             GLsizei height,
-                             GLenum internalformat)
-
-    Create an image from <buffer> with width equal to <width> and
-    height equal to <height> and format equal to <internalformat>.
-
-    Returns a unique identifier for the image that could be used in
-    subsequent operations.
-
-    INVALID_VALUE is generated if <width> or <height> is nonpositive.
-
-    INVALID_VALUE is generated if <internalformat> is not one of
-    RED, RGB, RGBA, BGRA_EXT, ATC_RGB_AMD, ATC_RGBA_INTERPOLATED_ALPHA_AMD,
-    COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT5_EXT or
-    ETC1_RGB8_OES.
-
-  void DestroyImageCHROMIUM(GLuint image_id)
-
-    Frees the image previously created by a call to CreateImageCHROMIUM.
-
-    INVALID_OPERATION is generated if <image_id> is not a valid image id.
-
-  void BindTexImage2DCHROMIUM(GLenum target, GLint image_id)
-
-    Binds the texture object currently bound to <target> to the image
-    <image_id> previously created by a call to CreateImageCHROMIUM.
-
-    INVALID_OPERATION is generated if no texture is bound to <target>.
-
-    INVALID_OPERATION is generated if <image_id> is not a valid image id.
-
-  void BindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                                GLenum internalformat,
-                                                GLint image_id)
-
-    Behaves exactly like BindTexImage2DCHROMIUM, but forces the
-    texture to use the specified <internalformat> rather than the
-    default one. This function is provided solely as a workaround for
-    driver bugs on some platforms. BindTexImage2DCHROMIUM should be
-    used by almost all users.
-
-  void ReleaseTexImage2DCHROMIUM(GLenum target, GLint image_id)
-
-    Unbinds the texture object bound to <target> from the image
-    <image_id> previously created by a call to CreateImageCHROMIUM. If
-    the texture is not currently bound to the image, has no effect,
-    though may still generate errors.
-
-    INVALID_OPERATION is generated if no texture is bound to <target>.
-
-    INVALID_OPERATION is generated if <image_id> is not a valid image id.
-
-Dependencies on EXT_texture_format_BGRA8888
-
-    If EXT_texture_format_BGRA8888 is not supported:
-     * delete any reference to the BGRA_EXT format.
-
-Dependencies on ARB_texture_rg
-
-    If ARB_texture_rg is not supported:
-     * delete any reference to the RED format.
-
-Dependencies on AMD_compressed_ATC_texture
-
-    If AMD_compressed_ATC_texture is not supported:
-     * delete any reference to the ATC_RGB_AMD and
-       ATC_RGBA_INTERPOLATED_ALPHA_AMD formats.
-
-Dependencies on EXT_texture_compression_s3tc
-
-    If EXT_texture_compression_s3tc is not supported:
-     * delete any reference to the COMPRESSED_RGB_S3TC_DXT1_EXT and
-       COMPRESSED_RGBA_S3TC_DXT5_EXT formats.
-
-Dependencies on OES_compressed_ETC1_RGB8_texture
-
-    If OES_compressed_ETC1_RGB8_texture is not supported:
-     * delete any reference to the ETC1_RGB8_OES format.
-
-Errors
-
-    None.
-
-New State
-
-    None.
-
-Revision History
-
-    5/9/2013    Documented the extension
-    4/30/2014   Moved usage flag to creation function.
-    10/7/2014   Remove map/unmap API.
-    4/6/2015    Add BGRA_EXT format.
-    2/7/2015    Add R8 format.
-    5/13/2015   Add compressed formats.
-    11/5/2015   Change R8 format to RED.
diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_420v_image.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_420v_image.txt
index db0957b6f78b7..be3525f0a3fe6 100644
--- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_420v_image.txt
+++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_420v_image.txt
@@ -8,22 +8,17 @@ Name Strings
 
 Version
 
-    Last Modifed Date: October 26, 2015
+    Last Modified Date: May 3, 2022
 
 Dependencies
 
     OpenGL ES 2.0 is required.
 
-    GL_CHROMIUM_image is required.
-
 Overview
 
     This extension provides a new internal image format to use when creating an
     image from underlying '420v' buffers.
 
-    This extension is useful in conjunction with CreateImageCHROMIUM to define
-    the format of GpuMemoryBuffer backing the image.
-
 New Procedures and Functions
 
     None.
@@ -34,7 +29,7 @@ Errors
 
 New Tokens
 
-    Accepted by the <internalformat> parameter of CreateImageCHROMIUM.
+    GL_RGB_YCBCR_420V_CHROMIUM    0x78FC
 
 New State
 
@@ -43,3 +38,4 @@ New State
 Revision History
 
     10/26/2015   Documented the extension
+    5/3/2022     Removed references to GL_CHROMIUM_image.
diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_422_image.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_422_image.txt
index 2ab489bd2e4b4..23fddfb500424 100644
--- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_422_image.txt
+++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_422_image.txt
@@ -8,21 +8,16 @@ Name Strings
 
 Version
 
-    Last Modifed Date: August 26, 2015
+    Last Modified Date: May 3, 2022
 
 Dependencies
 
     OpenGL ES 2.0 is required.
 
-    GL_CHROMIUM_image is required.
-
 Overview
 
-    This extension provides a new internal image format to use when creating an 
-    image from underlying '2vuy' buffers. 
-
-    This extension is useful in conjunction with CreateImageCHROMIUM to define
-    the format of GpuMemoryBuffer backing the image.
+    This extension provides a new internal image format to use when creating an
+    image from underlying '2vuy' buffers.
 
 New Procedures and Functions
 
@@ -33,8 +28,8 @@ Errors
     None.
 
 New Tokens
-    
-    Accepted by the <internalformat> parameter of CreateImageCHROMIUM.
+
+    GL_RGB_YCBCR_422_CHROMIUM    0x78FB
 
 New State
 
@@ -43,3 +38,4 @@ New State
 Revision History
 
     8/26/2015   Documented the extension
+    5/3/2022    Removed references to GL_CHROMIUM_image.
diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_p010_image.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_p010_image.txt
index 2d4045437697a..f8883b4a85a98 100644
--- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_p010_image.txt
+++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycbcr_p010_image.txt
@@ -8,22 +8,17 @@ Name Strings
 
 Version
 
-    Last Modified Date: June 12, 2019
+    Last Modified Date: May 3, 2022
 
 Dependencies
 
     OpenGL ES 2.0 is required.
 
-    GL_CHROMIUM_image is required.
-
 Overview
 
     This extension provides a new internal image format to use when creating an
     image from underlying p010 buffers.
 
-    This extension is useful in conjunction with CreateImageCHROMIUM to define
-    the format of GpuMemoryBuffer backing the image.
-
 New Procedures and Functions
 
     None.
@@ -34,7 +29,7 @@ Errors
 
 New Tokens
 
-    Accepted by the <internalformat> parameter of CreateImageCHROMIUM.
+    GL_RGB_YCBCR_P010_CHROMIUM    0x78FD
 
 New State
 
@@ -43,3 +38,4 @@ New State
 Revision History
 
     06/12/2019   Documented the extension
+    5/3/2022     Removed references to GL_CHROMIUM_image.
diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycrcb_420_image.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycrcb_420_image.txt
index c87b5e031cb78..b8f44524cb9b7 100644
--- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycrcb_420_image.txt
+++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_ycrcb_420_image.txt
@@ -8,21 +8,16 @@ Name Strings
 
 Version
 
-    Last Modifed Date: April 10, 2015
+    Last Modified Date: May 3, 2022
 
 Dependencies
 
     OpenGL ES 2.0 is required.
 
-    GL_CHROMIUM_image is required.
-
 Overview
 
-    This extension provides a new internal image format to use when creating an 
-    image from underlying YV12 buffers with YVU components. 
-
-    This extension is useful in conjunction with CreateImageCHROMIUM to define
-    the format of GpuMemoryBuffer backing the image.
+    This extension provides a new internal image format to use when creating an
+    image from underlying YV12 buffers with YVU components.
 
 New Procedures and Functions
 
@@ -33,8 +28,8 @@ Errors
     None.
 
 New Tokens
-    
-    Accepted by the <internalformat> parameter of CreateImageCHROMIUM.
+
+    GL_RGB_YCRCB_420_CHROMIUM    0x78FA
 
 New State
 
@@ -43,3 +38,4 @@ New State
 Revision History
 
     4/10/2015   Documented the extension
+    5/3/2022    Removed references to GL_CHROMIUM_image.
diff --git a/gpu/GLES2/gl2chromium_autogen.h b/gpu/GLES2/gl2chromium_autogen.h
index b4ee5a07f6c34..0e2e2a531d2c8 100644
--- a/gpu/GLES2/gl2chromium_autogen.h
+++ b/gpu/GLES2/gl2chromium_autogen.h
@@ -312,8 +312,6 @@
 #define glGetTransformFeedbackVaryingsCHROMIUM \
   GLES2_GET_FUN(GetTransformFeedbackVaryingsCHROMIUM)
 #define glGetUniformsES3CHROMIUM GLES2_GET_FUN(GetUniformsES3CHROMIUM)
-#define glCreateImageCHROMIUM GLES2_GET_FUN(CreateImageCHROMIUM)
-#define glDestroyImageCHROMIUM GLES2_GET_FUN(DestroyImageCHROMIUM)
 #define glDescheduleUntilFinishedCHROMIUM \
   GLES2_GET_FUN(DescheduleUntilFinishedCHROMIUM)
 #define glGetTranslatedShaderSourceANGLE \
@@ -333,10 +331,6 @@
 #define glCreateAndConsumeTextureCHROMIUM \
   GLES2_GET_FUN(CreateAndConsumeTextureCHROMIUM)
 #define glBindUniformLocationCHROMIUM GLES2_GET_FUN(BindUniformLocationCHROMIUM)
-#define glBindTexImage2DCHROMIUM GLES2_GET_FUN(BindTexImage2DCHROMIUM)
-#define glBindTexImage2DWithInternalformatCHROMIUM \
-  GLES2_GET_FUN(BindTexImage2DWithInternalformatCHROMIUM)
-#define glReleaseTexImage2DCHROMIUM GLES2_GET_FUN(ReleaseTexImage2DCHROMIUM)
 #define glTraceBeginCHROMIUM GLES2_GET_FUN(TraceBeginCHROMIUM)
 #define glTraceEndCHROMIUM GLES2_GET_FUN(TraceEndCHROMIUM)
 #define glDiscardFramebufferEXT GLES2_GET_FUN(DiscardFramebufferEXT)
diff --git a/gpu/GLES2/gl2extchromium.h b/gpu/GLES2/gl2extchromium.h
index e7087e6261ab0..005e180edf383 100644
--- a/gpu/GLES2/gl2extchromium.h
+++ b/gpu/GLES2/gl2extchromium.h
@@ -63,44 +63,6 @@ typedef GLboolean (GL_APIENTRY PFNGLUNMAPBUFFERCHROMIUM) (GLuint target);
 #endif
 #endif  /* GL_CHROMIUM_pixel_transfer_buffer_object */
 
-/* GL_CHROMIUM_image */
-#ifndef GL_CHROMIUM_image
-#define GL_CHROMIUM_image 1
-
-typedef struct _ClientBuffer* ClientBuffer;
-
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLuint GL_APIENTRY glCreateImageCHROMIUM(ClientBuffer buffer,
-                                                    GLsizei width,
-                                                    GLsizei height,
-                                                    GLenum internalformat);
-GL_APICALL void GL_APIENTRY glDestroyImageCHROMIUM(GLuint image_id);
-GL_APICALL void GL_APIENTRY glBindTexImage2DCHROMIUM(GLenum target,
-                                                     GLint imageId);
-GL_APICALL void GL_APIENTRY
-glBindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                           GLenum internalformat,
-                                           GLint imageId);
-GL_APICALL void GL_APIENTRY glReleaseTexImage2DCHROMIUM(GLenum target,
-                                                        GLint imageId);
-#endif
-typedef GLuint(GL_APIENTRYP PFNGLCREATEIMAGECHROMIUMPROC)(
-    ClientBuffer buffer,
-    GLsizei width,
-    GLsizei height,
-    GLenum internalformat);
-typedef void (
-    GL_APIENTRYP PFNGLDESTROYIMAGECHROMIUMPROC)(GLuint image_id);
-typedef void(GL_APIENTRYP PFNGLBINDTEXIMAGE2DCHROMIUMPROC)(GLenum target,
-                                                           GLint imageId);
-typedef void(GL_APIENTRYP PFNGLBINDTEXIMAGE2DWITHINTERNALFORMATCHROMIUMPROC)(
-    GLenum target,
-    GLenum internalformat,
-    GLint imageId);
-typedef void(GL_APIENTRYP PFNGLRELEASETEXIMAGE2DCHROMIUMPROC)(GLenum target,
-                                                              GLint imageId);
-#endif  /* GL_CHROMIUM_image */
-
 #ifndef GL_RGB_YCRCB_420_CHROMIUM
 #define GL_RGB_YCRCB_420_CHROMIUM 0x78FA
 #endif
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 92e68825223bd..100f8669f7b5c 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -1952,20 +1952,6 @@ _FUNCTION_INFO = {
     'es3': True,
     'trace_level': 1,
   },
-  'CreateImageCHROMIUM': {
-    'type': 'NoCommand',
-    'cmd_args':
-        'ClientBuffer buffer, GLsizei width, GLsizei height, '
-        'GLenum internalformat',
-    'result': ['GLuint'],
-    'extension': "CHROMIUM_image",
-    'trace_level': 1,
-  },
-  'DestroyImageCHROMIUM': {
-    'type': 'NoCommand',
-    'extension': "CHROMIUM_image",
-    'trace_level': 1,
-  },
   'DescheduleUntilFinishedCHROMIUM': {
     'type': 'Custom',
     'decoder_func': 'DoDescheduleUntilFinishedCHROMIUM',
@@ -3904,21 +3890,6 @@ _FUNCTION_INFO = {
     'unit_test': False,
     'pepper_interface': 'VertexArrayObject',
   },
-  'BindTexImage2DCHROMIUM': {
-    'decoder_func': 'DoBindTexImage2DCHROMIUM',
-    'unit_test': False,
-    'extension': "CHROMIUM_image",
-  },
-  'BindTexImage2DWithInternalformatCHROMIUM': {
-    'decoder_func': 'DoBindTexImage2DWithInternalformatCHROMIUM',
-    'unit_test': False,
-    'extension': "CHROMIUM_image",
-  },
-  'ReleaseTexImage2DCHROMIUM': {
-    'decoder_func': 'DoReleaseTexImage2DCHROMIUM',
-    'unit_test': False,
-    'extension': "CHROMIUM_image",
-  },
   'ShallowFinishCHROMIUM': {
     'type': 'NoCommand',
     'extension': 'CHROMIUM_ordering_barrier',
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h
index 128eb8200f11e..32753b49ab17a 100644
--- a/gpu/command_buffer/client/gles2_c_lib_autogen.h
+++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h
@@ -1451,16 +1451,6 @@ void GL_APIENTRY GLES2GetUniformsES3CHROMIUM(GLuint program,
                                              void* info) {
   gles2::GetGLContext()->GetUniformsES3CHROMIUM(program, bufsize, size, info);
 }
-GLuint GL_APIENTRY GLES2CreateImageCHROMIUM(ClientBuffer buffer,
-                                            GLsizei width,
-                                            GLsizei height,
-                                            GLenum internalformat) {
-  return gles2::GetGLContext()->CreateImageCHROMIUM(buffer, width, height,
-                                                    internalformat);
-}
-void GL_APIENTRY GLES2DestroyImageCHROMIUM(GLuint image_id) {
-  gles2::GetGLContext()->DestroyImageCHROMIUM(image_id);
-}
 void GL_APIENTRY GLES2DescheduleUntilFinishedCHROMIUM() {
   gles2::GetGLContext()->DescheduleUntilFinishedCHROMIUM();
 }
@@ -1565,19 +1555,6 @@ void GL_APIENTRY GLES2BindUniformLocationCHROMIUM(GLuint program,
                                                   const char* name) {
   gles2::GetGLContext()->BindUniformLocationCHROMIUM(program, location, name);
 }
-void GL_APIENTRY GLES2BindTexImage2DCHROMIUM(GLenum target, GLint imageId) {
-  gles2::GetGLContext()->BindTexImage2DCHROMIUM(target, imageId);
-}
-void GL_APIENTRY
-GLES2BindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                              GLenum internalformat,
-                                              GLint imageId) {
-  gles2::GetGLContext()->BindTexImage2DWithInternalformatCHROMIUM(
-      target, internalformat, imageId);
-}
-void GL_APIENTRY GLES2ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) {
-  gles2::GetGLContext()->ReleaseTexImage2DCHROMIUM(target, imageId);
-}
 void GL_APIENTRY GLES2TraceBeginCHROMIUM(const char* category_name,
                                          const char* trace_name) {
   gles2::GetGLContext()->TraceBeginCHROMIUM(category_name, trace_name);
@@ -3005,14 +2982,6 @@ extern const NameToFunc g_gles2_function_table[] = {
         "glGetUniformsES3CHROMIUM",
         reinterpret_cast<GLES2FunctionPointer>(glGetUniformsES3CHROMIUM),
     },
-    {
-        "glCreateImageCHROMIUM",
-        reinterpret_cast<GLES2FunctionPointer>(glCreateImageCHROMIUM),
-    },
-    {
-        "glDestroyImageCHROMIUM",
-        reinterpret_cast<GLES2FunctionPointer>(glDestroyImageCHROMIUM),
-    },
     {
         "glDescheduleUntilFinishedCHROMIUM",
         reinterpret_cast<GLES2FunctionPointer>(
@@ -3070,19 +3039,6 @@ extern const NameToFunc g_gles2_function_table[] = {
         "glBindUniformLocationCHROMIUM",
         reinterpret_cast<GLES2FunctionPointer>(glBindUniformLocationCHROMIUM),
     },
-    {
-        "glBindTexImage2DCHROMIUM",
-        reinterpret_cast<GLES2FunctionPointer>(glBindTexImage2DCHROMIUM),
-    },
-    {
-        "glBindTexImage2DWithInternalformatCHROMIUM",
-        reinterpret_cast<GLES2FunctionPointer>(
-            glBindTexImage2DWithInternalformatCHROMIUM),
-    },
-    {
-        "glReleaseTexImage2DCHROMIUM",
-        reinterpret_cast<GLES2FunctionPointer>(glReleaseTexImage2DCHROMIUM),
-    },
     {
         "glTraceBeginCHROMIUM",
         reinterpret_cast<GLES2FunctionPointer>(glTraceBeginCHROMIUM),
diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
index 390b85f0e7ca8..11e22a528c41c 100644
--- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
+++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
@@ -2936,32 +2936,6 @@ void BindUniformLocationCHROMIUMBucket(GLuint program,
   }
 }
 
-void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) {
-  gles2::cmds::BindTexImage2DCHROMIUM* c =
-      GetCmdSpace<gles2::cmds::BindTexImage2DCHROMIUM>();
-  if (c) {
-    c->Init(target, imageId);
-  }
-}
-
-void BindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                              GLenum internalformat,
-                                              GLint imageId) {
-  gles2::cmds::BindTexImage2DWithInternalformatCHROMIUM* c =
-      GetCmdSpace<gles2::cmds::BindTexImage2DWithInternalformatCHROMIUM>();
-  if (c) {
-    c->Init(target, internalformat, imageId);
-  }
-}
-
-void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) {
-  gles2::cmds::ReleaseTexImage2DCHROMIUM* c =
-      GetCmdSpace<gles2::cmds::ReleaseTexImage2DCHROMIUM>();
-  if (c) {
-    c->Init(target, imageId);
-  }
-}
-
 void TraceBeginCHROMIUM(GLuint category_bucket_id, GLuint name_bucket_id) {
   gles2::cmds::TraceBeginCHROMIUM* c =
       GetCmdSpace<gles2::cmds::TraceBeginCHROMIUM>();
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index 7c33d18041938..6906b17f47edf 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -4476,7 +4476,6 @@ const GLubyte* GLES2Implementation::GetStringHelper(GLenum name) {
     // Adds extensions implemented on client side only.
     if (name == GL_EXTENSIONS) {
       str += std::string(str.empty() ? "" : " ") +
-             "GL_CHROMIUM_image "
              "GL_CHROMIUM_map_sub "
              "GL_CHROMIUM_ordering_barrier "
              "GL_CHROMIUM_sync_point "
@@ -7190,94 +7189,6 @@ bool GLES2Implementation::CanDecodeWithHardwareAcceleration(
   return false;
 }
 
-namespace {
-
-bool CreateImageValidInternalFormat(GLenum internalformat,
-                                    const Capabilities& capabilities) {
-  switch (internalformat) {
-    case GL_R16_EXT:
-      return capabilities.texture_norm16;
-    case GL_RGB10_A2_EXT:
-      return capabilities.image_ar30 || capabilities.image_ab30;
-    case GL_RGB_YCBCR_P010_CHROMIUM:
-      return capabilities.image_ycbcr_p010;
-    case GL_RED:
-    case GL_RG_EXT:
-    case GL_RGB:
-    case GL_RGBA:
-    case GL_RGB_YCBCR_422_CHROMIUM:
-    case GL_RGB_YCBCR_420V_CHROMIUM:
-    case GL_RGB_YCRCB_420_CHROMIUM:
-    case GL_BGRA_EXT:
-      return true;
-    default:
-      return false;
-  }
-}
-
-}  // namespace
-
-GLuint GLES2Implementation::CreateImageCHROMIUMHelper(ClientBuffer buffer,
-                                                      GLsizei width,
-                                                      GLsizei height,
-                                                      GLenum internalformat) {
-  if (width <= 0) {
-    SetGLError(GL_INVALID_VALUE, "glCreateImageCHROMIUM", "width <= 0");
-    return 0;
-  }
-
-  if (height <= 0) {
-    SetGLError(GL_INVALID_VALUE, "glCreateImageCHROMIUM", "height <= 0");
-    return 0;
-  }
-
-  if (!CreateImageValidInternalFormat(internalformat, capabilities_)) {
-    SetGLError(GL_INVALID_VALUE, "glCreateImageCHROMIUM", "invalid format");
-    return 0;
-  }
-
-  // CreateImage creates a fence sync so we must flush first to ensure all
-  // previously created fence syncs are flushed first.
-  FlushHelper();
-
-  int32_t image_id = gpu_control_->CreateImage(buffer, width, height);
-  if (image_id < 0) {
-    SetGLError(GL_OUT_OF_MEMORY, "glCreateImageCHROMIUM", "image_id < 0");
-    return 0;
-  }
-  return image_id;
-}
-
-GLuint GLES2Implementation::CreateImageCHROMIUM(ClientBuffer buffer,
-                                                GLsizei width,
-                                                GLsizei height,
-                                                GLenum internalformat) {
-  GPU_CLIENT_SINGLE_THREAD_CHECK();
-  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateImageCHROMIUM(" << width
-                     << ", " << height << ", "
-                     << GLES2Util::GetStringImageInternalFormat(internalformat)
-                     << ")");
-  GLuint image_id =
-      CreateImageCHROMIUMHelper(buffer, width, height, internalformat);
-  CheckGLError();
-  return image_id;
-}
-
-void GLES2Implementation::DestroyImageCHROMIUMHelper(GLuint image_id) {
-  // Flush the command stream to make sure all pending commands
-  // that may refer to the image_id are executed on the service side.
-  helper_->CommandBufferHelper::Flush();
-  gpu_control_->DestroyImage(image_id);
-}
-
-void GLES2Implementation::DestroyImageCHROMIUM(GLuint image_id) {
-  GPU_CLIENT_SINGLE_THREAD_CHECK();
-  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDestroyImageCHROMIUM("
-                     << image_id << ")");
-  DestroyImageCHROMIUMHelper(image_id);
-  CheckGLError();
-}
-
 bool GLES2Implementation::ValidateSize(const char* func, GLsizeiptr size) {
   if (size < 0) {
     SetGLError(GL_INVALID_VALUE, func, "size < 0");
diff --git a/gpu/command_buffer/client/gles2_implementation.h b/gpu/command_buffer/client/gles2_implementation.h
index b8c4ff597882a..86f8eb42d4e5b 100644
--- a/gpu/command_buffer/client/gles2_implementation.h
+++ b/gpu/command_buffer/client/gles2_implementation.h
@@ -549,12 +549,6 @@ class GLES2_IMPL_EXPORT GLES2Implementation : public GLES2Interface,
       const GLuint* baseInstances,
       GLsizei drawcount);
 
-  GLuint CreateImageCHROMIUMHelper(ClientBuffer buffer,
-                                   GLsizei width,
-                                   GLsizei height,
-                                   GLenum internalformat);
-  void DestroyImageCHROMIUMHelper(GLuint image_id);
-
   // Helper for GetVertexAttrib
   bool GetVertexAttribHelper(GLuint index, GLenum pname, uint32_t* param);
 
diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h
index f2ec6d8233dbd..8e1aa82a1d448 100644
--- a/gpu/command_buffer/client/gles2_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_autogen.h
@@ -1021,13 +1021,6 @@ void GetUniformsES3CHROMIUM(GLuint program,
                             GLsizei* size,
                             void* info) override;
 
-GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                           GLsizei width,
-                           GLsizei height,
-                           GLenum internalformat) override;
-
-void DestroyImageCHROMIUM(GLuint image_id) override;
-
 void DescheduleUntilFinishedCHROMIUM() override;
 
 void GetTranslatedShaderSourceANGLE(GLuint shader,
@@ -1104,14 +1097,6 @@ void BindUniformLocationCHROMIUM(GLuint program,
                                  GLint location,
                                  const char* name) override;
 
-void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) override;
-
-void BindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                              GLenum internalformat,
-                                              GLint imageId) override;
-
-void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) override;
-
 void TraceBeginCHROMIUM(const char* category_name,
                         const char* trace_name) override;
 
diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
index 9bff1f350b473..61de0b6562167 100644
--- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
@@ -3326,40 +3326,6 @@ void GLES2Implementation::CopySubTextureCHROMIUM(
   CheckGLError();
 }
 
-void GLES2Implementation::BindTexImage2DCHROMIUM(GLenum target, GLint imageId) {
-  GPU_CLIENT_SINGLE_THREAD_CHECK();
-  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTexImage2DCHROMIUM("
-                     << GLES2Util::GetStringTextureBindTarget(target) << ", "
-                     << imageId << ")");
-  helper_->BindTexImage2DCHROMIUM(target, imageId);
-  CheckGLError();
-}
-
-void GLES2Implementation::BindTexImage2DWithInternalformatCHROMIUM(
-    GLenum target,
-    GLenum internalformat,
-    GLint imageId) {
-  GPU_CLIENT_SINGLE_THREAD_CHECK();
-  GPU_CLIENT_LOG(
-      "[" << GetLogPrefix() << "] glBindTexImage2DWithInternalformatCHROMIUM("
-          << GLES2Util::GetStringTextureBindTarget(target) << ", "
-          << GLES2Util::GetStringTextureInternalFormat(internalformat) << ", "
-          << imageId << ")");
-  helper_->BindTexImage2DWithInternalformatCHROMIUM(target, internalformat,
-                                                    imageId);
-  CheckGLError();
-}
-
-void GLES2Implementation::ReleaseTexImage2DCHROMIUM(GLenum target,
-                                                    GLint imageId) {
-  GPU_CLIENT_SINGLE_THREAD_CHECK();
-  GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glReleaseTexImage2DCHROMIUM("
-                     << GLES2Util::GetStringTextureBindTarget(target) << ", "
-                     << imageId << ")");
-  helper_->ReleaseTexImage2DCHROMIUM(target, imageId);
-  CheckGLError();
-}
-
 void GLES2Implementation::DiscardFramebufferEXT(GLenum target,
                                                 GLsizei count,
                                                 const GLenum* attachments) {
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest.cc b/gpu/command_buffer/client/gles2_implementation_unittest.cc
index c182abcba806c..38b4539f9fd1c 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest.cc
+++ b/gpu/command_buffer/client/gles2_implementation_unittest.cc
@@ -3002,7 +3002,6 @@ TEST_F(GLES2ImplementationTest, GetString) {
   // GL_CHROMIUM_map_sub is hard coded into GLES2Implementation.
   const char* expected_str =
       "foobar "
-      "GL_CHROMIUM_image "
       "GL_CHROMIUM_map_sub "
       "GL_CHROMIUM_ordering_barrier "
       "GL_CHROMIUM_sync_point "
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
index ea92758bb279d..d53173a4c9e2f 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
@@ -2874,39 +2874,6 @@ TEST_F(GLES2ImplementationTest, VertexAttribDivisorANGLE) {
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
-TEST_F(GLES2ImplementationTest, BindTexImage2DCHROMIUM) {
-  struct Cmds {
-    cmds::BindTexImage2DCHROMIUM cmd;
-  };
-  Cmds expected;
-  expected.cmd.Init(GL_TEXTURE_2D, 2);
-
-  gl_->BindTexImage2DCHROMIUM(GL_TEXTURE_2D, 2);
-  EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
-}
-
-TEST_F(GLES2ImplementationTest, BindTexImage2DWithInternalformatCHROMIUM) {
-  struct Cmds {
-    cmds::BindTexImage2DWithInternalformatCHROMIUM cmd;
-  };
-  Cmds expected;
-  expected.cmd.Init(GL_TEXTURE_2D, GL_ALPHA, 3);
-
-  gl_->BindTexImage2DWithInternalformatCHROMIUM(GL_TEXTURE_2D, GL_ALPHA, 3);
-  EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
-}
-
-TEST_F(GLES2ImplementationTest, ReleaseTexImage2DCHROMIUM) {
-  struct Cmds {
-    cmds::ReleaseTexImage2DCHROMIUM cmd;
-  };
-  Cmds expected;
-  expected.cmd.Init(GL_TEXTURE_2D, 2);
-
-  gl_->ReleaseTexImage2DCHROMIUM(GL_TEXTURE_2D, 2);
-  EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
-}
-
 TEST_F(GLES2ImplementationTest, DiscardFramebufferEXT) {
   GLenum data[2][1] = {{0}};
   struct Cmds {
diff --git a/gpu/command_buffer/client/gles2_interface_autogen.h b/gpu/command_buffer/client/gles2_interface_autogen.h
index c35e07b4644f1..e87789500f28a 100644
--- a/gpu/command_buffer/client/gles2_interface_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_autogen.h
@@ -757,11 +757,6 @@ virtual void GetUniformsES3CHROMIUM(GLuint program,
                                     GLsizei bufsize,
                                     GLsizei* size,
                                     void* info) = 0;
-virtual GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                                   GLsizei width,
-                                   GLsizei height,
-                                   GLenum internalformat) = 0;
-virtual void DestroyImageCHROMIUM(GLuint image_id) = 0;
 virtual void DescheduleUntilFinishedCHROMIUM() = 0;
 virtual void GetTranslatedShaderSourceANGLE(GLuint shader,
                                             GLsizei bufsize,
@@ -825,11 +820,6 @@ virtual GLuint CreateAndConsumeTextureCHROMIUM(const GLbyte* mailbox) = 0;
 virtual void BindUniformLocationCHROMIUM(GLuint program,
                                          GLint location,
                                          const char* name) = 0;
-virtual void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) = 0;
-virtual void BindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                                      GLenum internalformat,
-                                                      GLint imageId) = 0;
-virtual void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) = 0;
 virtual void TraceBeginCHROMIUM(const char* category_name,
                                 const char* trace_name) = 0;
 virtual void TraceEndCHROMIUM() = 0;
diff --git a/gpu/command_buffer/client/gles2_interface_stub_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
index fa3798f519d34..8350fc4e22ea3 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
@@ -733,11 +733,6 @@ void GetUniformsES3CHROMIUM(GLuint program,
                             GLsizei bufsize,
                             GLsizei* size,
                             void* info) override;
-GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                           GLsizei width,
-                           GLsizei height,
-                           GLenum internalformat) override;
-void DestroyImageCHROMIUM(GLuint image_id) override;
 void DescheduleUntilFinishedCHROMIUM() override;
 void GetTranslatedShaderSourceANGLE(GLuint shader,
                                     GLsizei bufsize,
@@ -801,11 +796,6 @@ GLuint CreateAndConsumeTextureCHROMIUM(const GLbyte* mailbox) override;
 void BindUniformLocationCHROMIUM(GLuint program,
                                  GLint location,
                                  const char* name) override;
-void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) override;
-void BindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                              GLenum internalformat,
-                                              GLint imageId) override;
-void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) override;
 void TraceBeginCHROMIUM(const char* category_name,
                         const char* trace_name) override;
 void TraceEndCHROMIUM() override;
diff --git a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
index 76fb3d2f1f8a7..d0188901c0144 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
@@ -991,13 +991,6 @@ void GLES2InterfaceStub::GetUniformsES3CHROMIUM(GLuint /* program */,
                                                 GLsizei /* bufsize */,
                                                 GLsizei* /* size */,
                                                 void* /* info */) {}
-GLuint GLES2InterfaceStub::CreateImageCHROMIUM(ClientBuffer /* buffer */,
-                                               GLsizei /* width */,
-                                               GLsizei /* height */,
-                                               GLenum /* internalformat */) {
-  return 0;
-}
-void GLES2InterfaceStub::DestroyImageCHROMIUM(GLuint /* image_id */) {}
 void GLES2InterfaceStub::DescheduleUntilFinishedCHROMIUM() {}
 void GLES2InterfaceStub::GetTranslatedShaderSourceANGLE(GLuint /* shader */,
                                                         GLsizei /* bufsize */,
@@ -1069,14 +1062,6 @@ GLuint GLES2InterfaceStub::CreateAndConsumeTextureCHROMIUM(
 void GLES2InterfaceStub::BindUniformLocationCHROMIUM(GLuint /* program */,
                                                      GLint /* location */,
                                                      const char* /* name */) {}
-void GLES2InterfaceStub::BindTexImage2DCHROMIUM(GLenum /* target */,
-                                                GLint /* imageId */) {}
-void GLES2InterfaceStub::BindTexImage2DWithInternalformatCHROMIUM(
-    GLenum /* target */,
-    GLenum /* internalformat */,
-    GLint /* imageId */) {}
-void GLES2InterfaceStub::ReleaseTexImage2DCHROMIUM(GLenum /* target */,
-                                                   GLint /* imageId */) {}
 void GLES2InterfaceStub::TraceBeginCHROMIUM(const char* /* category_name */,
                                             const char* /* trace_name */) {}
 void GLES2InterfaceStub::TraceEndCHROMIUM() {}
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
index a8a7a9193c44e..45ddce1c90ebc 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
@@ -733,11 +733,6 @@ void GetUniformsES3CHROMIUM(GLuint program,
                             GLsizei bufsize,
                             GLsizei* size,
                             void* info) override;
-GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                           GLsizei width,
-                           GLsizei height,
-                           GLenum internalformat) override;
-void DestroyImageCHROMIUM(GLuint image_id) override;
 void DescheduleUntilFinishedCHROMIUM() override;
 void GetTranslatedShaderSourceANGLE(GLuint shader,
                                     GLsizei bufsize,
@@ -801,11 +796,6 @@ GLuint CreateAndConsumeTextureCHROMIUM(const GLbyte* mailbox) override;
 void BindUniformLocationCHROMIUM(GLuint program,
                                  GLint location,
                                  const char* name) override;
-void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) override;
-void BindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                              GLenum internalformat,
-                                              GLint imageId) override;
-void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) override;
 void TraceBeginCHROMIUM(const char* category_name,
                         const char* trace_name) override;
 void TraceEndCHROMIUM() override;
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
index 6bc45021b1c68..ab66f113a75e2 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
@@ -2091,19 +2091,6 @@ void GLES2TraceImplementation::GetUniformsES3CHROMIUM(GLuint program,
   gl_->GetUniformsES3CHROMIUM(program, bufsize, size, info);
 }
 
-GLuint GLES2TraceImplementation::CreateImageCHROMIUM(ClientBuffer buffer,
-                                                     GLsizei width,
-                                                     GLsizei height,
-                                                     GLenum internalformat) {
-  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CreateImageCHROMIUM");
-  return gl_->CreateImageCHROMIUM(buffer, width, height, internalformat);
-}
-
-void GLES2TraceImplementation::DestroyImageCHROMIUM(GLuint image_id) {
-  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::DestroyImageCHROMIUM");
-  gl_->DestroyImageCHROMIUM(image_id);
-}
-
 void GLES2TraceImplementation::DescheduleUntilFinishedCHROMIUM() {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu",
                                 "GLES2Trace::DescheduleUntilFinishedCHROMIUM");
@@ -2240,28 +2227,6 @@ void GLES2TraceImplementation::BindUniformLocationCHROMIUM(GLuint program,
   gl_->BindUniformLocationCHROMIUM(program, location, name);
 }
 
-void GLES2TraceImplementation::BindTexImage2DCHROMIUM(GLenum target,
-                                                      GLint imageId) {
-  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BindTexImage2DCHROMIUM");
-  gl_->BindTexImage2DCHROMIUM(target, imageId);
-}
-
-void GLES2TraceImplementation::BindTexImage2DWithInternalformatCHROMIUM(
-    GLenum target,
-    GLenum internalformat,
-    GLint imageId) {
-  TRACE_EVENT_BINARY_EFFICIENT0(
-      "gpu", "GLES2Trace::BindTexImage2DWithInternalformatCHROMIUM");
-  gl_->BindTexImage2DWithInternalformatCHROMIUM(target, internalformat,
-                                                imageId);
-}
-
-void GLES2TraceImplementation::ReleaseTexImage2DCHROMIUM(GLenum target,
-                                                         GLint imageId) {
-  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::ReleaseTexImage2DCHROMIUM");
-  gl_->ReleaseTexImage2DCHROMIUM(target, imageId);
-}
-
 void GLES2TraceImplementation::TraceBeginCHROMIUM(const char* category_name,
                                                   const char* trace_name) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::TraceBeginCHROMIUM");
diff --git a/gpu/command_buffer/client/gpu_control.h b/gpu/command_buffer/client/gpu_control.h
index fc9a6a3383ecc..4bcb13a8e8319 100644
--- a/gpu/command_buffer/client/gpu_control.h
+++ b/gpu/command_buffer/client/gpu_control.h
@@ -47,15 +47,6 @@ class GPU_EXPORT GpuControl {
 
   virtual const Capabilities& GetCapabilities() const = 0;
 
-  // Create an image for a client buffer with the given dimensions. Returns its
-  // ID or -1 on error.
-  virtual int32_t CreateImage(ClientBuffer buffer,
-                              size_t width,
-                              size_t height) = 0;
-
-  // Destroy an image. The ID must be positive.
-  virtual void DestroyImage(int32_t id) = 0;
-
   // Runs |callback| when a query created via glCreateQueryEXT() has cleared
   // passed the glEndQueryEXT() point.
   virtual void SignalQuery(uint32_t query, base::OnceClosure callback) = 0;
diff --git a/gpu/command_buffer/client/raster_implementation_gles_unittest.cc b/gpu/command_buffer/client/raster_implementation_gles_unittest.cc
index ce230d299aa91..7d1fe72b16b6d 100644
--- a/gpu/command_buffer/client/raster_implementation_gles_unittest.cc
+++ b/gpu/command_buffer/client/raster_implementation_gles_unittest.cc
@@ -92,16 +92,6 @@ class RasterMockGLES2Interface : public gles2::GLES2InterfaceStub {
                void(GLuint texture, GLenum mode));
   MOCK_METHOD1(EndSharedImageAccessDirectCHROMIUM, void(GLuint texture));
 
-  // Image objects.
-  MOCK_METHOD4(CreateImageCHROMIUM,
-               GLuint(ClientBuffer buffer,
-                      GLsizei width,
-                      GLsizei height,
-                      GLenum internalformat));
-  MOCK_METHOD2(BindTexImage2DCHROMIUM, void(GLenum target, GLint imageId));
-  MOCK_METHOD2(ReleaseTexImage2DCHROMIUM, void(GLenum target, GLint imageId));
-  MOCK_METHOD1(DestroyImageCHROMIUM, void(GLuint image_id));
-
   // Texture allocation and copying.
   MOCK_METHOD9(TexImage2D,
                void(GLenum target,
diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
index 3c392f592bb82..a7061f6f978f9 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
@@ -14612,126 +14612,6 @@ static_assert(
     offsetof(BindUniformLocationCHROMIUMBucket, name_bucket_id) == 12,
     "offset of BindUniformLocationCHROMIUMBucket name_bucket_id should be 12");
 
-struct BindTexImage2DCHROMIUM {
-  typedef BindTexImage2DCHROMIUM ValueType;
-  static const CommandId kCmdId = kBindTexImage2DCHROMIUM;
-  static const cmd::ArgFlags kArgFlags = cmd::kFixed;
-  static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
-
-  static uint32_t ComputeSize() {
-    return static_cast<uint32_t>(sizeof(ValueType));  // NOLINT
-  }
-
-  void SetHeader() { header.SetCmd<ValueType>(); }
-
-  void Init(GLenum _target, GLint _imageId) {
-    SetHeader();
-    target = _target;
-    imageId = _imageId;
-  }
-
-  void* Set(void* cmd, GLenum _target, GLint _imageId) {
-    static_cast<ValueType*>(cmd)->Init(_target, _imageId);
-    return NextCmdAddress<ValueType>(cmd);
-  }
-
-  gpu::CommandHeader header;
-  uint32_t target;
-  int32_t imageId;
-};
-
-static_assert(sizeof(BindTexImage2DCHROMIUM) == 12,
-              "size of BindTexImage2DCHROMIUM should be 12");
-static_assert(offsetof(BindTexImage2DCHROMIUM, header) == 0,
-              "offset of BindTexImage2DCHROMIUM header should be 0");
-static_assert(offsetof(BindTexImage2DCHROMIUM, target) == 4,
-              "offset of BindTexImage2DCHROMIUM target should be 4");
-static_assert(offsetof(BindTexImage2DCHROMIUM, imageId) == 8,
-              "offset of BindTexImage2DCHROMIUM imageId should be 8");
-
-struct BindTexImage2DWithInternalformatCHROMIUM {
-  typedef BindTexImage2DWithInternalformatCHROMIUM ValueType;
-  static const CommandId kCmdId = kBindTexImage2DWithInternalformatCHROMIUM;
-  static const cmd::ArgFlags kArgFlags = cmd::kFixed;
-  static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
-
-  static uint32_t ComputeSize() {
-    return static_cast<uint32_t>(sizeof(ValueType));  // NOLINT
-  }
-
-  void SetHeader() { header.SetCmd<ValueType>(); }
-
-  void Init(GLenum _target, GLenum _internalformat, GLint _imageId) {
-    SetHeader();
-    target = _target;
-    internalformat = _internalformat;
-    imageId = _imageId;
-  }
-
-  void* Set(void* cmd, GLenum _target, GLenum _internalformat, GLint _imageId) {
-    static_cast<ValueType*>(cmd)->Init(_target, _internalformat, _imageId);
-    return NextCmdAddress<ValueType>(cmd);
-  }
-
-  gpu::CommandHeader header;
-  uint32_t target;
-  uint32_t internalformat;
-  int32_t imageId;
-};
-
-static_assert(sizeof(BindTexImage2DWithInternalformatCHROMIUM) == 16,
-              "size of BindTexImage2DWithInternalformatCHROMIUM should be 16");
-static_assert(
-    offsetof(BindTexImage2DWithInternalformatCHROMIUM, header) == 0,
-    "offset of BindTexImage2DWithInternalformatCHROMIUM header should be 0");
-static_assert(
-    offsetof(BindTexImage2DWithInternalformatCHROMIUM, target) == 4,
-    "offset of BindTexImage2DWithInternalformatCHROMIUM target should be 4");
-static_assert(offsetof(BindTexImage2DWithInternalformatCHROMIUM,
-                       internalformat) == 8,
-              "offset of BindTexImage2DWithInternalformatCHROMIUM "
-              "internalformat should be 8");
-static_assert(
-    offsetof(BindTexImage2DWithInternalformatCHROMIUM, imageId) == 12,
-    "offset of BindTexImage2DWithInternalformatCHROMIUM imageId should be 12");
-
-struct ReleaseTexImage2DCHROMIUM {
-  typedef ReleaseTexImage2DCHROMIUM ValueType;
-  static const CommandId kCmdId = kReleaseTexImage2DCHROMIUM;
-  static const cmd::ArgFlags kArgFlags = cmd::kFixed;
-  static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
-
-  static uint32_t ComputeSize() {
-    return static_cast<uint32_t>(sizeof(ValueType));  // NOLINT
-  }
-
-  void SetHeader() { header.SetCmd<ValueType>(); }
-
-  void Init(GLenum _target, GLint _imageId) {
-    SetHeader();
-    target = _target;
-    imageId = _imageId;
-  }
-
-  void* Set(void* cmd, GLenum _target, GLint _imageId) {
-    static_cast<ValueType*>(cmd)->Init(_target, _imageId);
-    return NextCmdAddress<ValueType>(cmd);
-  }
-
-  gpu::CommandHeader header;
-  uint32_t target;
-  int32_t imageId;
-};
-
-static_assert(sizeof(ReleaseTexImage2DCHROMIUM) == 12,
-              "size of ReleaseTexImage2DCHROMIUM should be 12");
-static_assert(offsetof(ReleaseTexImage2DCHROMIUM, header) == 0,
-              "offset of ReleaseTexImage2DCHROMIUM header should be 0");
-static_assert(offsetof(ReleaseTexImage2DCHROMIUM, target) == 4,
-              "offset of ReleaseTexImage2DCHROMIUM target should be 4");
-static_assert(offsetof(ReleaseTexImage2DCHROMIUM, imageId) == 8,
-              "offset of ReleaseTexImage2DCHROMIUM imageId should be 8");
-
 struct TraceBeginCHROMIUM {
   typedef TraceBeginCHROMIUM ValueType;
   static const CommandId kCmdId = kTraceBeginCHROMIUM;
diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
index 6f23f44bec62d..41b430d267720 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -4814,47 +4814,6 @@ TEST_F(GLES2FormatTest, BindUniformLocationCHROMIUMBucket) {
   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
 }
 
-TEST_F(GLES2FormatTest, BindTexImage2DCHROMIUM) {
-  cmds::BindTexImage2DCHROMIUM& cmd =
-      *GetBufferAs<cmds::BindTexImage2DCHROMIUM>();
-  void* next_cmd =
-      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12));
-  EXPECT_EQ(static_cast<uint32_t>(cmds::BindTexImage2DCHROMIUM::kCmdId),
-            cmd.header.command);
-  EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
-  EXPECT_EQ(static_cast<GLint>(12), cmd.imageId);
-  CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
-}
-
-TEST_F(GLES2FormatTest, BindTexImage2DWithInternalformatCHROMIUM) {
-  cmds::BindTexImage2DWithInternalformatCHROMIUM& cmd =
-      *GetBufferAs<cmds::BindTexImage2DWithInternalformatCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
-                           static_cast<GLenum>(12), static_cast<GLint>(13));
-  EXPECT_EQ(static_cast<uint32_t>(
-                cmds::BindTexImage2DWithInternalformatCHROMIUM::kCmdId),
-            cmd.header.command);
-  EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
-  EXPECT_EQ(static_cast<GLenum>(12), cmd.internalformat);
-  EXPECT_EQ(static_cast<GLint>(13), cmd.imageId);
-  CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
-}
-
-TEST_F(GLES2FormatTest, ReleaseTexImage2DCHROMIUM) {
-  cmds::ReleaseTexImage2DCHROMIUM& cmd =
-      *GetBufferAs<cmds::ReleaseTexImage2DCHROMIUM>();
-  void* next_cmd =
-      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12));
-  EXPECT_EQ(static_cast<uint32_t>(cmds::ReleaseTexImage2DCHROMIUM::kCmdId),
-            cmd.header.command);
-  EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
-  EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
-  EXPECT_EQ(static_cast<GLint>(12), cmd.imageId);
-  CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
-}
-
 TEST_F(GLES2FormatTest, TraceBeginCHROMIUM) {
   cmds::TraceBeginCHROMIUM& cmd = *GetBufferAs<cmds::TraceBeginCHROMIUM>();
   void* next_cmd =
diff --git a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
index ea3a56cb63920..437031db4fb5f 100644
--- a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
@@ -302,57 +302,54 @@
   OP(ProduceTextureDirectCHROMIUMImmediate)                    /* 543 */ \
   OP(CreateAndConsumeTextureINTERNALImmediate)                 /* 544 */ \
   OP(BindUniformLocationCHROMIUMBucket)                        /* 545 */ \
-  OP(BindTexImage2DCHROMIUM)                                   /* 546 */ \
-  OP(BindTexImage2DWithInternalformatCHROMIUM)                 /* 547 */ \
-  OP(ReleaseTexImage2DCHROMIUM)                                /* 548 */ \
-  OP(TraceBeginCHROMIUM)                                       /* 549 */ \
-  OP(TraceEndCHROMIUM)                                         /* 550 */ \
-  OP(DiscardFramebufferEXTImmediate)                           /* 551 */ \
-  OP(LoseContextCHROMIUM)                                      /* 552 */ \
-  OP(DrawBuffersEXTImmediate)                                  /* 553 */ \
-  OP(DiscardBackbufferCHROMIUM)                                /* 554 */ \
-  OP(ScheduleOverlayPlaneCHROMIUM)                             /* 555 */ \
-  OP(ScheduleCALayerSharedStateCHROMIUM)                       /* 556 */ \
-  OP(ScheduleCALayerCHROMIUM)                                  /* 557 */ \
-  OP(ScheduleCALayerInUseQueryCHROMIUMImmediate)               /* 558 */ \
-  OP(CommitOverlayPlanesCHROMIUM)                              /* 559 */ \
-  OP(FlushDriverCachesCHROMIUM)                                /* 560 */ \
-  OP(ScheduleDCLayerCHROMIUM)                                  /* 561 */ \
-  OP(SetActiveURLCHROMIUM)                                     /* 562 */ \
-  OP(ContextVisibilityHintCHROMIUM)                            /* 563 */ \
-  OP(CoverageModulationCHROMIUM)                               /* 564 */ \
-  OP(BlendBarrierKHR)                                          /* 565 */ \
-  OP(BindFragDataLocationIndexedEXTBucket)                     /* 566 */ \
-  OP(BindFragDataLocationEXTBucket)                            /* 567 */ \
-  OP(GetFragDataIndexEXT)                                      /* 568 */ \
-  OP(SwapBuffersWithBoundsCHROMIUMImmediate)                   /* 569 */ \
-  OP(SetDrawRectangleCHROMIUM)                                 /* 570 */ \
-  OP(SetEnableDCLayersCHROMIUM)                                /* 571 */ \
-  OP(InitializeDiscardableTextureCHROMIUM)                     /* 572 */ \
-  OP(UnlockDiscardableTextureCHROMIUM)                         /* 573 */ \
-  OP(LockDiscardableTextureCHROMIUM)                           /* 574 */ \
-  OP(TexStorage2DImageCHROMIUM)                                /* 575 */ \
-  OP(SetColorSpaceMetadataCHROMIUM)                            /* 576 */ \
-  OP(WindowRectanglesEXTImmediate)                             /* 577 */ \
-  OP(CreateGpuFenceINTERNAL)                                   /* 578 */ \
-  OP(WaitGpuFenceCHROMIUM)                                     /* 579 */ \
-  OP(DestroyGpuFenceCHROMIUM)                                  /* 580 */ \
-  OP(SetReadbackBufferShadowAllocationINTERNAL)                /* 581 */ \
-  OP(FramebufferTextureMultiviewOVR)                           /* 582 */ \
-  OP(MaxShaderCompilerThreadsKHR)                              /* 583 */ \
-  OP(CreateAndTexStorage2DSharedImageINTERNALImmediate)        /* 584 */ \
-  OP(BeginSharedImageAccessDirectCHROMIUM)                     /* 585 */ \
-  OP(EndSharedImageAccessDirectCHROMIUM)                       /* 586 */ \
-  OP(BeginBatchReadAccessSharedImageCHROMIUM)                  /* 587 */ \
-  OP(EndBatchReadAccessSharedImageCHROMIUM)                    /* 588 */ \
-  OP(EnableiOES)                                               /* 589 */ \
-  OP(DisableiOES)                                              /* 590 */ \
-  OP(BlendEquationiOES)                                        /* 591 */ \
-  OP(BlendEquationSeparateiOES)                                /* 592 */ \
-  OP(BlendFunciOES)                                            /* 593 */ \
-  OP(BlendFuncSeparateiOES)                                    /* 594 */ \
-  OP(ColorMaskiOES)                                            /* 595 */ \
-  OP(IsEnablediOES)                                            /* 596 */
+  OP(TraceBeginCHROMIUM)                                       /* 546 */ \
+  OP(TraceEndCHROMIUM)                                         /* 547 */ \
+  OP(DiscardFramebufferEXTImmediate)                           /* 548 */ \
+  OP(LoseContextCHROMIUM)                                      /* 549 */ \
+  OP(DrawBuffersEXTImmediate)                                  /* 550 */ \
+  OP(DiscardBackbufferCHROMIUM)                                /* 551 */ \
+  OP(ScheduleOverlayPlaneCHROMIUM)                             /* 552 */ \
+  OP(ScheduleCALayerSharedStateCHROMIUM)                       /* 553 */ \
+  OP(ScheduleCALayerCHROMIUM)                                  /* 554 */ \
+  OP(ScheduleCALayerInUseQueryCHROMIUMImmediate)               /* 555 */ \
+  OP(CommitOverlayPlanesCHROMIUM)                              /* 556 */ \
+  OP(FlushDriverCachesCHROMIUM)                                /* 557 */ \
+  OP(ScheduleDCLayerCHROMIUM)                                  /* 558 */ \
+  OP(SetActiveURLCHROMIUM)                                     /* 559 */ \
+  OP(ContextVisibilityHintCHROMIUM)                            /* 560 */ \
+  OP(CoverageModulationCHROMIUM)                               /* 561 */ \
+  OP(BlendBarrierKHR)                                          /* 562 */ \
+  OP(BindFragDataLocationIndexedEXTBucket)                     /* 563 */ \
+  OP(BindFragDataLocationEXTBucket)                            /* 564 */ \
+  OP(GetFragDataIndexEXT)                                      /* 565 */ \
+  OP(SwapBuffersWithBoundsCHROMIUMImmediate)                   /* 566 */ \
+  OP(SetDrawRectangleCHROMIUM)                                 /* 567 */ \
+  OP(SetEnableDCLayersCHROMIUM)                                /* 568 */ \
+  OP(InitializeDiscardableTextureCHROMIUM)                     /* 569 */ \
+  OP(UnlockDiscardableTextureCHROMIUM)                         /* 570 */ \
+  OP(LockDiscardableTextureCHROMIUM)                           /* 571 */ \
+  OP(TexStorage2DImageCHROMIUM)                                /* 572 */ \
+  OP(SetColorSpaceMetadataCHROMIUM)                            /* 573 */ \
+  OP(WindowRectanglesEXTImmediate)                             /* 574 */ \
+  OP(CreateGpuFenceINTERNAL)                                   /* 575 */ \
+  OP(WaitGpuFenceCHROMIUM)                                     /* 576 */ \
+  OP(DestroyGpuFenceCHROMIUM)                                  /* 577 */ \
+  OP(SetReadbackBufferShadowAllocationINTERNAL)                /* 578 */ \
+  OP(FramebufferTextureMultiviewOVR)                           /* 579 */ \
+  OP(MaxShaderCompilerThreadsKHR)                              /* 580 */ \
+  OP(CreateAndTexStorage2DSharedImageINTERNALImmediate)        /* 581 */ \
+  OP(BeginSharedImageAccessDirectCHROMIUM)                     /* 582 */ \
+  OP(EndSharedImageAccessDirectCHROMIUM)                       /* 583 */ \
+  OP(BeginBatchReadAccessSharedImageCHROMIUM)                  /* 584 */ \
+  OP(EndBatchReadAccessSharedImageCHROMIUM)                    /* 585 */ \
+  OP(EnableiOES)                                               /* 586 */ \
+  OP(DisableiOES)                                              /* 587 */ \
+  OP(BlendEquationiOES)                                        /* 588 */ \
+  OP(BlendEquationSeparateiOES)                                /* 589 */ \
+  OP(BlendFunciOES)                                            /* 590 */ \
+  OP(BlendFuncSeparateiOES)                                    /* 591 */ \
+  OP(ColorMaskiOES)                                            /* 592 */ \
+  OP(IsEnablediOES)                                            /* 593 */
 
 enum CommandId {
   kOneBeforeStartPoint =
diff --git a/gpu/command_buffer/gles2_cmd_buffer_functions.txt b/gpu/command_buffer/gles2_cmd_buffer_functions.txt
index f6e8734ed32fd..22a77da5d85a3 100644
--- a/gpu/command_buffer/gles2_cmd_buffer_functions.txt
+++ b/gpu/command_buffer/gles2_cmd_buffer_functions.txt
@@ -310,8 +310,6 @@ GL_APICALL void         GL_APIENTRY glGetProgramInfoCHROMIUM (GLidProgram progra
 GL_APICALL void         GL_APIENTRY glGetUniformBlocksCHROMIUM (GLidProgram program, GLsizeiNotNegative bufsize, GLsizei* size, void* info);
 GL_APICALL void         GL_APIENTRY glGetTransformFeedbackVaryingsCHROMIUM (GLidProgram program, GLsizeiNotNegative bufsize, GLsizei* size, void* info);
 GL_APICALL void         GL_APIENTRY glGetUniformsES3CHROMIUM (GLidProgram program, GLsizeiNotNegative bufsize, GLsizei* size, void* info);
-GL_APICALL GLuint       GL_APIENTRY glCreateImageCHROMIUM (ClientBuffer buffer, GLsizei width, GLsizei height, GLenum internalformat);
-GL_APICALL void         GL_APIENTRY glDestroyImageCHROMIUM (GLuint image_id);
 GL_APICALL void         GL_APIENTRY glDescheduleUntilFinishedCHROMIUM (void);
 GL_APICALL void         GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLidShader shader, GLsizeiNotNegative bufsize, GLsizeiOptional* length, char* source);
 GL_APICALL void         GL_APIENTRY glPostSubBufferCHROMIUM (GLuint64 swap_id, GLint x, GLint y, GLint width, GLint height, GLbitfieldSwapBuffersFlags flags = 0);
@@ -326,9 +324,6 @@ GL_APICALL void         GL_APIENTRY glProduceTextureDirectCHROMIUM (GLidBindText
 GL_APICALL GLuint       GL_APIENTRY glCreateAndConsumeTextureCHROMIUM (const GLbyte* mailbox);
 GL_APICALL void         GL_APIENTRY glCreateAndConsumeTextureINTERNAL (GLuint texture, const GLbyte* mailbox);
 GL_APICALL void         GL_APIENTRY glBindUniformLocationCHROMIUM (GLidProgram program, GLint location, const char* name);
-GL_APICALL void         GL_APIENTRY glBindTexImage2DCHROMIUM (GLenumTextureBindTarget target, GLint imageId);
-GL_APICALL void         GL_APIENTRY glBindTexImage2DWithInternalformatCHROMIUM (GLenumTextureBindTarget target, GLenumTextureInternalFormat internalformat, GLint imageId);
-GL_APICALL void         GL_APIENTRY glReleaseTexImage2DCHROMIUM (GLenumTextureBindTarget target, GLint imageId);
 GL_APICALL void         GL_APIENTRY glTraceBeginCHROMIUM (const char* category_name, const char* trace_name);
 GL_APICALL void         GL_APIENTRY glTraceEndCHROMIUM (void);
 GL_APICALL void         GL_APIENTRY glDiscardFramebufferEXT (GLenumFramebufferTarget target, GLsizei count, const GLenum* attachments);
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 4847ff3403f31..54a14f92efcca 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -1242,20 +1242,6 @@ class GLES2DecoderImpl : public GLES2Decoder,
                  uint32_t texture_target,
                  gl::GLImage* image,
                  bool can_bind_to_sampler) override;
-  void DoBindTexImage2DCHROMIUM(
-      GLenum target,
-      GLint image_id);
-  void DoBindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                                  GLenum internalformat,
-                                                  GLint image_id);
-  // Common implementation of DoBindTexImage2DCHROMIUM entry points.
-  void BindTexImage2DCHROMIUMImpl(const char* function_name,
-                                  GLenum target,
-                                  GLenum internalformat,
-                                  GLint image_id);
-  void DoReleaseTexImage2DCHROMIUM(
-      GLenum target,
-      GLint image_id);
 
   void DoTraceEndCHROMIUM(void);
 
@@ -19119,118 +19105,6 @@ void GLES2DecoderImpl::BindImage(uint32_t client_texture_id,
                                        : gpu::gles2::Texture::UNBOUND);
 }
 
-void GLES2DecoderImpl::DoBindTexImage2DCHROMIUM(
-    GLenum target, GLint image_id) {
-  TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoBindTexImage2DCHROMIUM");
-
-  BindTexImage2DCHROMIUMImpl("glBindTexImage2DCHROMIUM", target, 0, image_id);
-}
-
-void GLES2DecoderImpl::DoBindTexImage2DWithInternalformatCHROMIUM(
-    GLenum target,
-    GLenum internalformat,
-    GLint image_id) {
-  TRACE_EVENT0("gpu",
-               "GLES2DecoderImpl::DoBindTexImage2DWithInternalformatCHROMIUM");
-
-  BindTexImage2DCHROMIUMImpl("glBindTexImage2DWithInternalformatCHROMIUM",
-                             target, internalformat, image_id);
-}
-
-void GLES2DecoderImpl::BindTexImage2DCHROMIUMImpl(const char* function_name,
-                                                  GLenum target,
-                                                  GLenum internalformat,
-                                                  GLint image_id) {
-  if (target == GL_TEXTURE_CUBE_MAP) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_ENUM, function_name, "invalid target");
-    return;
-  }
-
-  // Default target might be conceptually valid, but disallow it to avoid
-  // accidents.
-  TextureRef* texture_ref =
-      texture_manager()->GetTextureInfoForTargetUnlessDefault(&state_, target);
-  if (!texture_ref) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, function_name, "no texture bound");
-    return;
-  }
-
-  gl::GLImage* image = image_manager()->LookupImage(image_id);
-  if (!image) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, function_name,
-                       "no image found with the given ID");
-    return;
-  }
-
-  Texture::ImageState image_state = Texture::UNBOUND;
-
-  if (image->ShouldBindOrCopy() == gl::GLImage::BIND) {
-    ScopedGLErrorSuppressor suppressor(
-        "GLES2DecoderImpl::DoBindTexImage2DCHROMIUM", error_state_.get());
-
-    // Note: We fallback to using CopyTexImage() before the texture is used
-    // when BindTexImage() fails.
-    if (internalformat) {
-      if (image->BindTexImageWithInternalformat(target, internalformat))
-        image_state = Texture::BOUND;
-    } else {
-      if (image->BindTexImage(target))
-        image_state = Texture::BOUND;
-    }
-  }
-
-  gfx::Size size = image->GetSize();
-  GLenum texture_internalformat =
-      internalformat ? internalformat : image->GetInternalFormat();
-  texture_manager()->SetLevelInfo(texture_ref, target, 0,
-                                  texture_internalformat, size.width(),
-                                  size.height(), 1, 0, image->GetDataFormat(),
-                                  image->GetDataType(), gfx::Rect(size));
-  texture_manager()->SetLevelImage(texture_ref, target, 0, image, image_state);
-}
-
-void GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM(
-    GLenum target, GLint image_id) {
-  TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM");
-
-  // Default target might be conceptually valid, but disallow it to avoid
-  // accidents.
-  TextureRef* texture_ref =
-      texture_manager()->GetTextureInfoForTargetUnlessDefault(&state_, target);
-  if (!texture_ref) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_OPERATION,
-        "glReleaseTexImage2DCHROMIUM", "no texture bound");
-    return;
-  }
-
-  gl::GLImage* image = image_manager()->LookupImage(image_id);
-  if (!image) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_OPERATION,
-        "glReleaseTexImage2DCHROMIUM", "no image found with the given ID");
-    return;
-  }
-
-  Texture::ImageState image_state;
-
-  // Do nothing when image is not currently bound.
-  if (texture_ref->texture()->GetLevelImage(target, 0, &image_state) != image)
-    return;
-
-  if (image_state == Texture::BOUND) {
-    ScopedGLErrorSuppressor suppressor(
-        "GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM", error_state_.get());
-
-    image->ReleaseTexImage(target);
-    texture_manager()->SetLevelInfo(texture_ref, target, 0, GL_RGBA, 0, 0, 1, 0,
-                                    GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect());
-  }
-
-  texture_manager()->SetLevelImage(texture_ref, target, 0, nullptr,
-                                   Texture::UNBOUND);
-}
-
 error::Error GLES2DecoderImpl::HandleTraceBeginCHROMIUM(
     uint32_t immediate_data_size,
     const volatile void* cmd_data) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index 85544c95213ff..e1361c48202b2 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -5026,64 +5026,6 @@ error::Error GLES2DecoderImpl::HandleCreateAndConsumeTextureINTERNALImmediate(
   return error::kNoError;
 }
 
-error::Error GLES2DecoderImpl::HandleBindTexImage2DCHROMIUM(
-    uint32_t immediate_data_size,
-    const volatile void* cmd_data) {
-  const volatile gles2::cmds::BindTexImage2DCHROMIUM& c =
-      *static_cast<const volatile gles2::cmds::BindTexImage2DCHROMIUM*>(
-          cmd_data);
-  GLenum target = static_cast<GLenum>(c.target);
-  GLint imageId = static_cast<GLint>(c.imageId);
-  if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM("glBindTexImage2DCHROMIUM", target,
-                                    "target");
-    return error::kNoError;
-  }
-  DoBindTexImage2DCHROMIUM(target, imageId);
-  return error::kNoError;
-}
-
-error::Error GLES2DecoderImpl::HandleBindTexImage2DWithInternalformatCHROMIUM(
-    uint32_t immediate_data_size,
-    const volatile void* cmd_data) {
-  const volatile gles2::cmds::BindTexImage2DWithInternalformatCHROMIUM& c =
-      *static_cast<const volatile gles2::cmds::
-                       BindTexImage2DWithInternalformatCHROMIUM*>(cmd_data);
-  GLenum target = static_cast<GLenum>(c.target);
-  GLenum internalformat = static_cast<GLenum>(c.internalformat);
-  GLint imageId = static_cast<GLint>(c.imageId);
-  if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBindTexImage2DWithInternalformatCHROMIUM", target, "target");
-    return error::kNoError;
-  }
-  if (!validators_->texture_internal_format.IsValid(internalformat)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBindTexImage2DWithInternalformatCHROMIUM", internalformat,
-        "internalformat");
-    return error::kNoError;
-  }
-  DoBindTexImage2DWithInternalformatCHROMIUM(target, internalformat, imageId);
-  return error::kNoError;
-}
-
-error::Error GLES2DecoderImpl::HandleReleaseTexImage2DCHROMIUM(
-    uint32_t immediate_data_size,
-    const volatile void* cmd_data) {
-  const volatile gles2::cmds::ReleaseTexImage2DCHROMIUM& c =
-      *static_cast<const volatile gles2::cmds::ReleaseTexImage2DCHROMIUM*>(
-          cmd_data);
-  GLenum target = static_cast<GLenum>(c.target);
-  GLint imageId = static_cast<GLint>(c.imageId);
-  if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM("glReleaseTexImage2DCHROMIUM", target,
-                                    "target");
-    return error::kNoError;
-  }
-  DoReleaseTexImage2DCHROMIUM(target, imageId);
-  return error::kNoError;
-}
-
 error::Error GLES2DecoderImpl::HandleTraceEndCHROMIUM(
     uint32_t immediate_data_size,
     const volatile void* cmd_data) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
index 1ef96d7d44a9a..5188aaa7a03ff 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
@@ -2978,52 +2978,6 @@ error::Error GLES2DecoderPassthroughImpl::HandleSetActiveURLCHROMIUM(
   return error::kNoError;
 }
 
-error::Error GLES2DecoderPassthroughImpl::BindTexImage2DCHROMIUMImpl(
-    GLenum target,
-    GLenum internalformat,
-    GLint imageId) {
-  TextureTarget target_enum = GLenumToTextureTarget(target);
-  if (target_enum == TextureTarget::kCubeMap ||
-      target_enum == TextureTarget::kUnkown) {
-    InsertError(GL_INVALID_ENUM, "Invalid target");
-    return error::kNoError;
-  }
-
-  gl::GLImage* image = group_->image_manager()->LookupImage(imageId);
-  if (image == nullptr) {
-    InsertError(GL_INVALID_OPERATION, "No image found with the given ID");
-    return error::kNoError;
-  }
-
-  const BoundTexture& bound_texture =
-      bound_textures_[static_cast<size_t>(target_enum)][active_texture_unit_];
-  if (bound_texture.texture == nullptr) {
-    InsertError(GL_INVALID_OPERATION, "No texture bound");
-    return error::kNoError;
-  }
-
-  if (image->ShouldBindOrCopy() == gl::GLImage::BIND) {
-    if (internalformat)
-      image->BindTexImageWithInternalformat(target, internalformat);
-    else
-      image->BindTexImage(target);
-  } else {
-    image->CopyTexImage(target);
-  }
-
-  // Target is already validated
-  UpdateTextureSizeFromTarget(target);
-
-  DCHECK(bound_texture.texture != nullptr);
-  bound_texture.texture->SetLevelImage(target, 0, image);
-
-  // If there was any GLImage bound to |target| on this texture unit, then
-  // forget it.
-  RemovePendingBindingTexture(target, active_texture_unit_);
-
-  return error::kNoError;
-}
-
 void GLES2DecoderPassthroughImpl::VerifyServiceTextureObjectsExist() {
   resources_->texture_object_map.ForEach(
       [this](GLuint client_id, scoped_refptr<TexturePassthrough> texture) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h
index 17c788e6c8d47..5eeee8d5ea90f 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h
@@ -469,10 +469,6 @@ class GPU_GLES2_EXPORT GLES2DecoderPassthroughImpl
   // up-to-date.
   void LazilyUpdateCurrentlyBoundElementArrayBuffer();
 
-  error::Error BindTexImage2DCHROMIUMImpl(GLenum target,
-                                          GLenum internalformat,
-                                          GLint image_id);
-
   void VerifyServiceTextureObjectsExist();
 
   bool IsEmulatedFramebufferBound(GLenum target) const;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
index 044308ce03479..4ffa37dbe4fde 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
@@ -888,11 +888,6 @@ error::Error DoCreateAndConsumeTextureINTERNAL(GLuint texture_client_id,
 error::Error DoBindUniformLocationCHROMIUM(GLuint program,
                                            GLint location,
                                            const char* name);
-error::Error DoBindTexImage2DCHROMIUM(GLenum target, GLint imageId);
-error::Error DoBindTexImage2DWithInternalformatCHROMIUM(GLenum target,
-                                                        GLenum internalformat,
-                                                        GLint imageId);
-error::Error DoReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId);
 error::Error DoTraceBeginCHROMIUM(const char* category_name,
                                   const char* trace_name);
 error::Error DoTraceEndCHROMIUM();
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
index 59caeecc40d1e..7894f4c6ad0a2 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
@@ -4677,55 +4677,6 @@ error::Error GLES2DecoderPassthroughImpl::DoBindUniformLocationCHROMIUM(
   return error::kNoError;
 }
 
-error::Error GLES2DecoderPassthroughImpl::DoBindTexImage2DCHROMIUM(
-    GLenum target,
-    GLint imageId) {
-  return BindTexImage2DCHROMIUMImpl(target, 0, imageId);
-}
-
-error::Error
-GLES2DecoderPassthroughImpl::DoBindTexImage2DWithInternalformatCHROMIUM(
-    GLenum target,
-    GLenum internalformat,
-    GLint imageId) {
-  return BindTexImage2DCHROMIUMImpl(target, internalformat, imageId);
-}
-
-error::Error GLES2DecoderPassthroughImpl::DoReleaseTexImage2DCHROMIUM(
-    GLenum target,
-    GLint imageId) {
-  TextureTarget target_enum = GLenumToTextureTarget(target);
-  if (target_enum == TextureTarget::kCubeMap ||
-      target_enum == TextureTarget::kUnkown) {
-    InsertError(GL_INVALID_ENUM, "Invalid target");
-    return error::kNoError;
-  }
-
-  const BoundTexture& bound_texture =
-      bound_textures_[static_cast<size_t>(target_enum)][active_texture_unit_];
-  if (bound_texture.texture == nullptr) {
-    InsertError(GL_INVALID_OPERATION, "No texture bound");
-    return error::kNoError;
-  }
-
-  gl::GLImage* image = group_->image_manager()->LookupImage(imageId);
-  if (image == nullptr) {
-    InsertError(GL_INVALID_OPERATION, "No image found with the given ID");
-    return error::kNoError;
-  }
-
-  // Only release the image if it is currently bound
-  if (bound_texture.texture->GetLevelImage(target, 0) == image) {
-    image->ReleaseTexImage(target);
-    bound_texture.texture->SetLevelImage(target, 0, nullptr);
-  }
-
-  // Target is already validated
-  UpdateTextureSizeFromTarget(target);
-
-  return error::kNoError;
-}
-
 error::Error GLES2DecoderPassthroughImpl::DoTraceBeginCHROMIUM(
     const char* category_name,
     const char* trace_name) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
index d24c1f37389b1..ca1ab171618be 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
@@ -4302,54 +4302,6 @@ GLES2DecoderPassthroughImpl::HandleCreateAndConsumeTextureINTERNALImmediate(
   return error::kNoError;
 }
 
-error::Error GLES2DecoderPassthroughImpl::HandleBindTexImage2DCHROMIUM(
-    uint32_t immediate_data_size,
-    const volatile void* cmd_data) {
-  const volatile gles2::cmds::BindTexImage2DCHROMIUM& c =
-      *static_cast<const volatile gles2::cmds::BindTexImage2DCHROMIUM*>(
-          cmd_data);
-  GLenum target = static_cast<GLenum>(c.target);
-  GLint imageId = static_cast<GLint>(c.imageId);
-  error::Error error = DoBindTexImage2DCHROMIUM(target, imageId);
-  if (error != error::kNoError) {
-    return error;
-  }
-  return error::kNoError;
-}
-
-error::Error
-GLES2DecoderPassthroughImpl::HandleBindTexImage2DWithInternalformatCHROMIUM(
-    uint32_t immediate_data_size,
-    const volatile void* cmd_data) {
-  const volatile gles2::cmds::BindTexImage2DWithInternalformatCHROMIUM& c =
-      *static_cast<const volatile gles2::cmds::
-                       BindTexImage2DWithInternalformatCHROMIUM*>(cmd_data);
-  GLenum target = static_cast<GLenum>(c.target);
-  GLenum internalformat = static_cast<GLenum>(c.internalformat);
-  GLint imageId = static_cast<GLint>(c.imageId);
-  error::Error error = DoBindTexImage2DWithInternalformatCHROMIUM(
-      target, internalformat, imageId);
-  if (error != error::kNoError) {
-    return error;
-  }
-  return error::kNoError;
-}
-
-error::Error GLES2DecoderPassthroughImpl::HandleReleaseTexImage2DCHROMIUM(
-    uint32_t immediate_data_size,
-    const volatile void* cmd_data) {
-  const volatile gles2::cmds::ReleaseTexImage2DCHROMIUM& c =
-      *static_cast<const volatile gles2::cmds::ReleaseTexImage2DCHROMIUM*>(
-          cmd_data);
-  GLenum target = static_cast<GLenum>(c.target);
-  GLint imageId = static_cast<GLint>(c.imageId);
-  error::Error error = DoReleaseTexImage2DCHROMIUM(target, imageId);
-  if (error != error::kNoError) {
-    return error;
-  }
-  return error::kNoError;
-}
-
 error::Error GLES2DecoderPassthroughImpl::HandleTraceEndCHROMIUM(
     uint32_t immediate_data_size,
     const volatile void* cmd_data) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
index 8aa9a7703ced9..1ab9e6d8a2a09 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
@@ -1402,19 +1402,6 @@ void GLES2DecoderTestBase::DoDeleteTexture(
   }
 }
 
-void GLES2DecoderTestBase::DoBindTexImage2DCHROMIUM(GLenum target,
-                                                    GLint image_id) {
-  cmds::BindTexImage2DCHROMIUM bind_tex_image_2d_cmd;
-  bind_tex_image_2d_cmd.Init(target, image_id);
-  EXPECT_CALL(*gl_, GetError())
-      .Times(AtMost(2))
-      .WillOnce(Return(GL_NO_ERROR))
-      .WillOnce(Return(GL_NO_ERROR))
-      .RetiresOnSaturation();
-  EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd));
-  EXPECT_EQ(GL_NO_ERROR, GetGLError());
-}
-
 void GLES2DecoderTestBase::DoTexImage2D(GLenum target,
                                         GLint level,
                                         GLenum internal_format,
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
index 7773b9f73236f..db9c633328c79 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
@@ -343,7 +343,6 @@ class GLES2DecoderTestBase : public ::testing::TestWithParam<bool>,
                               GLint border,
                               GLsizei size,
                               uint32_t bucket_id);
-  void DoBindTexImage2DCHROMIUM(GLenum target, GLint image_id);
   void DoTexImage2D(GLenum target,
                     GLint level,
                     GLenum internal_format,
diff --git a/gpu/command_buffer/tests/decoder_perftest.cc b/gpu/command_buffer/tests/decoder_perftest.cc
index 8010a4ef99066..47b3222e732f1 100644
--- a/gpu/command_buffer/tests/decoder_perftest.cc
+++ b/gpu/command_buffer/tests/decoder_perftest.cc
@@ -265,15 +265,6 @@ class RecordReplayContext : public GpuControl {
 
   const Capabilities& GetCapabilities() const override { return capabilities_; }
 
-  int32_t CreateImage(ClientBuffer buffer,
-                      size_t width,
-                      size_t height) override {
-    NOTIMPLEMENTED();
-    return -1;
-  }
-
-  void DestroyImage(int32_t id) override { NOTREACHED(); }
-
   void SignalQuery(uint32_t query, base::OnceClosure callback) override {
     NOTREACHED();
   }
diff --git a/gpu/command_buffer/tests/gl_manager.cc b/gpu/command_buffer/tests/gl_manager.cc
index 52f4a676a702b..62d7145ebff4e 100644
--- a/gpu/command_buffer/tests/gl_manager.cc
+++ b/gpu/command_buffer/tests/gl_manager.cc
@@ -497,69 +497,6 @@ const Capabilities& GLManager::GetCapabilities() const {
   return capabilities_;
 }
 
-int32_t GLManager::CreateImage(ClientBuffer buffer,
-                               size_t width,
-                               size_t height) {
-  gfx::Size size(width, height);
-  scoped_refptr<gl::GLImage> gl_image;
-
-#if BUILDFLAG(IS_MAC)
-  if (use_iosurface_memory_buffers_) {
-    IOSurfaceGpuMemoryBuffer* gpu_memory_buffer =
-        IOSurfaceGpuMemoryBuffer::FromClientBuffer(buffer);
-    unsigned internalformat =
-        gl::BufferFormatToGLInternalFormat(gpu_memory_buffer->GetFormat());
-    const uint32_t io_surface_plane = 0;
-    scoped_refptr<gl::GLImageIOSurface> image(
-        gl::GLImageIOSurface::Create(size, internalformat));
-    if (!image->Initialize(gpu_memory_buffer->iosurface(), io_surface_plane,
-                           gfx::GenericSharedMemoryId(1),
-                           gfx::BufferFormat::BGRA_8888)) {
-      return -1;
-    }
-    gl_image = image;
-  }
-#endif  // BUILDFLAG(IS_MAC)
-
-  if (use_native_pixmap_memory_buffers_) {
-    gfx::GpuMemoryBuffer* gpu_memory_buffer =
-        reinterpret_cast<gfx::GpuMemoryBuffer*>(buffer);
-    DCHECK(gpu_memory_buffer);
-    if (gpu_memory_buffer->GetType() == gfx::NATIVE_PIXMAP) {
-      gfx::GpuMemoryBufferHandle handle = gpu_memory_buffer->CloneHandle();
-      gfx::BufferFormat format = gpu_memory_buffer->GetFormat();
-      gl_image =
-          gpu_memory_buffer_factory_->AsImageFactory()
-              ->CreateImageForGpuMemoryBuffer(
-                  std::move(handle), size, format, gfx::BufferPlane::DEFAULT,
-                  gpu::kDisplayCompositorClientId, gpu::kNullSurfaceHandle);
-      if (!gl_image)
-        return -1;
-    }
-  }
-
-  if (!gl_image) {
-    GpuMemoryBufferImpl* gpu_memory_buffer =
-        GpuMemoryBufferImpl::FromClientBuffer(buffer);
-
-    gfx::BufferFormat format = gpu_memory_buffer->GetFormat();
-    auto image = base::MakeRefCounted<gl::GLImageRefCountedMemory>(size);
-    if (!image->Initialize(gpu_memory_buffer->bytes(), format)) {
-      return -1;
-    }
-    gl_image = image;
-  }
-
-  static int32_t next_id = 1;
-  int32_t new_id = next_id++;
-  image_manager_.AddImage(gl_image.get(), new_id);
-  return new_id;
-}
-
-void GLManager::DestroyImage(int32_t id) {
-  image_manager_.RemoveImage(id);
-}
-
 void GLManager::SignalQuery(uint32_t query, base::OnceClosure callback) {
   NOTREACHED();
 }
diff --git a/gpu/command_buffer/tests/gl_manager.h b/gpu/command_buffer/tests/gl_manager.h
index 47d37434cabc2..f7a089408aeda 100644
--- a/gpu/command_buffer/tests/gl_manager.h
+++ b/gpu/command_buffer/tests/gl_manager.h
@@ -145,10 +145,6 @@ class GLManager : private GpuControl {
   // GpuControl implementation.
   void SetGpuControlClient(GpuControlClient*) override;
   const Capabilities& GetCapabilities() const override;
-  int32_t CreateImage(ClientBuffer buffer,
-                      size_t width,
-                      size_t height) override;
-  void DestroyImage(int32_t id) override;
   void SignalQuery(uint32_t query, base::OnceClosure callback) override;
   void CreateGpuFence(uint32_t gpu_fence_id, ClientGpuFence source) override;
   void GetGpuFence(uint32_t gpu_fence_id,
diff --git a/gpu/gles2_conform_support/egl/context.cc b/gpu/gles2_conform_support/egl/context.cc
index c8cca8f26cfdf..ac5f54909306a 100644
--- a/gpu/gles2_conform_support/egl/context.cc
+++ b/gpu/gles2_conform_support/egl/context.cc
@@ -173,15 +173,6 @@ const gpu::Capabilities& Context::GetCapabilities() const {
   return capabilities_;
 }
 
-int32_t Context::CreateImage(ClientBuffer buffer, size_t width, size_t height) {
-  NOTREACHED();
-  return -1;
-}
-
-void Context::DestroyImage(int32_t id) {
-  NOTREACHED();
-}
-
 void Context::SignalQuery(uint32_t query, base::OnceClosure callback) {
   NOTREACHED();
 }
diff --git a/gpu/gles2_conform_support/egl/context.h b/gpu/gles2_conform_support/egl/context.h
index edae298ca8e46..88507570aa062 100644
--- a/gpu/gles2_conform_support/egl/context.h
+++ b/gpu/gles2_conform_support/egl/context.h
@@ -67,10 +67,6 @@ class Context : public base::RefCountedThreadSafe<Context>,
   // GpuControl implementation.
   void SetGpuControlClient(gpu::GpuControlClient*) override;
   const gpu::Capabilities& GetCapabilities() const override;
-  int32_t CreateImage(ClientBuffer buffer,
-                      size_t width,
-                      size_t height) override;
-  void DestroyImage(int32_t id) override;
   void SignalQuery(uint32_t query, base::OnceClosure callback) override;
   void CreateGpuFence(uint32_t gpu_fence_id, ClientGpuFence source) override;
   void GetGpuFence(uint32_t gpu_fence_id,
diff --git a/gpu/ipc/client/command_buffer_proxy_impl.cc b/gpu/ipc/client/command_buffer_proxy_impl.cc
index 0e20b90112333..15b5e1332184c 100644
--- a/gpu/ipc/client/command_buffer_proxy_impl.cc
+++ b/gpu/ipc/client/command_buffer_proxy_impl.cc
@@ -405,70 +405,6 @@ const gpu::Capabilities& CommandBufferProxyImpl::GetCapabilities() const {
   return capabilities_;
 }
 
-int32_t CommandBufferProxyImpl::CreateImage(ClientBuffer buffer,
-                                            size_t width,
-                                            size_t height) {
-  CheckLock();
-  base::AutoLock lock(last_state_lock_);
-  if (last_state_.error != gpu::error::kNoError)
-    return -1;
-
-  int32_t new_id = channel_->ReserveImageId();
-
-  gfx::GpuMemoryBuffer* gpu_memory_buffer =
-      reinterpret_cast<gfx::GpuMemoryBuffer*>(buffer);
-  DCHECK(gpu_memory_buffer);
-
-  // This handle is owned by the GPU process and must be passed to it or it
-  // will leak. In otherwords, do not early out on error between here and the
-  // sending of the CreateImage IPC below.
-  gfx::GpuMemoryBufferHandle handle = gpu_memory_buffer->CloneHandle();
-  bool requires_sync_token = handle.type == gfx::IO_SURFACE_BUFFER;
-
-  uint64_t image_fence_sync = 0;
-  if (requires_sync_token)
-    image_fence_sync = GenerateFenceSyncRelease();
-
-  DCHECK(gpu::IsImageFromGpuMemoryBufferFormatSupported(
-      gpu_memory_buffer->GetFormat(), capabilities_))
-      << gfx::BufferFormatToString(gpu_memory_buffer->GetFormat());
-  DCHECK(gpu::IsImageSizeValidForGpuMemoryBufferFormat(
-      gfx::Size(width, height), gpu_memory_buffer->GetFormat()))
-      << gfx::BufferFormatToString(gpu_memory_buffer->GetFormat());
-
-  auto params = mojom::CreateImageParams::New();
-  params->id = new_id;
-  params->gpu_memory_buffer = std::move(handle);
-  params->size = gfx::Size(width, height);
-  params->format = gpu_memory_buffer->GetFormat();
-  params->plane = gfx::BufferPlane::DEFAULT;
-  params->image_release_count = image_fence_sync;
-  command_buffer_->CreateImage(std::move(params));
-
-  if (image_fence_sync) {
-    gpu::SyncToken sync_token(GetNamespaceID(), GetCommandBufferID(),
-                              image_fence_sync);
-
-    // Force a synchronous IPC to validate sync token.
-    EnsureWorkVisible();
-    sync_token.SetVerifyFlush();
-
-    gpu_memory_buffer_manager_->SetDestructionSyncToken(gpu_memory_buffer,
-                                                        sync_token);
-  }
-
-  return new_id;
-}
-
-void CommandBufferProxyImpl::DestroyImage(int32_t id) {
-  CheckLock();
-  base::AutoLock lock(last_state_lock_);
-  if (last_state_.error != gpu::error::kNoError)
-    return;
-
-  command_buffer_->DestroyImage(id);
-}
-
 void CommandBufferProxyImpl::SetLock(base::Lock* lock) {
   lock_ = lock;
 }
diff --git a/gpu/ipc/client/command_buffer_proxy_impl.h b/gpu/ipc/client/command_buffer_proxy_impl.h
index f820353383848..16cb82027ca6e 100644
--- a/gpu/ipc/client/command_buffer_proxy_impl.h
+++ b/gpu/ipc/client/command_buffer_proxy_impl.h
@@ -125,10 +125,6 @@ class GPU_EXPORT CommandBufferProxyImpl : public gpu::CommandBuffer,
   // gpu::GpuControl implementation:
   void SetGpuControlClient(GpuControlClient* client) override;
   const gpu::Capabilities& GetCapabilities() const override;
-  int32_t CreateImage(ClientBuffer buffer,
-                      size_t width,
-                      size_t height) override;
-  void DestroyImage(int32_t id) override;
   void SignalQuery(uint32_t query, base::OnceClosure callback) override;
   void CreateGpuFence(uint32_t gpu_fence_id, ClientGpuFence source) override;
   void GetGpuFence(uint32_t gpu_fence_id,
diff --git a/gpu/ipc/common/gpu_channel.mojom b/gpu/ipc/common/gpu_channel.mojom
index ca6f51ad9c8ee..20ad182cfe529 100644
--- a/gpu/ipc/common/gpu_channel.mojom
+++ b/gpu/ipc/common/gpu_channel.mojom
@@ -237,15 +237,6 @@ interface GpuChannel {
   ReleaseSysmemBufferCollection(mojo_base.mojom.UnguessableToken id);
 };
 
-struct CreateImageParams {
-  int32 id;
-  gfx.mojom.GpuMemoryBufferHandle gpu_memory_buffer;
-  gfx.mojom.Size size;
-  gfx.mojom.BufferFormat format;
-  gfx.mojom.BufferPlane plane;
-  uint64 image_release_count;
-};
-
 // Interface used to issue commands to a specific CommandBuffer instance in the
 // GPU process.
 interface CommandBuffer {
@@ -266,17 +257,6 @@ interface CommandBuffer {
   // Requests retrieval of a GpuFenceHandle by ID.
   GetGpuFenceHandle(uint32 id) => (gfx.mojom.GpuFenceHandle? fence_handle);
 
-  // Creates an image from an existing gpu memory buffer. The id that can be
-  // used to identify the image from a command buffer.
-  //
-  // TODO(crbug.com/1216120): Remove this once CreateImageCHROMIUM is gone.
-  CreateImage(CreateImageParams params);
-
-  // Destroys a previously created image identified by `id`.
-  //
-  // TODO(crbug.com/1216120): Remove this once CreateImageCHROMIUM is gone.
-  DestroyImage(int32 id);
-
   // Asynchronously waits until the SyncToken is signaled, then sends a
   // corresponding SignalAck on the CommandBufferClient interface, using
   // `signal_id` to identify this request.
diff --git a/gpu/ipc/in_process_command_buffer.cc b/gpu/ipc/in_process_command_buffer.cc
index d0bb7081c3100..e3e135294c6b6 100644
--- a/gpu/ipc/in_process_command_buffer.cc
+++ b/gpu/ipc/in_process_command_buffer.cc
@@ -96,8 +96,6 @@ namespace gpu {
 
 namespace {
 
-base::AtomicSequenceNumber g_next_image_id;
-
 template <typename T>
 base::OnceClosure WrapTaskWithResult(base::OnceCallback<T(void)> task,
                                      T* result,
@@ -1064,118 +1062,6 @@ const GpuFeatureInfo& InProcessCommandBuffer::GetGpuFeatureInfo() const {
   return task_executor_->gpu_feature_info();
 }
 
-int32_t InProcessCommandBuffer::CreateImage(ClientBuffer buffer,
-                                            size_t width,
-                                            size_t height) {
-  DCHECK(gpu_memory_buffer_manager_);
-  gfx::GpuMemoryBuffer* gpu_memory_buffer =
-      reinterpret_cast<gfx::GpuMemoryBuffer*>(buffer);
-  DCHECK(gpu_memory_buffer);
-
-  int32_t new_id = g_next_image_id.GetNext() + 1;
-
-  DCHECK(IsImageFromGpuMemoryBufferFormatSupported(
-      gpu_memory_buffer->GetFormat(), capabilities_));
-
-  // This handle is owned by the GPU thread and must be passed to it or it
-  // will leak. In otherwords, do not early out on error between here and the
-  // queuing of the CreateImage task below.
-  gfx::GpuMemoryBufferHandle handle = gpu_memory_buffer->CloneHandle();
-  bool requires_sync_point = handle.type == gfx::IO_SURFACE_BUFFER;
-
-  uint64_t fence_sync = 0;
-  if (requires_sync_point)
-    fence_sync = GenerateFenceSyncRelease();
-
-  ScheduleGpuTask(base::BindOnce(
-      &InProcessCommandBuffer::CreateImageOnGpuThread,
-      gpu_thread_weak_ptr_factory_.GetWeakPtr(), new_id, std::move(handle),
-      gfx::Size(base::checked_cast<int>(width),
-                base::checked_cast<int>(height)),
-      gpu_memory_buffer->GetFormat(), fence_sync));
-
-  if (fence_sync) {
-    SyncToken sync_token(GetNamespaceID(), GetCommandBufferID(), fence_sync);
-    sync_token.SetVerifyFlush();
-    gpu_memory_buffer_manager_->SetDestructionSyncToken(gpu_memory_buffer,
-                                                        sync_token);
-  }
-
-  return new_id;
-}
-
-void InProcessCommandBuffer::CreateImageOnGpuThread(
-    int32_t id,
-    gfx::GpuMemoryBufferHandle handle,
-    const gfx::Size& size,
-    gfx::BufferFormat format,
-    uint64_t fence_sync) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(gpu_sequence_checker_);
-  gles2::ImageManager* image_manager = task_executor_->image_manager();
-  DCHECK(image_manager);
-  if (image_manager->LookupImage(id)) {
-    LOG(ERROR) << "Image already exists with same ID.";
-    return;
-  }
-
-  switch (handle.type) {
-    case gfx::SHARED_MEMORY_BUFFER: {
-      if (!base::IsValueInRangeForNumericType<size_t>(handle.stride)) {
-        LOG(ERROR) << "Invalid stride for image.";
-        return;
-      }
-      auto image = base::MakeRefCounted<gl::GLImageSharedMemory>(size);
-      if (!image->Initialize(handle.region, handle.id, format, handle.offset,
-                             handle.stride)) {
-        LOG(ERROR) << "Failed to initialize image.";
-        return;
-      }
-
-      image_manager->AddImage(image.get(), id);
-      break;
-    }
-    default: {
-      if (!image_factory_) {
-        LOG(ERROR) << "Image factory missing but required by buffer type.";
-        return;
-      }
-
-      scoped_refptr<gl::GLImage> image =
-          image_factory_->CreateImageForGpuMemoryBuffer(
-              std::move(handle), size, format, gfx::BufferPlane::DEFAULT,
-              kDisplayCompositorClientId, kNullSurfaceHandle);
-      if (!image.get()) {
-        LOG(ERROR) << "Failed to create image for buffer.";
-        return;
-      }
-
-      image_manager->AddImage(image.get(), id);
-      break;
-    }
-  }
-
-  if (fence_sync)
-    sync_point_client_state_->ReleaseFenceSync(fence_sync);
-}
-
-void InProcessCommandBuffer::DestroyImage(int32_t id) {
-  ScheduleGpuTask(
-      base::BindOnce(&InProcessCommandBuffer::DestroyImageOnGpuThread,
-                     gpu_thread_weak_ptr_factory_.GetWeakPtr(), id));
-}
-
-void InProcessCommandBuffer::DestroyImageOnGpuThread(int32_t id) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(gpu_sequence_checker_);
-  gles2::ImageManager* image_manager = task_executor_->image_manager();
-  DCHECK(image_manager);
-  if (!image_manager->LookupImage(id)) {
-    LOG(ERROR) << "Image with ID doesn't exist.";
-    return;
-  }
-
-  image_manager->RemoveImage(id);
-}
-
 void InProcessCommandBuffer::OnConsoleMessage(int32_t id,
                                               const std::string& message) {
   // TODO(piman): implement this.
diff --git a/gpu/ipc/in_process_command_buffer.h b/gpu/ipc/in_process_command_buffer.h
index 20b099de02cab..fd2bac4bf1351 100644
--- a/gpu/ipc/in_process_command_buffer.h
+++ b/gpu/ipc/in_process_command_buffer.h
@@ -61,7 +61,6 @@ class GLShareGroup;
 
 namespace gfx {
 struct GpuFenceHandle;
-class Size;
 }
 
 namespace ui {
@@ -153,10 +152,6 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer
   void SetGpuControlClient(GpuControlClient*) override;
   // GetCapabilities() can be called on any thread.
   const Capabilities& GetCapabilities() const override;
-  int32_t CreateImage(ClientBuffer buffer,
-                      size_t width,
-                      size_t height) override;
-  void DestroyImage(int32_t id) override;
   void SignalQuery(uint32_t query_id, base::OnceClosure callback) override;
   void CreateGpuFence(uint32_t gpu_fence_id, ClientGpuFence source) override;
   void GetGpuFence(uint32_t gpu_fence_id,
@@ -327,13 +322,6 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer
                                          scoped_refptr<Buffer> buffer);
   void DestroyTransferBufferOnGpuThread(int32_t id);
 
-  void CreateImageOnGpuThread(int32_t id,
-                              gfx::GpuMemoryBufferHandle handle,
-                              const gfx::Size& size,
-                              gfx::BufferFormat format,
-                              uint64_t fence_sync);
-  void DestroyImageOnGpuThread(int32_t id);
-
   void SetGetBufferOnGpuThread(int32_t shm_id, base::WaitableEvent* completion);
 
   void CreateGpuFenceOnGpuThread(uint32_t gpu_fence_id,
diff --git a/gpu/ipc/service/command_buffer_stub.cc b/gpu/ipc/service/command_buffer_stub.cc
index 0c08d33a7eb8c..e62d3ecc9577a 100644
--- a/gpu/ipc/service/command_buffer_stub.cc
+++ b/gpu/ipc/service/command_buffer_stub.cc
@@ -545,14 +545,6 @@ void CommandBufferStub::GetGpuFenceHandle(uint32_t id,
   std::move(callback).Run(gfx::GpuFenceHandle());
 }
 
-void CommandBufferStub::CreateImage(mojom::CreateImageParamsPtr params) {
-  DLOG(ERROR) << "CreateImage unsupported.";
-}
-
-void CommandBufferStub::DestroyImage(int32_t id) {
-  DLOG(ERROR) << "DestroyImage unsupported.";
-}
-
 void CommandBufferStub::OnDestroyTransferBuffer(int32_t id) {
   TRACE_EVENT0("gpu", "CommandBufferStub::OnDestroyTransferBuffer");
 
diff --git a/gpu/ipc/service/command_buffer_stub.h b/gpu/ipc/service/command_buffer_stub.h
index 7d3c6b018d536..2f06894795cd8 100644
--- a/gpu/ipc/service/command_buffer_stub.h
+++ b/gpu/ipc/service/command_buffer_stub.h
@@ -217,8 +217,6 @@ class GPU_IPC_SERVICE_EXPORT CommandBufferStub
                                 gfx::GpuFenceHandle handle) override;
   void GetGpuFenceHandle(uint32_t id,
                          GetGpuFenceHandleCallback callback) override;
-  void CreateImage(mojom::CreateImageParamsPtr params) override;
-  void DestroyImage(int32_t id) override;
   void SignalSyncToken(const SyncToken& sync_token, uint32_t id) override;
   void SignalQuery(uint32_t query, uint32_t id) override;
   void BindMediaReceiver(mojo::GenericPendingAssociatedReceiver receiver,
diff --git a/gpu/ipc/service/gles2_command_buffer_stub.cc b/gpu/ipc/service/gles2_command_buffer_stub.cc
index edbb14e0c564e..4529e2b16e03b 100644
--- a/gpu/ipc/service/gles2_command_buffer_stub.cc
+++ b/gpu/ipc/service/gles2_command_buffer_stub.cc
@@ -503,68 +503,6 @@ void GLES2CommandBufferStub::GetGpuFenceHandle(
   std::move(callback).Run(std::move(handle));
 }
 
-void GLES2CommandBufferStub::CreateImage(mojom::CreateImageParamsPtr params) {
-  TRACE_EVENT0("gpu", "GLES2CommandBufferStub::OnCreateImage");
-  const int32_t id = params->id;
-  const gfx::Size& size = params->size;
-  const gfx::BufferFormat& format = params->format;
-  const gfx::BufferPlane& plane = params->plane;
-  const uint64_t image_release_count = params->image_release_count;
-  ScopedContextOperation operation(*this);
-  if (!operation.is_context_current())
-    return;
-
-  gles2::ImageManager* image_manager = channel_->image_manager();
-  DCHECK(image_manager);
-  if (image_manager->LookupImage(id)) {
-    LOG(ERROR) << "Image already exists with same ID.";
-    return;
-  }
-
-  if (!gpu::IsImageFromGpuMemoryBufferFormatSupported(
-          format, gles2_decoder_->GetCapabilities())) {
-    LOG(ERROR) << "Format is not supported.";
-    return;
-  }
-
-  if (!gpu::IsImageSizeValidForGpuMemoryBufferFormat(size, format)) {
-    LOG(ERROR) << "Invalid image size for format.";
-    return;
-  }
-
-  if (!gpu::IsPlaneValidForGpuMemoryBufferFormat(plane, format)) {
-    LOG(ERROR) << "Invalid plane " << gfx::BufferPlaneToString(plane) << " for "
-               << gfx::BufferFormatToString(format);
-    return;
-  }
-
-  scoped_refptr<gl::GLImage> image = channel()->CreateImageForGpuMemoryBuffer(
-      std::move(params->gpu_memory_buffer), size, format, plane,
-      surface_handle_);
-  if (!image.get())
-    return;
-
-  image_manager->AddImage(image.get(), id);
-  if (image_release_count)
-    sync_point_client_state_->ReleaseFenceSync(image_release_count);
-}
-
-void GLES2CommandBufferStub::DestroyImage(int32_t id) {
-  TRACE_EVENT0("gpu", "GLES2CommandBufferStub::OnDestroyImage");
-  ScopedContextOperation operation(*this);
-  if (!operation.is_context_current())
-    return;
-
-  gles2::ImageManager* image_manager = channel_->image_manager();
-  DCHECK(image_manager);
-  if (!image_manager->LookupImage(id)) {
-    LOG(ERROR) << "Image with ID doesn't exist.";
-    return;
-  }
-
-  image_manager->RemoveImage(id);
-}
-
 void GLES2CommandBufferStub::OnSwapBuffers(uint64_t swap_id, uint32_t flags) {
   pending_swap_completed_params_.push_back({swap_id, flags});
   pending_presented_params_.push_back({swap_id, flags});
diff --git a/gpu/ipc/service/gles2_command_buffer_stub.h b/gpu/ipc/service/gles2_command_buffer_stub.h
index 28c0b1b958181..ee8ef7e560b40 100644
--- a/gpu/ipc/service/gles2_command_buffer_stub.h
+++ b/gpu/ipc/service/gles2_command_buffer_stub.h
@@ -68,8 +68,6 @@ class GPU_IPC_SERVICE_EXPORT GLES2CommandBufferStub
                                 gfx::GpuFenceHandle handle) override;
   void GetGpuFenceHandle(uint32_t gpu_fence_id,
                          GetGpuFenceHandleCallback callback) override;
-  void CreateImage(mojom::CreateImageParamsPtr params) override;
-  void DestroyImage(int32_t id) override;
 
   void OnSwapBuffers(uint64_t swap_id, uint32_t flags) override;
 
diff --git a/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h b/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h
index 73153f6fe0271..bdc39b7589913 100644
--- a/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h
+++ b/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h
@@ -77,8 +77,7 @@ class GPU_IPC_SERVICE_EXPORT GpuMemoryBufferFactoryIOSurface
   typedef std::unordered_map<IOSurfaceMapKey,
                              base::ScopedCFTypeRef<IOSurfaceRef>>
       IOSurfaceMap;
-  // TODO(reveman): Remove |io_surfaces_| and allow IOSurface backed GMBs to be
-  // used with any GPU process by passing a mach_port to CreateImageCHROMIUM.
+
   IOSurfaceMap io_surfaces_;
   base::Lock io_surfaces_lock_;
 };
diff --git a/ppapi/proxy/ppapi_command_buffer_proxy.cc b/ppapi/proxy/ppapi_command_buffer_proxy.cc
index a76aaab2f9ab9..52dbfdac7b4f3 100644
--- a/ppapi/proxy/ppapi_command_buffer_proxy.cc
+++ b/ppapi/proxy/ppapi_command_buffer_proxy.cc
@@ -257,17 +257,6 @@ const gpu::Capabilities& PpapiCommandBufferProxy::GetCapabilities() const {
   return capabilities_;
 }
 
-int32_t PpapiCommandBufferProxy::CreateImage(ClientBuffer buffer,
-                                             size_t width,
-                                             size_t height) {
-  NOTREACHED();
-  return -1;
-}
-
-void PpapiCommandBufferProxy::DestroyImage(int32_t id) {
-  NOTREACHED();
-}
-
 bool PpapiCommandBufferProxy::Send(IPC::Message* msg) {
   DCHECK(last_state_.error == gpu::error::kNoError);
 
diff --git a/ppapi/proxy/ppapi_command_buffer_proxy.h b/ppapi/proxy/ppapi_command_buffer_proxy.h
index ee2bcec1d4915..5a9dffa43f8d3 100644
--- a/ppapi/proxy/ppapi_command_buffer_proxy.h
+++ b/ppapi/proxy/ppapi_command_buffer_proxy.h
@@ -62,10 +62,6 @@ class PPAPI_PROXY_EXPORT PpapiCommandBufferProxy : public gpu::CommandBuffer,
   // gpu::GpuControl implementation:
   void SetGpuControlClient(gpu::GpuControlClient*) override;
   const gpu::Capabilities& GetCapabilities() const override;
-  int32_t CreateImage(ClientBuffer buffer,
-                      size_t width,
-                      size_t height) override;
-  void DestroyImage(int32_t id) override;
   void SignalQuery(uint32_t query, base::OnceClosure callback) override;
   void CreateGpuFence(uint32_t gpu_fence_id, ClientGpuFence source) override;
   void GetGpuFence(uint32_t gpu_fence_id,
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h
index f27b2006556f9..45e41d2d83f0c 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h
@@ -204,10 +204,8 @@ class GLES2InterfaceForTests : public gpu::gles2::GLES2InterfaceStub,
   void ProduceTextureDirectCHROMIUM(GLuint texture, GLbyte* mailbox) override {
     ++current_mailbox_byte_;
     memset(mailbox, current_mailbox_byte_, GL_MAILBOX_SIZE_CHROMIUM);
-    if (!create_image_chromium_fail_) {
-      ASSERT_TRUE(texture_sizes_.Contains(texture));
-      most_recently_produced_size_ = texture_sizes_.at(texture);
-    }
+    ASSERT_TRUE(texture_sizes_.Contains(texture));
+    most_recently_produced_size_ = texture_sizes_.at(texture);
   }
 
   void TexImage2D(GLenum target,
@@ -225,44 +223,6 @@ class GLES2InterfaceForTests : public gpu::gles2::GLES2InterfaceStub,
     }
   }
 
-  GLuint CreateImageCHROMIUM(ClientBuffer buffer,
-                             GLsizei width,
-                             GLsizei height,
-                             GLenum internalformat) override {
-    if (create_image_chromium_fail_)
-      return 0;
-    image_sizes_.Set(current_image_id_, gfx::Size(width, height));
-    return current_image_id_++;
-  }
-
-  MOCK_METHOD1(DestroyImageMock, void(GLuint imageId));
-  void DestroyImageCHROMIUM(GLuint image_id) override {
-    image_sizes_.erase(image_id);
-    // No textures should be bound to this.
-    CHECK(image_to_texture_map_.find(image_id) == image_to_texture_map_.end());
-    image_sizes_.erase(image_id);
-    DestroyImageMock(image_id);
-  }
-
-  MOCK_METHOD1(BindTexImage2DMock, void(GLint imageId));
-  void BindTexImage2DCHROMIUM(GLenum target, GLint image_id) override {
-    if (target == kImageCHROMIUMTarget) {
-      GLuint value = bound_textures_.find(target)->value;
-      texture_sizes_.Set(value, image_sizes_.find(image_id)->value);
-      image_to_texture_map_.Set(image_id, value);
-      BindTexImage2DMock(image_id);
-    }
-  }
-
-  MOCK_METHOD1(ReleaseTexImage2DMock, void(GLint imageId));
-  void ReleaseTexImage2DCHROMIUM(GLenum target, GLint image_id) override {
-    if (target == kImageCHROMIUMTarget) {
-      image_sizes_.Set(current_image_id_, gfx::Size());
-      image_to_texture_map_.erase(image_id);
-      ReleaseTexImage2DMock(image_id);
-    }
-  }
-
   void GenTextures(GLsizei n, GLuint* textures) override {
     static GLuint id = 1;
     for (GLsizei i = 0; i < n; ++i)
@@ -357,10 +317,6 @@ class GLES2InterfaceForTests : public gpu::gles2::GLES2InterfaceStub,
     return most_recently_produced_size_;
   }
 
-  void SetCreateImageChromiumFail(bool fail) {
-    create_image_chromium_fail_ = fail;
-  }
-
   // Saves current GL state for later verification.
   void SaveState() { saved_state_ = state_; }
   void VerifyStateHasNotChangedSinceSave() const {
@@ -432,7 +388,6 @@ class GLES2InterfaceForTests : public gpu::gles2::GLES2InterfaceStub,
   gpu::SyncToken most_recently_waited_sync_token_;
   GLbyte current_mailbox_byte_ = 0;
   gfx::Size most_recently_produced_size_;
-  bool create_image_chromium_fail_ = false;
   GLuint current_image_id_ = 1;
   HashMap<GLuint, gfx::Size> texture_sizes_;
   HashMap<GLuint, gfx::Size> image_sizes_;