| Index: ui/gl/gl_bindings_autogen_gl.cc
 | 
| diff --git a/ui/gl/gl_bindings_autogen_gl.cc b/ui/gl/gl_bindings_autogen_gl.cc
 | 
| index f1100e8986f665755fdb0f0544820b9846300a7c..a65571792c964590d857c31a8ce513035b300b50 100644
 | 
| --- a/ui/gl/gl_bindings_autogen_gl.cc
 | 
| +++ b/ui/gl/gl_bindings_autogen_gl.cc
 | 
| @@ -212,6 +212,7 @@ void DriverGL::InitializeStaticBindings() {
 | 
|        GetGLProcAddress("glGetProgramInfoLog"));
 | 
|    fn.glGetProgramivFn =
 | 
|        reinterpret_cast<glGetProgramivProc>(GetGLProcAddress("glGetProgramiv"));
 | 
| +  fn.glGetProgramResourceLocationFn = 0;
 | 
|    fn.glGetQueryivFn = 0;
 | 
|    fn.glGetQueryivARBFn = 0;
 | 
|    fn.glGetQueryObjecti64vFn = 0;
 | 
| @@ -232,6 +233,7 @@ void DriverGL::InitializeStaticBindings() {
 | 
|        GetGLProcAddress("glGetShaderSource"));
 | 
|    fn.glGetStringFn =
 | 
|        reinterpret_cast<glGetStringProc>(GetGLProcAddress("glGetString"));
 | 
| +  fn.glGetStringiFn = 0;
 | 
|    fn.glGetSyncivFn = 0;
 | 
|    fn.glGetTexLevelParameterfvFn = 0;
 | 
|    fn.glGetTexLevelParameterivFn = 0;
 | 
| @@ -1272,6 +1274,14 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
 | 
|      DCHECK(fn.glGetProgramBinaryFn);
 | 
|    }
 | 
|  
 | 
| +  debug_fn.glGetProgramResourceLocationFn = 0;
 | 
| +  if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u)) {
 | 
| +    fn.glGetProgramResourceLocationFn =
 | 
| +        reinterpret_cast<glGetProgramResourceLocationProc>(
 | 
| +            GetGLProcAddress("glGetProgramResourceLocation"));
 | 
| +    DCHECK(fn.glGetProgramResourceLocationFn);
 | 
| +  }
 | 
| +
 | 
|    debug_fn.glGetQueryivFn = 0;
 | 
|    if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
 | 
|      fn.glGetQueryivFn =
 | 
| @@ -1387,6 +1397,13 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
 | 
|      DCHECK(fn.glGetShaderPrecisionFormatFn);
 | 
|    }
 | 
|  
 | 
| +  debug_fn.glGetStringiFn = 0;
 | 
| +  if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
 | 
| +    fn.glGetStringiFn =
 | 
| +        reinterpret_cast<glGetStringiProc>(GetGLProcAddress("glGetStringi"));
 | 
| +    DCHECK(fn.glGetStringiFn);
 | 
| +  }
 | 
| +
 | 
|    debug_fn.glGetSyncivFn = 0;
 | 
|    if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
 | 
