summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authoreseidel <eseidel@chromium.org>2015-02-20 13:27:31 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-20 21:27:55 +0000
commitb009786cea4f51ddeb80bd0518c5779b00a19dfe (patch)
treed3ad4ef25079e888629aadd2e1945dacd67a991a /ui
parent9f532ee3b82a53bbd20f8978199c61c265c82ad2 (diff)
downloadchromium_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-xui/gl/generate_bindings.py3
-rw-r--r--ui/gl/gl_bindings_api_autogen_gl.h3
-rw-r--r--ui/gl/gl_bindings_autogen_gl.cc53
-rw-r--r--ui/gl/gl_bindings_autogen_gl.h10
-rw-r--r--ui/gl/gl_bindings_autogen_mock.cc11
-rw-r--r--ui/gl/gl_bindings_autogen_mock.h4
-rw-r--r--ui/gl/gl_bindings_skia_in_process.cc8
-rw-r--r--ui/gl/gl_mock_autogen_gl.h2
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,