summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-09 00:10:27 +0000
committerjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-09 00:10:27 +0000
commit26e14d18ae692d5e4af783bf92f33854bc20f86d (patch)
treed1a03c976fd5f7fcb5630b52c771ad4db56a5000
parenta446534de1a24cbfe8858a9958dd22383f1b49d1 (diff)
downloadchromium_src-26e14d18ae692d5e4af783bf92f33854bc20f86d.zip
chromium_src-26e14d18ae692d5e4af783bf92f33854bc20f86d.tar.gz
chromium_src-26e14d18ae692d5e4af783bf92f33854bc20f86d.tar.bz2
Add gl bindings for ANGLE_instanced_arrays and ARB_instanced_arrays
BUG=93148 TEST= Review URL: http://codereview.chromium.org/9348046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121112 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--gpu/command_buffer/common/gl_mock.h18
-rw-r--r--third_party/khronos/GLES2/gl2ext.h18
-rw-r--r--third_party/khronos/README.chromium1
-rwxr-xr-xui/gfx/gl/generate_bindings.py24
-rw-r--r--ui/gfx/gl/gl_interface.h26
5 files changed, 87 insertions, 0 deletions
diff --git a/gpu/command_buffer/common/gl_mock.h b/gpu/command_buffer/common/gl_mock.h
index 174da30..1b43373 100644
--- a/gpu/command_buffer/common/gl_mock.h
+++ b/gpu/command_buffer/common/gl_mock.h
@@ -486,6 +486,24 @@ class MockGLInterface : public GLInterface {
MOCK_METHOD1(SetSurfaceCHROMIUM, void(GLuint));
MOCK_METHOD0(GetGraphicsResetStatusARB, GLenum());
+
+ MOCK_METHOD4(DrawArraysInstancedANGLE, void(
+ GLenum mode, GLint first, GLsizei count, GLsizei primcount));
+
+ MOCK_METHOD4(DrawArraysInstancedARB, void(
+ GLenum mode, GLint first, GLsizei count, GLsizei primcount));
+
+ MOCK_METHOD5(DrawElementsInstancedANGLE, void(
+ GLenum mode, GLsizei count, GLenum type, const void* indices,
+ GLsizei primcount));
+
+ MOCK_METHOD5(DrawElementsInstancedARB, void(
+ GLenum mode, GLsizei count, GLenum type, const void* indices,
+ GLsizei primcount));
+
+ MOCK_METHOD2(VertexAttribDivisorANGLE, void(GLuint index, GLuint divisor));
+
+ MOCK_METHOD2(VertexAttribDivisorARB, void(GLuint index, GLuint divisor));
};
} // namespace gfx
diff --git a/third_party/khronos/GLES2/gl2ext.h b/third_party/khronos/GLES2/gl2ext.h
index c22ef1e..547518c 100644
--- a/third_party/khronos/GLES2/gl2ext.h
+++ b/third_party/khronos/GLES2/gl2ext.h
@@ -218,6 +218,11 @@ typedef void* GLeglImageOES;
#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
#endif
+/* GL_ANGLE_instanced_arrays */
+#ifndef GL_ANGLE_instanced_arrays
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
+#endif
+
/*------------------------------------------------------------------------*
* APPLE extension tokens
*------------------------------------------------------------------------*/
@@ -956,6 +961,19 @@ GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
#endif
+/* GL_ANGLE_instanced_arrays */
+#ifndef GL_ANGLE_instanced_arrays
+#define GL_ANGLE_instanced_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE(GLuint index, GLuint divisor);
+GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+#endif
+typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
+typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+#endif
+
/*------------------------------------------------------------------------*
* APPLE extension functions
*------------------------------------------------------------------------*/
diff --git a/third_party/khronos/README.chromium b/third_party/khronos/README.chromium
index c2b2769..6d30fdb 100644
--- a/third_party/khronos/README.chromium
+++ b/third_party/khronos/README.chromium
@@ -18,5 +18,6 @@ GLES2/gl2.h
- Added GL_CONTEXT_LOST constant.
GLES2/gl2ext.h
- Added Chromium and Angle extensions.
+ - Added ANGLE_instanced_arrays
EGL/eglplatform.h
- Added EGLNative*Type for Mac.
diff --git a/ui/gfx/gl/generate_bindings.py b/ui/gfx/gl/generate_bindings.py
index 80e4d3b..0681a67 100755
--- a/ui/gfx/gl/generate_bindings.py
+++ b/ui/gfx/gl/generate_bindings.py
@@ -636,6 +636,30 @@ GL_FUNCTIONS = [
'arguments':
'GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length,'
'GLint* values', },
+{ 'return_type': 'void',
+ 'names': ['glDrawArraysInstancedANGLE'],
+ 'arguments': 'GLenum mode, GLint first, GLsizei count, GLsizei primcount', },
+{ 'return_type': 'void',
+ 'names': ['glDrawArraysInstancedARB'],
+ 'arguments': 'GLenum mode, GLint first, GLsizei count, GLsizei primcount', },
+{ 'return_type': 'void',
+ 'names': ['glDrawElementsInstancedANGLE'],
+ 'arguments':
+ 'GLenum mode, GLsizei count, GLenum type, const void* indices, '
+ 'GLsizei primcount', },
+{ 'return_type': 'void',
+ 'names': ['glDrawElementsInstancedARB'],
+ 'arguments':
+ 'GLenum mode, GLsizei count, GLenum type, const void* indices, '
+ 'GLsizei primcount', },
+{ 'return_type': 'void',
+ 'names': ['glVertexAttribDivisorANGLE'],
+ 'arguments':
+ 'GLuint index, GLuint divisor', },
+{ 'return_type': 'void',
+ 'names': ['glVertexAttribDivisorARB'],
+ 'arguments':
+ 'GLuint index, GLuint divisor', },
]
OSMESA_FUNCTIONS = [
diff --git a/ui/gfx/gl/gl_interface.h b/ui/gfx/gl/gl_interface.h
index bd372fb..f962b8d 100644
--- a/ui/gfx/gl/gl_interface.h
+++ b/ui/gfx/gl/gl_interface.h
@@ -603,6 +603,32 @@ class GL_EXPORT GLInterface {
GLsizei* length,
GLint* values) = 0;
+ virtual void DrawArraysInstancedANGLE(GLenum mode,
+ GLint first,
+ GLsizei count,
+ GLsizei primcount) = 0;
+
+ virtual void DrawArraysInstancedARB(GLenum mode,
+ GLint first,
+ GLsizei count,
+ GLsizei primcount) = 0;
+
+ virtual void DrawElementsInstancedANGLE(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei primcount) = 0;
+
+ virtual void DrawElementsInstancedARB(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei primcount) = 0;
+
+ virtual void VertexAttribDivisorANGLE(GLuint index, GLuint divisor) = 0;
+
+ virtual void VertexAttribDivisorARB(GLuint index, GLuint divisor) = 0;
+
private:
static GLInterface* interface_;
};