1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 #ifndef GLDISPATCHH 17 #define GLDISPATCHH 18 19 #include <GLES/gl.h> 20 #include "emugl/common/mutex.h" 21 22 #define GLAPIENTRY GL_APIENTRY 23 24 typedef double GLclampd; /* double precision float in [0,1] */ 25 typedef double GLdouble; /* double precision float */ 26 27 class GLDispatch 28 { 29 public: 30 31 GLDispatch(); 32 void dispatchFuncs(); 33 34 void (GLAPIENTRY *glActiveTexture) ( GLenum texture ); 35 void (GLAPIENTRY *glAlphaFunc) (GLenum func, GLclampf ref); 36 void (GLAPIENTRY *glBegin)( GLenum mode ); 37 void (GLAPIENTRY *glBindBuffer) (GLenum target, GLuint buffer); 38 void (GLAPIENTRY *glBindTexture) (GLenum target, GLuint texture); 39 void (GLAPIENTRY *glBlendFunc) (GLenum sfactor, GLenum dfactor); 40 void (GLAPIENTRY *glBufferData) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); 41 void (GLAPIENTRY *glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); 42 void (GLAPIENTRY *glClear) (GLbitfield mask); 43 void (GLAPIENTRY *glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 44 void (GLAPIENTRY *glClearDepth) (GLclampd depth); 45 void (GLAPIENTRY *glClearStencil) (GLint s); 46 void (GLAPIENTRY *glClientActiveTexture) ( GLenum texture ); 47 void (GLAPIENTRY *glClipPlane) (GLenum plane, const GLdouble *equation); 48 void (GLAPIENTRY *glColor4d) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); 49 void (GLAPIENTRY *glColor4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); 50 void (GLAPIENTRY *glColor4fv) ( const GLfloat *v ); 51 void (GLAPIENTRY *glColor4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); 52 void (GLAPIENTRY *glColor4ubv) ( const GLubyte *v ); 53 void (GLAPIENTRY *glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); 54 void (GLAPIENTRY *glColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 55 void (GLAPIENTRY *glCompressedTexImage2D) ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); 56 void (GLAPIENTRY *glCompressedTexSubImage2D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); 57 void (GLAPIENTRY *glCopyTexImage2D) (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); 58 void (GLAPIENTRY *glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); 59 void (GLAPIENTRY *glCullFace) (GLenum mode); 60 void (GLAPIENTRY *glDeleteBuffers) (GLsizei n, const GLuint *buffers); 61 void (GLAPIENTRY *glDeleteTextures) (GLsizei n, const GLuint *textures); 62 void (GLAPIENTRY *glDepthFunc) (GLenum func); 63 void (GLAPIENTRY *glDepthMask) (GLboolean flag); 64 void (GLAPIENTRY *glDepthRange) (GLclampd zNear, GLclampd zFar); 65 void (GLAPIENTRY *glDisable) (GLenum cap); 66 void (GLAPIENTRY *glDisableClientState) (GLenum array); 67 void (GLAPIENTRY *glDrawArrays) (GLenum mode, GLint first, GLsizei count); 68 void (GLAPIENTRY *glDrawElements) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); 69 void (GLAPIENTRY *glEnable) (GLenum cap); 70 void (GLAPIENTRY *glEnableClientState) (GLenum array); 71 void (GLAPIENTRY *glEnd) ( void ); 72 void (GLAPIENTRY *glFinish) (void); 73 void (GLAPIENTRY *glFlush) (void); 74 void (GLAPIENTRY *glFogf) (GLenum pname, GLfloat param); 75 void (GLAPIENTRY *glFogfv) (GLenum pname, const GLfloat *params); 76 void (GLAPIENTRY *glFrontFace) (GLenum mode); 77 void (GLAPIENTRY *glFrustum) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); 78 void (GLAPIENTRY *glGenBuffers) (GLsizei n, GLuint *buffers); 79 void (GLAPIENTRY *glGenTextures) (GLsizei n, GLuint *textures); 80 void (GLAPIENTRY *glGetBooleanv) (GLenum pname, GLboolean *params); 81 void (GLAPIENTRY *glGetBufferParameteriv) (GLenum, GLenum, GLint *); 82 void (GLAPIENTRY *glGetClipPlane) (GLenum plane, GLdouble *equation); 83 void (GLAPIENTRY *glGetDoublev) ( GLenum pname, GLdouble *params ); 84 GLenum (GLAPIENTRY *glGetError) (void); 85 void (GLAPIENTRY *glGetFloatv) (GLenum pname, GLfloat *params); 86 void (GLAPIENTRY *glGetIntegerv) (GLenum pname, GLint *params); 87 void (GLAPIENTRY *glGetLightfv) (GLenum light, GLenum pname, GLfloat *params); 88 void (GLAPIENTRY *glGetMaterialfv) (GLenum face, GLenum pname, GLfloat *params); 89 void (GLAPIENTRY *glGetPointerv) (GLenum pname, GLvoid* *params); 90 const GLubyte * (GLAPIENTRY *glGetString) (GLenum name); 91 void (GLAPIENTRY *glGetTexEnvfv) (GLenum target, GLenum pname, GLfloat *params); 92 void (GLAPIENTRY *glGetTexEnviv) (GLenum target, GLenum pname, GLint *params); 93 void (GLAPIENTRY *glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat *params); 94 void (GLAPIENTRY *glGetTexParameteriv) (GLenum target, GLenum pname, GLint *params); 95 void (GLAPIENTRY *glHint) (GLenum target, GLenum mode); 96 GLboolean (GLAPIENTRY *glIsBuffer) (GLuint); 97 GLboolean (GLAPIENTRY *glIsEnabled) (GLenum cap); 98 GLboolean (GLAPIENTRY *glIsTexture) (GLuint texture); 99 void (GLAPIENTRY *glLightf) (GLenum light, GLenum pname, GLfloat param); 100 void (GLAPIENTRY *glLightfv) (GLenum light, GLenum pname, const GLfloat *params); 101 void (GLAPIENTRY *glLightModelf) (GLenum pname, GLfloat param); 102 void (GLAPIENTRY *glLightModelfv) (GLenum pname, const GLfloat *params); 103 void (GLAPIENTRY *glLineWidth) (GLfloat width); 104 void (GLAPIENTRY *glLoadIdentity) (void); 105 void (GLAPIENTRY *glLoadMatrixf) (const GLfloat *m); 106 void (GLAPIENTRY *glLogicOp) (GLenum opcode); 107 void (GLAPIENTRY *glMaterialf) (GLenum face, GLenum pname, GLfloat param); 108 void (GLAPIENTRY *glMaterialfv) (GLenum face, GLenum pname, const GLfloat *params); 109 void (GLAPIENTRY *glMultiTexCoord2fv) ( GLenum target, const GLfloat *v ); 110 void (GLAPIENTRY *glMultiTexCoord2sv) ( GLenum target, const GLshort *v ); 111 void (GLAPIENTRY *glMultiTexCoord3fv) ( GLenum target, const GLfloat *v ); 112 void (GLAPIENTRY *glMultiTexCoord3sv) ( GLenum target, const GLshort *v ); 113 void (GLAPIENTRY *glMultiTexCoord4f) ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); 114 void (GLAPIENTRY *glMultiTexCoord4fv) ( GLenum target, const GLfloat *v ); 115 void (GLAPIENTRY *glMultiTexCoord4sv) ( GLenum target, const GLshort *v ); 116 void (GLAPIENTRY *glMultMatrixf) (const GLfloat *m); 117 void (GLAPIENTRY *glNormal3f) (GLfloat nx, GLfloat ny, GLfloat nz); 118 void (GLAPIENTRY *glNormal3fv) ( const GLfloat *v ); 119 void (GLAPIENTRY *glNormal3sv) ( const GLshort *v ); 120 void (GLAPIENTRY *glOrtho) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); 121 void (GLAPIENTRY *glPointParameterf) (GLenum, GLfloat); 122 void (GLAPIENTRY *glPointParameterfv) (GLenum, const GLfloat *); 123 void (GLAPIENTRY *glPointSize) (GLfloat size); 124 void (GLAPIENTRY *glPolygonOffset) (GLfloat factor, GLfloat units); 125 void (GLAPIENTRY *glRotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); 126 void (GLAPIENTRY *glScalef) (GLfloat x, GLfloat y, GLfloat z); 127 void (GLAPIENTRY *glTexEnvf) (GLenum target, GLenum pname, GLfloat param); 128 void (GLAPIENTRY *glTexEnvfv) (GLenum target, GLenum pname, const GLfloat *params); 129 void (GLAPIENTRY *glTexParameterf) (GLenum target, GLenum pname, GLfloat param); 130 void (GLAPIENTRY *glTexParameterfv) (GLenum target, GLenum pname, const GLfloat *params); 131 void (GLAPIENTRY *glMatrixMode) (GLenum mode); 132 void (GLAPIENTRY *glNormalPointer) (GLenum type, GLsizei stride, const GLvoid *pointer); 133 void (GLAPIENTRY *glPixelStorei) (GLenum pname, GLint param); 134 void (GLAPIENTRY *glPopMatrix) (void); 135 void (GLAPIENTRY *glPushMatrix) (void); 136 void (GLAPIENTRY *glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); 137 void (GLAPIENTRY *glSampleCoverage) ( GLclampf value, GLboolean invert ); 138 void (GLAPIENTRY *glScissor) (GLint x, GLint y, GLsizei width, GLsizei height); 139 void (GLAPIENTRY *glShadeModel) (GLenum mode); 140 void (GLAPIENTRY *glStencilFunc) (GLenum func, GLint ref, GLuint mask); 141 void (GLAPIENTRY *glStencilMask) (GLuint mask); 142 void (GLAPIENTRY *glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass); 143 void (GLAPIENTRY *glTexCoordPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 144 void (GLAPIENTRY *glTexEnvi) (GLenum target, GLenum pname, GLint param); 145 void (GLAPIENTRY *glTexEnviv) (GLenum target, GLenum pname, const GLint *params); 146 void (GLAPIENTRY *glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 147 void (GLAPIENTRY *glTexParameteri) (GLenum target, GLenum pname, GLint param); 148 void (GLAPIENTRY *glTexParameteriv) (GLenum target, GLenum pname, const GLint *params); 149 void (GLAPIENTRY *glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); 150 void (GLAPIENTRY *glTranslatef) (GLfloat x, GLfloat y, GLfloat z); 151 void (GLAPIENTRY *glVertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 152 void (GLAPIENTRY *glViewport) (GLint x, GLint y, GLsizei width, GLsizei height); 153 private: 154 bool m_isLoaded; 155 emugl::Mutex m_lock; 156 }; 157 158 #endif 159