|        ext.b_GL_ARB_sync) {
 | 
| @@ -3246,6 +3263,20 @@ Debug_glGetProgramiv(GLuint program, GLenum pname, GLint* params) {
 | 
|    g_driver_gl.debug_fn.glGetProgramivFn(program, pname, params);
 | 
|  }
 | 
|  
 | 
| +static GLint GL_BINDING_CALL
 | 
| +Debug_glGetProgramResourceLocation(GLuint program,
 | 
| +                                   GLenum programInterface,
 | 
| +                                   const char* name) {
 | 
| +  GL_SERVICE_LOG("glGetProgramResourceLocation"
 | 
| +                 << "(" << program << ", "
 | 
| +                 << GLEnums::GetStringEnum(programInterface) << ", " << name
 | 
| +                 << ")");
 | 
| +  GLint result = g_driver_gl.debug_fn.glGetProgramResourceLocationFn(
 | 
| +      program, programInterface, name);
 | 
| +  GL_SERVICE_LOG("GL_RESULT: " << result);
 | 
| +  return result;
 | 
| +}
 | 
| +
 | 
|  static void GL_BINDING_CALL
 | 
|  Debug_glGetQueryiv(GLenum target, GLenum pname, GLint* params) {
 | 
|    GL_SERVICE_LOG("glGetQueryiv"
 | 
| @@ -3391,6 +3422,16 @@ static const GLubyte* GL_BINDING_CALL Debug_glGetString(GLenum name) {
 | 
|    return result;
 | 
|  }
 | 
|  
 | 
| +static const GLubyte* GL_BINDING_CALL
 | 
| +Debug_glGetStringi(GLenum name, GLuint index) {
 | 
| +  GL_SERVICE_LOG("glGetStringi"
 | 
| +                 << "(" << GLEnums::GetStringEnum(name) << ", " << index
 | 
| +                 << ")");
 | 
| +  const GLubyte* result = g_driver_gl.debug_fn.glGetStringiFn(name, index);
 | 
| +  GL_SERVICE_LOG("GL_RESULT: " << result);
 | 
| +  return result;
 | 
| +}
 | 
| +
 | 
|  static void GL_BINDING_CALL Debug_glGetSynciv(GLsync sync,
 | 
|                                                GLenum pname,
 | 
|                                                GLsizei bufSize,
 | 
| @@ -5243,6 +5284,10 @@ void DriverGL::InitializeDebugBindings() {
 | 
|      debug_fn.glGetProgramivFn = fn.glGetProgramivFn;
 | 
|      fn.glGetProgramivFn = Debug_glGetProgramiv;
 | 
|    }
 | 
| +  if (!debug_fn.glGetProgramResourceLocationFn) {
 | 
| +    debug_fn.glGetProgramResourceLocationFn = fn.glGetProgramResourceLocationFn;
 | 
| +    fn.glGetProgramResourceLocationFn = Debug_glGetProgramResourceLocation;
 | 
| +  }
 | 
|    if (!debug_fn.glGetQueryivFn) {
 | 
|      debug_fn.glGetQueryivFn = fn.glGetQueryivFn;
 | 
|      fn.glGetQueryivFn = Debug_glGetQueryiv;
 | 
| @@ -5309,6 +5354,10 @@ void DriverGL::InitializeDebugBindings() {
 | 
|      debug_fn.glGetStringFn = fn.glGetStringFn;
 | 
|      fn.glGetStringFn = Debug_glGetString;
 | 
|    }
 | 
| +  if (!debug_fn.glGetStringiFn) {
 | 
| +    debug_fn.glGetStringiFn = fn.glGetStringiFn;
 | 
| +    fn.glGetStringiFn = Debug_glGetStringi;
 | 
| +  }
 | 
|    if (!debug_fn.glGetSyncivFn) {
 | 
|      debug_fn.glGetSyncivFn = fn.glGetSyncivFn;
 | 
|      fn.glGetSyncivFn = Debug_glGetSynciv;
 | 
| @@ -6652,6 +6701,13 @@ void GLApiBase::glGetProgramivFn(GLuint program, GLenum pname, GLint* params) {
 | 
|    driver_->fn.glGetProgramivFn(program, pname, params);
 | 
|  }
 | 
|  
 | 
| +GLint GLApiBase::glGetProgramResourceLocationFn(GLuint program,
 | 
| +                                                GLenum programInterface,
 | 
| +                                                const char* name) {
 | 
| +  return driver_->fn.glGetProgramResourceLocationFn(program, programInterface,
 | 
| +                                                    name);
 | 
| +}
 | 
| +
 | 
|  void GLApiBase::glGetQueryivFn(GLenum target, GLenum pname, GLint* params) {
 | 
|    driver_->fn.glGetQueryivFn(target, pname, params);
 | 
|  }
 | 
| @@ -6740,6 +6796,10 @@ const GLubyte* GLApiBase::glGetStringFn(GLenum name) {
 | 
|    return driver_->fn.glGetStringFn(name);
 | 
|  }
 | 
|  
 | 
| +const GLubyte* GLApiBase::glGetStringiFn(GLenum name, GLuint index) {
 | 
| +  return driver_->fn.glGetStringiFn(name, index);
 | 
| +}
 | 
| +
 | 
|  void GLApiBase::glGetSyncivFn(GLsync sync,
 | 
|                                GLenum pname,
 | 
|                                GLsizei bufSize,
 | 
| @@ -8452,6 +8512,15 @@ void TraceGLApi::glGetProgramivFn(GLuint program, GLenum pname, GLint* params) {
 | 
|    gl_api_->glGetProgramivFn(program, pname, params);
 | 
|  }
 | 
|  
 | 
| +GLint TraceGLApi::glGetProgramResourceLocationFn(GLuint program,
 | 
| +                                                 GLenum programInterface,
 | 
| +                                                 const char* name) {
 | 
| +  TRACE_EVENT_BINARY_EFFICIENT0("gpu",
 | 
| +                                "TraceGLAPI::glGetProgramResourceLocation")
 | 
| +  return gl_api_->glGetProgramResourceLocationFn(program, programInterface,
 | 
| +                                                 name);
 | 
| +}
 | 
| +
 | 
|  void TraceGLApi::glGetQueryivFn(GLenum target, GLenum pname, GLint* params) {
 | 
|    TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryiv")
 | 
|    gl_api_->glGetQueryivFn(target, pname, params);
 | 
| @@ -8559,6 +8628,11 @@ const GLubyte* TraceGLApi::glGetStringFn(GLenum name) {
 | 
|    return gl_api_->glGetStringFn(name);
 | 
|  }
 | 
|  
 | 
| +const GLubyte* TraceGLApi::glGetStringiFn(GLenum name, GLuint index) {
 | 
| +  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetStringi")
 | 
| +  return gl_api_->glGetStringiFn(name, index);
 | 
| +}
 | 
| +
 | 
|  void TraceGLApi::glGetSyncivFn(GLsync sync,
 | 
|                                 GLenum pname,
 | 
|                                 GLsizei bufSize,
 | 
| @@ -10539,6 +10613,16 @@ void NoContextGLApi::glGetProgramivFn(GLuint program,
 | 
|    LOG(ERROR) << "Trying to call glGetProgramiv() without current GL context";
 | 
|  }
 | 
|  
 | 
| +GLint NoContextGLApi::glGetProgramResourceLocationFn(GLuint program,
 | 
| +                                                     GLenum programInterface,
 | 
| +                                                     const char* name) {
 | 
| +  NOTREACHED() << "Trying to call glGetProgramResourceLocation() without "
 | 
| +                  "current GL context";
 | 
| +  LOG(ERROR) << "Trying to call glGetProgramResourceLocation() without current "
 | 
| +                "GL context";
 | 
| +  return 0;
 | 
| +}
 | 
| +
 | 
|  void NoContextGLApi::glGetQueryivFn(GLenum target,
 | 
|                                      GLenum pname,
 | 
|                                      GLint* params) {
 | 
| @@ -10676,6 +10760,12 @@ const GLubyte* NoContextGLApi::glGetStringFn(GLenum name) {
 | 
|    return NULL;
 | 
|  }
 | 
|  
 | 
| +const GLubyte* NoContextGLApi::glGetStringiFn(GLenum name, GLuint index) {
 | 
| +  NOTREACHED() << "Trying to call glGetStringi() without current GL context";
 | 
| +  LOG(ERROR) << "Trying to call glGetStringi() without current GL context";
 | 
| +  return NULL;
 | 
| +}
 | 
| +
 | 
|  void NoContextGLApi::glGetSyncivFn(GLsync sync,
 | 
|                                     GLenum pname,
 | 
|                                     GLsizei bufSize,
 | 
| 
 |