diff options
author | eseidel <eseidel@chromium.org> | 2015-02-20 13:27:31 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-20 21:27:55 +0000 |
commit | b009786cea4f51ddeb80bd0518c5779b00a19dfe (patch) | |
tree | d3ad4ef25079e888629aadd2e1945dacd67a991a /ui | |
parent | 9f532ee3b82a53bbd20f8978199c61c265c82ad2 (diff) | |
download | chromium_src-b009786cea4f51ddeb80bd0518c5779b00a19dfe.zip chromium_src-b009786cea4f51ddeb80bd0518c5779b00a19dfe.tar.gz chromium_src-b009786cea4f51ddeb80bd0518c5779b00a19dfe.tar.bz2 |
Make in-process Skia bindings work with GL ES 3.1
The Nexus 10 has 3.1. Just was missing one stub.
R=kbr@chromium.org
Review URL: https://codereview.chromium.org/942983002
Cr-Commit-Position: refs/heads/master@{#317405}
Diffstat (limited to 'ui')
-rwxr-xr-x | ui/gl/generate_bindings.py | 3 | ||||
-rw-r--r-- | ui/gl/gl_bindings_api_autogen_gl.h | 3 | ||||
-rw-r--r-- | ui/gl/gl_bindings_autogen_gl.cc | 53 | ||||
-rw-r--r-- | ui/gl/gl_bindings_autogen_gl.h | 10 | ||||
-rw-r--r-- | ui/gl/gl_bindings_autogen_mock.cc | 11 | ||||
-rw-r--r-- | ui/gl/gl_bindings_autogen_mock.h | 4 | ||||
-rw-r--r-- | ui/gl/gl_bindings_skia_in_process.cc | 8 | ||||
-rw-r--r-- | ui/gl/gl_mock_autogen_gl.h | 2 |
8 files changed, 94 insertions, 0 deletions
diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py index 2eb2373..3b91dd3 100755 --- a/ui/gl/generate_bindings.py +++ b/ui/gl/generate_bindings.py @@ -562,6 +562,9 @@ GL_FUNCTIONS = [ { 'return_type': 'void', 'names': ['glGetProgramiv'], 'arguments': 'GLuint program, GLenum pname, GLint* params', }, +{ 'return_type': 'GLint', + 'names': ['glGetProgramResourceLocation'], + 'arguments': 'GLuint program, GLenum programInterface, const char* name', }, { 'return_type': 'void', 'versions': [{ 'name': 'glGetQueryiv' }], 'arguments': 'GLenum target, GLenum pname, GLint* params', }, diff --git a/ui/gl/gl_bindings_api_autogen_gl.h b/ui/gl/gl_bindings_api_autogen_gl.h index 8f27b35..9b0366c 100644 --- a/ui/gl/gl_bindings_api_autogen_gl.h +++ b/ui/gl/gl_bindings_api_autogen_gl.h @@ -343,6 +343,9 @@ void glGetProgramInfoLogFn(GLuint program, GLsizei* length, char* infolog) override; void glGetProgramivFn(GLuint program, GLenum pname, GLint* params) override; +GLint glGetProgramResourceLocationFn(GLuint program, + GLenum programInterface, + const char* name) override; void glGetQueryivFn(GLenum target, GLenum pname, GLint* params) override; void glGetQueryivARBFn(GLenum target, GLenum pname, GLint* params) override; void glGetQueryObjecti64vFn(GLuint id, GLenum pname, GLint64* params) override; diff --git a/ui/gl/gl_bindings_autogen_gl.cc b/ui/gl/gl_bindings_autogen_gl.cc index 83e329b..a655717 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; @@ -1273,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 = @@ -3254,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" @@ -5261,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; @@ -6674,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); } @@ -8478,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); @@ -10570,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) { diff --git a/ui/gl/gl_bindings_autogen_gl.h b/ui/gl/gl_bindings_autogen_gl.h index ebf4968..643a236 100644 --- a/ui/gl/gl_bindings_autogen_gl.h +++ b/ui/gl/gl_bindings_autogen_gl.h @@ -406,6 +406,10 @@ typedef void(GL_BINDING_CALL* glGetProgramInfoLogProc)(GLuint program, typedef void(GL_BINDING_CALL* glGetProgramivProc)(GLuint program, GLenum pname, GLint* params); +typedef GLint(GL_BINDING_CALL* glGetProgramResourceLocationProc)( + GLuint program, + GLenum programInterface, + const char* name); typedef void(GL_BINDING_CALL* glGetQueryivProc)(GLenum target, GLenum pname, GLint* params); @@ -1074,6 +1078,7 @@ struct ProcsGL { glGetProgramBinaryProc glGetProgramBinaryFn; glGetProgramInfoLogProc glGetProgramInfoLogFn; glGetProgramivProc glGetProgramivFn; + glGetProgramResourceLocationProc glGetProgramResourceLocationFn; glGetQueryivProc glGetQueryivFn; glGetQueryivARBProc glGetQueryivARBFn; glGetQueryObjecti64vProc glGetQueryObjecti64vFn; @@ -1582,6 +1587,9 @@ class GL_EXPORT GLApi { virtual void glGetProgramivFn(GLuint program, GLenum pname, GLint* params) = 0; + virtual GLint glGetProgramResourceLocationFn(GLuint program, + GLenum programInterface, + const char* name) = 0; virtual void glGetQueryivFn(GLenum target, GLenum pname, GLint* params) = 0; virtual void glGetQueryivARBFn(GLenum target, GLenum pname, @@ -2185,6 +2193,8 @@ class GL_EXPORT GLApi { #define glGetProgramBinary ::gfx::g_current_gl_context->glGetProgramBinaryFn #define glGetProgramInfoLog ::gfx::g_current_gl_context->glGetProgramInfoLogFn #define glGetProgramiv ::gfx::g_current_gl_context->glGetProgramivFn +#define glGetProgramResourceLocation \ + ::gfx::g_current_gl_context->glGetProgramResourceLocationFn #define glGetQueryiv ::gfx::g_current_gl_context->glGetQueryivFn #define glGetQueryivARB ::gfx::g_current_gl_context->glGetQueryivARBFn #define glGetQueryObjecti64v ::gfx::g_current_gl_context->glGetQueryObjecti64vFn diff --git a/ui/gl/gl_bindings_autogen_mock.cc b/ui/gl/gl_bindings_autogen_mock.cc index 49c4709..bf0a857 100644 --- a/ui/gl/gl_bindings_autogen_mock.cc +++ b/ui/gl/gl_bindings_autogen_mock.cc @@ -1223,6 +1223,15 @@ void GL_BINDING_CALL MockGLInterface::Mock_glGetProgramInfoLog(GLuint program, interface_->GetProgramInfoLog(program, bufsize, length, infolog); } +GLint GL_BINDING_CALL +MockGLInterface::Mock_glGetProgramResourceLocation(GLuint program, + GLenum programInterface, + const char* name) { + MakeFunctionUnique("glGetProgramResourceLocation"); + return interface_->GetProgramResourceLocation(program, programInterface, + name); +} + void GL_BINDING_CALL MockGLInterface::Mock_glGetProgramiv(GLuint program, GLenum pname, GLint* params) { @@ -2866,6 +2875,8 @@ void* GL_BINDING_CALL MockGLInterface::GetGLProcAddress(const char* name) { return reinterpret_cast<void*>(Mock_glGetProgramBinaryOES); if (strcmp(name, "glGetProgramInfoLog") == 0) return reinterpret_cast<void*>(Mock_glGetProgramInfoLog); + if (strcmp(name, "glGetProgramResourceLocation") == 0) + return reinterpret_cast<void*>(Mock_glGetProgramResourceLocation); if (strcmp(name, "glGetProgramiv") == 0) return reinterpret_cast<void*>(Mock_glGetProgramiv); if (strcmp(name, "glGetQueryObjecti64v") == 0) diff --git a/ui/gl/gl_bindings_autogen_mock.h b/ui/gl/gl_bindings_autogen_mock.h index 2c565d1..54c8993 100644 --- a/ui/gl/gl_bindings_autogen_mock.h +++ b/ui/gl/gl_bindings_autogen_mock.h @@ -441,6 +441,10 @@ static void GL_BINDING_CALL Mock_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog); +static GLint GL_BINDING_CALL +Mock_glGetProgramResourceLocation(GLuint program, + GLenum programInterface, + const char* name); static void GL_BINDING_CALL Mock_glGetProgramiv(GLuint program, GLenum pname, GLint* params); static void GL_BINDING_CALL diff --git a/ui/gl/gl_bindings_skia_in_process.cc b/ui/gl/gl_bindings_skia_in_process.cc index 3dae2e1..25dd698 100644 --- a/ui/gl/gl_bindings_skia_in_process.cc +++ b/ui/gl/gl_bindings_skia_in_process.cc @@ -617,6 +617,13 @@ GLvoid StubGLVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLvoid StubGLViewport(GLint x, GLint y, GLsizei width, GLsizei height) { glViewport(x, y, width, height); } + +GLint StubGLGetProgramResourceLocation(GLuint program, + GLenum programInterface, + const char* name) { + return glGetProgramResourceLocation(program, programInterface, name); +} + } // extern "C" } // namespace @@ -794,6 +801,7 @@ GrGLInterface* CreateInProcessSkiaGLBinding() { functions->fUnmapBuffer = StubGLUnmapBuffer; functions->fBindFragDataLocationIndexed = StubGLBindFragDataLocationIndexed; + functions->fGetProgramResourceLocation = StubGLGetProgramResourceLocation; return interface; } diff --git a/ui/gl/gl_mock_autogen_gl.h b/ui/gl/gl_mock_autogen_gl.h index a46051e..7bec0192 100644 --- a/ui/gl/gl_mock_autogen_gl.h +++ b/ui/gl/gl_mock_autogen_gl.h @@ -346,6 +346,8 @@ MOCK_METHOD4( GetProgramInfoLog, void(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)); MOCK_METHOD3(GetProgramiv, void(GLuint program, GLenum pname, GLint* params)); +MOCK_METHOD3(GetProgramResourceLocation, + GLint(GLuint program, GLenum programInterface, const char* name)); MOCK_METHOD3(GetQueryiv, void(GLenum target, GLenum pname, GLint* params)); MOCK_METHOD3(GetQueryivARB, void(GLenum target, GLenum pname, GLint* params)); MOCK_METHOD3(GetQueryObjecti64v, |