Home | History | Annotate | Download | only in GLES_CM
      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 <utils/threads.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     android::Mutex   m_lock;
    156 };
    157 
    158 #endif
    159