653 lines
18 KiB
C
Executable File
653 lines
18 KiB
C
Executable File
#ifdef ANDROID
|
|
#include "../gl/gl.h"
|
|
#endif
|
|
#include "glx.h"
|
|
#include "hardext.h"
|
|
#include "../gl/init.h"
|
|
#include "../gl/directstate.h"
|
|
|
|
#define EXPORT __attribute__((visibility("default")))
|
|
|
|
//#define DEBUG_ADDRESS
|
|
|
|
#ifdef DEBUG_ADDRESS
|
|
#define MAP(func_name, func) \
|
|
if (strcmp(name, func_name) == 0) return (void *)func;
|
|
#else
|
|
#define MAP(func_name, func) \
|
|
if (strcmp(name, func_name) == 0) return (void *)func;
|
|
#endif
|
|
|
|
#define MAP_EGL(func_name, egl_func) \
|
|
MAP(#func_name, egl_eglGetProcAddress(#egl_func))
|
|
|
|
#define EX(func_name) MAP(#func_name, func_name)
|
|
|
|
#define ARB(func_name) MAP(#func_name "ARB", func_name)
|
|
|
|
#define EXT(func_name) MAP(#func_name "EXT", func_name)
|
|
|
|
#define _EX(func_name) MAP(#func_name, gl4es_ ## func_name)
|
|
|
|
#define _ARB(func_name) MAP(#func_name "ARB", gl4es_ ## func_name)
|
|
|
|
#define _EXT(func_name) MAP(#func_name "EXT", gl4es_ ## func_name)
|
|
|
|
#define STUB(func_name) \
|
|
if (strcmp(name, #func_name) == 0) { \
|
|
if(!globals4es.silentstub) LOGD("glX stub: %s\n", #func_name); \
|
|
return (void *)glXStub; \
|
|
}
|
|
|
|
void glXStub(void *x, ...) {
|
|
return;
|
|
}
|
|
|
|
EXPORT void *glXGetProcAddressARB(const char *name) {
|
|
LOAD_EGL(eglGetProcAddress);
|
|
#ifdef DEBUG_ADDRESS
|
|
static int cnt = 0;
|
|
cnt++;
|
|
#endif
|
|
// generated gles wrappers
|
|
#ifdef USE_ES2
|
|
#include "gles2funcs.inc"
|
|
#else
|
|
#include "glesfuncs.inc"
|
|
#endif
|
|
|
|
#ifndef ANDROID
|
|
// glX calls
|
|
EX(glXChooseVisual);
|
|
EX(glXCopyContext);
|
|
EX(glXCreateContext);
|
|
EX(glXCreateNewContext);
|
|
EX(glXCreateContextAttribsARB);
|
|
EX(glXDestroyContext);
|
|
EX(glXGetConfig);
|
|
EX(glXGetCurrentDisplay);
|
|
EX(glXGetCurrentDrawable);
|
|
EX(glXIsDirect);
|
|
EX(glXMakeCurrent);
|
|
EX(glXMakeContextCurrent);
|
|
EX(glXQueryExtensionsString);
|
|
EX(glXQueryServerString);
|
|
EX(glXSwapBuffers);
|
|
EX(glXSwapIntervalEXT);
|
|
#endif //ANDROID
|
|
EX(glXSwapIntervalMESA);
|
|
EX(glXSwapIntervalSGI);
|
|
#ifndef ANDROID
|
|
EX(glXUseXFont);
|
|
EX(glXWaitGL);
|
|
EX(glXWaitX);
|
|
EX(glXGetCurrentContext);
|
|
EX(glXQueryExtension);
|
|
EX(glXQueryDrawable);
|
|
EX(glXQueryVersion);
|
|
EX(glXGetClientString);
|
|
EX(glXGetFBConfigs);
|
|
EX(glXChooseFBConfig);
|
|
EX(glXChooseFBConfigSGIX);
|
|
EX(glXGetFBConfigAttrib);
|
|
EX(glXQueryContext);
|
|
EX(glXGetVisualFromFBConfig);
|
|
EX(glXCreateWindow);
|
|
EX(glXDestroyWindow);
|
|
|
|
EX(glXCreatePbuffer);
|
|
EX(glXDestroyPbuffer);
|
|
EX(glXCreatePixmap);
|
|
EX(glXDestroyPixmap);
|
|
EX(glXCreateGLXPixmap);
|
|
EX(glXDestroyGLXPixmap);
|
|
STUB(glXGetCurrentReadDrawable);
|
|
STUB(glXGetSelectedEvent);
|
|
STUB(glXSelectEvent);
|
|
#endif //ANDROID
|
|
// GL_EXT_texture_object (yeah, super old!)
|
|
_EXT(glGenTextures);
|
|
_EXT(glBindTexture);
|
|
_EXT(glDeleteTextures);
|
|
_EXT(glIsTexture);
|
|
_EXT(glAreTexturesResident);
|
|
_EXT(glPrioritizeTextures);
|
|
|
|
// GL_EXT_polygonoffset
|
|
_EXT(glPolygonOffset);
|
|
|
|
// GL_ARB_vertex_buffer_object
|
|
_ARB(glBindBuffer);
|
|
_ARB(glBufferData);
|
|
_ARB(glBufferSubData);
|
|
_ARB(glDeleteBuffers);
|
|
_ARB(glGenBuffers);
|
|
_ARB(glIsBuffer);
|
|
_EX(glGetBufferPointerv);
|
|
_ARB(glGetBufferPointerv);
|
|
_EX(glMapBuffer);
|
|
_EX(glUnmapBuffer);
|
|
_ARB(glMapBuffer);
|
|
_ARB(glUnmapBuffer);
|
|
_ARB(glGetBufferParameteriv);
|
|
_EX(glGetBufferSubData);
|
|
_ARB(glGetBufferSubData);
|
|
|
|
// GL_ARB_vertex_array_object
|
|
_EX(glGenVertexArrays);
|
|
_EX(glBindVertexArray);
|
|
_EX(glDeleteVertexArrays);
|
|
_EX(glIsVertexArray);
|
|
_ARB(glGenVertexArrays);
|
|
_ARB(glBindVertexArray);
|
|
_ARB(glDeleteVertexArrays);
|
|
_ARB(glIsVertexArray);
|
|
|
|
// GL_ARB_frameBuffer_ext
|
|
if(hardext.fbo) {
|
|
_EX(glFramebufferTexture1D);
|
|
_EX(glFramebufferTexture3D);
|
|
_EX(glFramebufferTextureLayer);
|
|
_EX(glRenderbufferStorageMultisample);
|
|
_EX(glBlitFramebuffer);
|
|
_EXT(glGenFramebuffers);
|
|
_EXT(glDeleteFramebuffers);
|
|
_EXT(glIsFramebuffer);
|
|
_EXT(glCheckFramebufferStatus);
|
|
_EXT(glBindFramebuffer);
|
|
_EXT(glFramebufferTexture2D);
|
|
_EXT(glFramebufferTexture1D);
|
|
_EXT(glFramebufferTexture3D);
|
|
_EXT(glGenRenderbuffers);
|
|
_EXT(glFramebufferRenderbuffer);
|
|
_EXT(glDeleteRenderbuffers);
|
|
_EXT(glRenderbufferStorage);
|
|
_EXT(glRenderbufferStorageMultisample);
|
|
_EXT(glBindRenderbuffer);
|
|
_EXT(glIsRenderbuffer);
|
|
_EXT(glGenerateMipmap);
|
|
_EXT(glGetFramebufferAttachmentParameteriv);
|
|
_EXT(glGetRenderbufferParameteriv);
|
|
_EXT(glFramebufferTextureLayer);
|
|
_EXT(glBlitFramebuffer);
|
|
_ARB(glGenFramebuffers);
|
|
_ARB(glDeleteFramebuffers);
|
|
_ARB(glIsFramebuffer);
|
|
_ARB(glCheckFramebufferStatus);
|
|
_ARB(glBindFramebuffer);
|
|
_ARB(glFramebufferTexture2D);
|
|
_ARB(glFramebufferTexture1D);
|
|
_ARB(glFramebufferTexture3D);
|
|
_ARB(glGenRenderbuffers);
|
|
_ARB(glFramebufferRenderbuffer);
|
|
_ARB(glDeleteRenderbuffers);
|
|
_ARB(glRenderbufferStorage);
|
|
_ARB(glRenderbufferStorageMultisample);
|
|
_ARB(glBindRenderbuffer);
|
|
_ARB(glIsRenderbuffer);
|
|
_ARB(glGenerateMipmap);
|
|
_ARB(glGetFramebufferAttachmentParameteriv);
|
|
_ARB(glGetRenderbufferParameteriv);
|
|
_ARB(glFramebufferTextureLayer);
|
|
_ARB(glBlitFramebuffer);
|
|
STUB(glDrawBuffersARB);
|
|
}
|
|
|
|
/*
|
|
MAP_EGL(glGenFramebuffersARB, glGenFramebuffersOES);
|
|
MAP_EGL(glDeleteFramebuffersARB, glDeleteFramebuffersOES);
|
|
MAP_EGL(glBindFramebufferARB, glBindFramebufferOES);
|
|
MAP_EGL(glFramebufferRenderbufferARB, glFramebufferRenderbufferOES);
|
|
MAP_EGL(glFramebufferTexture2DARB, glFramebufferTexture2DOES);
|
|
MAP_EGL(glIsFramebufferARB, glIsFramebufferOES);
|
|
MAP_EGL(glGenRenderbuffersARB, glGenRenderbuffersOES);
|
|
MAP_EGL(glDeleteRenderbuffersARB, glDeleteRenderbuffersOES);
|
|
MAP_EGL(glCheckFramebufferStatusARB, glCheckFramebufferStatusOES);
|
|
MAP_EGL(glRenderbufferStorageARB, glRenderbufferStorageOES);
|
|
MAP_EGL(glBindRenderbufferARB, glBindRenderbufferOES);
|
|
MAP_EGL(glIsRenderbufferARB, glIsRenderbufferOES);
|
|
*/
|
|
|
|
// GL_EXT_vertex_array
|
|
_EXT(glArrayElement);
|
|
_EXT(glDrawArrays);
|
|
_EXT(glVertexPointer);
|
|
_EXT(glNormalPointer);
|
|
_EXT(glColorPointer);
|
|
_EX(glIndexPointer); //TODO, stub for now
|
|
_EXT(glIndexPointer);
|
|
_EXT(glTexCoordPointer);
|
|
_EX(glEdgeFlagPointer); //TODO, stub for now
|
|
_EXT(glEdgeFlagPointer);
|
|
_EX(glGetPointerv);
|
|
_EXT(glGetPointerv);
|
|
|
|
|
|
// OES wrapper
|
|
EX(glClearDepthfOES);
|
|
EX(glClipPlanefOES);
|
|
EX(glDepthRangefOES);
|
|
EX(glFrustumfOES);
|
|
EX(glGetClipPlanefOES);
|
|
EX(glOrthofOES);
|
|
|
|
// passthrough
|
|
// batch thunking!
|
|
#define THUNK(suffix, type) \
|
|
_EX(glColor3##suffix##v); \
|
|
_EX(glColor3##suffix); \
|
|
_EX(glColor4##suffix##v); \
|
|
_EX(glColor4##suffix); \
|
|
_EX(glSecondaryColor3##suffix##v); \
|
|
_EX(glSecondaryColor3##suffix); \
|
|
_EXT(glSecondaryColor3##suffix##v); \
|
|
_EXT(glSecondaryColor3##suffix); \
|
|
_EX(glIndex##suffix##v); \
|
|
_EX(glIndex##suffix); \
|
|
_EX(glNormal3##suffix##v); \
|
|
_EX(glNormal3##suffix); \
|
|
_EX(glRasterPos2##suffix##v); \
|
|
_EX(glRasterPos2##suffix); \
|
|
_EX(glRasterPos3##suffix##v); \
|
|
_EX(glRasterPos3##suffix); \
|
|
_EX(glRasterPos4##suffix##v); \
|
|
_EX(glRasterPos4##suffix); \
|
|
_EX(glWindowPos2##suffix##v); \
|
|
_EX(glWindowPos2##suffix); \
|
|
_EX(glWindowPos3##suffix##v); \
|
|
_EX(glWindowPos3##suffix); \
|
|
_EX(glVertex2##suffix##v); \
|
|
_EX(glVertex2##suffix); \
|
|
_EX(glVertex3##suffix##v); \
|
|
_EX(glVertex3##suffix); \
|
|
_EX(glVertex4##suffix##v); \
|
|
_EX(glVertex4##suffix); \
|
|
_EX(glTexCoord1##suffix##v); \
|
|
_EX(glTexCoord1##suffix); \
|
|
_EX(glTexCoord2##suffix##v); \
|
|
_EX(glTexCoord2##suffix); \
|
|
_EX(glTexCoord3##suffix##v); \
|
|
_EX(glTexCoord3##suffix); \
|
|
_EX(glTexCoord4##suffix##v); \
|
|
_EX(glTexCoord4##suffix); \
|
|
_EX(glMultiTexCoord1##suffix##v); \
|
|
_EX(glMultiTexCoord1##suffix); \
|
|
_EX(glMultiTexCoord2##suffix##v); \
|
|
_EX(glMultiTexCoord2##suffix); \
|
|
_EX(glMultiTexCoord3##suffix##v); \
|
|
_EX(glMultiTexCoord3##suffix); \
|
|
_EX(glMultiTexCoord4##suffix##v); \
|
|
_EX(glMultiTexCoord4##suffix); \
|
|
_EXT(glMultiTexCoord1##suffix##v); \
|
|
_EXT(glMultiTexCoord1##suffix); \
|
|
_EXT(glMultiTexCoord2##suffix##v); \
|
|
_EXT(glMultiTexCoord2##suffix); \
|
|
_EXT(glMultiTexCoord3##suffix##v); \
|
|
_EXT(glMultiTexCoord3##suffix); \
|
|
_EXT(glMultiTexCoord4##suffix##v); \
|
|
_EXT(glMultiTexCoord4##suffix); \
|
|
_ARB(glMultiTexCoord1##suffix##v); \
|
|
_ARB(glMultiTexCoord1##suffix); \
|
|
_ARB(glMultiTexCoord2##suffix##v); \
|
|
_ARB(glMultiTexCoord2##suffix); \
|
|
_ARB(glMultiTexCoord3##suffix##v); \
|
|
_ARB(glMultiTexCoord3##suffix); \
|
|
_ARB(glMultiTexCoord4##suffix##v); \
|
|
_ARB(glMultiTexCoord4##suffix);
|
|
|
|
THUNK(b, GLbyte);
|
|
THUNK(d, GLdouble);
|
|
THUNK(i, GLint);
|
|
THUNK(s, GLshort);
|
|
THUNK(ub, GLubyte);
|
|
THUNK(ui, GLuint);
|
|
THUNK(us, GLushort);
|
|
THUNK(f, GLfloat);
|
|
#undef THUNK
|
|
|
|
_EX(glPointParameterf);
|
|
_EX(glPointParameterfv);
|
|
_ARB(glPointParameterf);
|
|
_ARB(glPointParameterfv);
|
|
_EXT(glPointParameterf);
|
|
_EXT(glPointParameterfv);
|
|
|
|
#ifdef USE_ES2
|
|
_EX(glCompileShaderARB);
|
|
_EX(glCreateShaderObjectARB);
|
|
_EX(glGetObjectParameterivARB);
|
|
_EX(glShaderSourceARB);
|
|
#endif
|
|
|
|
// functions we actually define
|
|
_EXT(glActiveTexture);
|
|
_ARB(glActiveTexture);
|
|
_EX(glArrayElement);
|
|
_EX(glBegin);
|
|
_EX(glBitmap);
|
|
if(globals4es.blendcolor || hardext.blendcolor) {
|
|
_EX(glBlendColor);
|
|
_EXT(glBlendColor);
|
|
_ARB(glBlendColor);
|
|
}
|
|
_EXT(glBlendEquation);
|
|
_ARB(glBlendEquation);
|
|
_EXT(glBlendFunc);
|
|
_ARB(glBlendFunc);
|
|
|
|
if(hardext.blendeq) {
|
|
_EXT(glBlendEquationSeparate);
|
|
_ARB(glBlendEquationSeparate);
|
|
_EX(glBlendEquationSeparatei);
|
|
_EXT(glBlendEquationSeparatei);
|
|
_ARB(glBlendEquationSeparatei);
|
|
}
|
|
if(hardext.blendfunc) {
|
|
_EXT(glBlendFuncSeparate);
|
|
_ARB(glBlendFuncSeparate);
|
|
_EX(glBlendFuncSeparatei);
|
|
_EXT(glBlendFuncSeparatei);
|
|
_ARB(glBlendFuncSeparatei);
|
|
}
|
|
_EX(glStencilMaskSeparate);
|
|
_EXT(glStencilMaskSeparate);
|
|
_EX(glCallList);
|
|
_EX(glCallLists);
|
|
_EX(glClearDepth);
|
|
_EXT(glClientActiveTexture);
|
|
_ARB(glClientActiveTexture);
|
|
_EX(glClipPlane);
|
|
_EX(glCopyPixels);
|
|
_EX(glDeleteLists);
|
|
_EX(glDepthRange);
|
|
_EX(glDrawBuffer);
|
|
_EX(glDrawPixels);
|
|
_EX(glDrawRangeElements);
|
|
_EXT(glDrawRangeElements);
|
|
_EX(glEdgeFlag);
|
|
_EX(glEnd);
|
|
_EX(glEndList);
|
|
_EX(glEvalCoord1d);
|
|
_EX(glEvalCoord1f);
|
|
_EX(glEvalCoord2d);
|
|
_EX(glEvalCoord2f);
|
|
_EX(glEvalMesh1);
|
|
_EX(glEvalMesh2);
|
|
_EX(glEvalPoint1);
|
|
_EX(glEvalPoint2);
|
|
_EX(glFogCoordd);
|
|
_EX(glFogCoorddv);
|
|
_EX(glFogCoordf);
|
|
_EX(glFogCoordfv);
|
|
_EX(glFogi);
|
|
_EX(glFogiv);
|
|
_EX(glFrustum);
|
|
_EX(glGenLists);
|
|
_EX(glGetDoublev);
|
|
_EX(glGetIntegerv);
|
|
_EX(glGetMapdv);
|
|
_EX(glGetMapfv);
|
|
_EX(glGetMapiv);
|
|
_EX(glGetTexImage);
|
|
_EX(glGetTexLevelParameterfv);
|
|
_EX(glGetTexLevelParameteriv);
|
|
_EX(glInitNames);
|
|
_EX(glInterleavedArrays);
|
|
_EX(glIsList);
|
|
#ifndef USE_ES2
|
|
_EX(glLighti);
|
|
_EX(glLightiv);
|
|
_EX(glLightModeli);
|
|
_EX(glLightModeliv);
|
|
#endif
|
|
_EX(glLineStipple);
|
|
_EX(glListBase);
|
|
_EX(glLoadMatrixd);
|
|
_EX(glLoadName);
|
|
_EXT(glLockArrays);
|
|
_EX(glMap1d);
|
|
_EX(glMap1f);
|
|
_EX(glMap2d);
|
|
_EX(glMap2f);
|
|
_EX(glMapGrid1d);
|
|
_EX(glMapGrid1f);
|
|
_EX(glMapGrid2d);
|
|
_EX(glMapGrid2f);
|
|
_EX(glMateriali);
|
|
_EX(glMultMatrixd);
|
|
_EX(glNewList);
|
|
_EX(glOrtho);
|
|
_EX(glPixelTransferf);
|
|
_EX(glPixelTransferi);
|
|
_EX(glPixelZoom);
|
|
_EX(glPolygonMode);
|
|
_EX(glPolygonStipple);
|
|
_EX(glPopAttrib);
|
|
_EX(glPopClientAttrib);
|
|
_EX(glPopName);
|
|
_EX(glPushAttrib);
|
|
_EX(glPushClientAttrib);
|
|
_EX(glPushName);
|
|
_EX(glRasterPos2i);
|
|
_EX(glReadBuffer);
|
|
_EX(glRectd);
|
|
_EX(glRectf);
|
|
_EX(glRecti);
|
|
_EX(glRects);
|
|
_EX(glRectdv);
|
|
_EX(glRectfv);
|
|
_EX(glRectiv);
|
|
_EX(glRectsv);
|
|
_EX(glRenderMode);
|
|
_EX(glRotated);
|
|
_EX(glScaled);
|
|
_EX(glSecondaryColorPointer);
|
|
_EXT(glSecondaryColorPointer);
|
|
_EX(glTexEnvf);
|
|
_EX(glTexEnviv);
|
|
_EX(glTexGend);
|
|
_EX(glTexGendv);
|
|
_EX(glTexGenf);
|
|
_EX(glTexGenfv);
|
|
_EX(glTexGeni);
|
|
_EX(glTexGeniv);
|
|
_EX(glTexImage1D);
|
|
_EX(glTexImage3D);
|
|
_EX(glTexSubImage1D);
|
|
_EX(glTexSubImage3D);
|
|
_EXT(glTexImage3D);
|
|
_EXT(glTexSubImage3D);
|
|
_EX(glCompressedTexImage1D);
|
|
_EX(glCompressedTexSubImage1D);
|
|
_EX(glCompressedTexImage3D);
|
|
_EX(glCompressedTexSubImage3D);
|
|
_EX(glGetCompressedTexImage);
|
|
_EXT(glCompressedTexImage2D);
|
|
_EXT(glCompressedTexSubImage2D);
|
|
_EXT(glCompressedTexImage1D);
|
|
_EXT(glCompressedTexSubImage1D);
|
|
_EXT(glCompressedTexImage3D);
|
|
_EXT(glCompressedTexSubImage3D);
|
|
_EXT(glGetCompressedTexImage);
|
|
_ARB(glCompressedTexImage2D);
|
|
_ARB(glCompressedTexSubImage2D);
|
|
_ARB(glCompressedTexImage1D);
|
|
_ARB(glCompressedTexSubImage1D);
|
|
_ARB(glCompressedTexImage3D);
|
|
_ARB(glCompressedTexSubImage3D);
|
|
_ARB(glGetCompressedTexImage);
|
|
_EX(glCopyTexImage1D);
|
|
_EX(glCopyTexSubImage1D);
|
|
_EX(glTranslated);
|
|
_EXT(glUnlockArrays);
|
|
_EX(glGetTexGenfv);
|
|
_EX(glLoadTransposeMatrixf);
|
|
_EX(glLoadTransposeMatrixd);
|
|
_EX(glMultTransposeMatrixd);
|
|
_EX(glMultTransposeMatrixf);
|
|
// stubs for unimplemented functions
|
|
STUB(glAccum);
|
|
STUB(glAreTexturesResident);
|
|
STUB(glClearAccum);
|
|
STUB(glColorMaterial);
|
|
STUB(glCopyTexImage3D);
|
|
_EX(glCopyTexSubImage3D); // It's a stub, calling the 2D one
|
|
STUB(glFeedbackBuffer);
|
|
STUB(glGetClipPlane);
|
|
STUB(glGetLightiv);
|
|
STUB(glGetMaterialiv);
|
|
STUB(glGetPixelMapfv);
|
|
STUB(glGetPixelMapuiv);
|
|
STUB(glGetPixelMapusv);
|
|
STUB(glGetPolygonStipple);
|
|
STUB(glGetStringi);
|
|
STUB(glGetTexGendv);
|
|
//STUB(glGetTexGenfv);
|
|
STUB(glGetTexGeniv); //TODO
|
|
STUB(glMaterialiv); //TODO
|
|
STUB(glPassThrough);
|
|
STUB(glPixelMapfv);
|
|
STUB(glPixelMapuiv);
|
|
STUB(glPixelMapusv);
|
|
_EX(glPixelStoref);
|
|
STUB(glPrioritizeTextures);
|
|
STUB(glSelectBuffer); //TODO
|
|
|
|
_EX(glMultiDrawArrays);
|
|
_EXT(glMultiDrawArrays);
|
|
_EX(glMultiDrawElements);
|
|
_EXT(glMultiDrawElements);
|
|
|
|
_EX(glPointParameteri);
|
|
_EX(glPointParameteriv);
|
|
|
|
STUB(glFogCoordPointer);
|
|
/*STUB(glEdgeFlagPointerEXT);
|
|
STUB(glIndexPointerEXT);*/
|
|
|
|
//EXT_direct_state_access
|
|
_EX(glClientAttribDefault);
|
|
_EX(glPushClientAttribDefault);
|
|
_EX(glMatrixLoadf);
|
|
_EX(glMatrixLoadd);
|
|
_EX(glMatrixMultf);
|
|
_EX(glMatrixMultd);
|
|
_EX(glMatrixLoadIdentity);
|
|
_EX(glMatrixRotatef);
|
|
_EX(glMatrixRotated);
|
|
_EX(glMatrixScalef);
|
|
_EX(glMatrixScaled);
|
|
_EX(glMatrixTranslatef);
|
|
_EX(glMatrixTranslated);
|
|
_EX(glMatrixOrtho);
|
|
_EX(glMatrixFrustum);
|
|
_EX(glMatrixPush);
|
|
_EX(glMatrixPop);
|
|
_EX(glTextureParameteri);
|
|
_EX(glTextureParameteriv);
|
|
_EX(glTextureParameterf);
|
|
_EX(glTextureParameterfv);
|
|
_EX(glTextureImage1D);
|
|
_EX(glTextureImage2D);
|
|
_EX(glTextureSubImage1D);
|
|
_EX(glTextureSubImage2D);
|
|
_EX(glCopyTextureImage1D);
|
|
_EX(glCopyTextureImage2D);
|
|
_EX(glCopyTextureSubImage1D);
|
|
_EX(glCopyTextureSubImage2D);
|
|
_EX(glGetTextureImage);
|
|
_EX(glGetTextureParameterfv);
|
|
_EX(glGetTextureParameteriv);
|
|
_EX(glGetTextureLevelParameterfv);
|
|
_EX(glGetTextureLevelParameteriv);
|
|
_EX(glTextureImage3D);
|
|
_EX(glTextureSubImage3D);
|
|
_EX(glCopyTextureSubImage3D);
|
|
_EX(glBindMultiTexture);
|
|
_EX(glMultiTexCoordPointer);
|
|
_EX(glMultiTexEnvf);
|
|
_EX(glMultiTexEnvfv);
|
|
_EX(glMultiTexEnvi);
|
|
_EX(glMultiTexEnviv);
|
|
_EX(glMultiTexGend);
|
|
_EX(glMultiTexGendv);
|
|
_EX(glMultiTexGenf);
|
|
_EX(glMultiTexGenfv);
|
|
_EX(glMultiTexGeni);
|
|
_EX(glMultiTexGeniv);
|
|
_EX(glGetMultiTexEnvfv);
|
|
_EX(glGetMultiTexEnviv);
|
|
_EX(glGetMultiTexGendv);
|
|
_EX(glGetMultiTexGenfv);
|
|
_EX(glGetMultiTexGeniv);
|
|
_EX(glMultiTexParameteri);
|
|
_EX(glMultiTexParameteriv);
|
|
_EX(glMultiTexParameterf);
|
|
_EX(glMultiTexParameterfv);
|
|
_EX(glMultiTexImage1D);
|
|
_EX(glMultiTexImage2D);
|
|
_EX(glMultiTexSubImage1D);
|
|
_EX(glMultiTexSubImage2D);
|
|
_EX(glCopyMultiTexImage1D);
|
|
_EX(glCopyMultiTexImage2D);
|
|
_EX(glCopyMultiTexSubImage1D);
|
|
_EX(glCopyMultiTexSubImage2D);
|
|
_EX(glGetMultiTexImage);
|
|
_EX(glGetMultiTexParameterfv);
|
|
_EX(glGetMultiTexParameteriv);
|
|
_EX(glGetMultiTexLevelParameterfv);
|
|
_EX(glGetMultiTexLevelParameteriv);
|
|
_EX(glMultiTexImage3D);
|
|
_EX(glMultiTexSubImage3D);
|
|
_EX(glCopyMultiTexSubImage3D);
|
|
STUB(EnableClientStateIndexedEXT);
|
|
STUB(DisableClientStateIndexedEXT);
|
|
STUB(GetFloatIndexedvEXT);
|
|
STUB(GetDoubleIndexedvEXT);
|
|
STUB(GetPointerIndexedvEXT);
|
|
STUB(EnableIndexedEXT);
|
|
STUB(DisableIndexedEXT);
|
|
STUB(IsEnabledIndexedEXT);
|
|
STUB(GetIntegerIndexedvEXT);
|
|
STUB(GetBooleanIndexedvEXT);
|
|
_EX(glCompressedTextureImage3D);
|
|
_EX(glCompressedTextureImage2D);
|
|
_EX(glCompressedTextureImage1D);
|
|
_EX(glCompressedTextureSubImage3D);
|
|
_EX(glCompressedTextureSubImage2D);
|
|
_EX(glCompressedTextureSubImage1D);
|
|
_EX(glGetCompressedTextureImage);
|
|
_EX(glCompressedMultiTexImage3D);
|
|
_EX(glCompressedMultiTexImage2D);
|
|
_EX(glCompressedMultiTexImage1D);
|
|
_EX(glCompressedMultiTexSubImage3D);
|
|
_EX(glCompressedMultiTexSubImage2D);
|
|
_EX(glCompressedMultiTexSubImage1D);
|
|
_EX(glGetCompressedMultiTexImage);
|
|
_EX(glMatrixLoadTransposef);
|
|
_EX(glMatrixLoadTransposed);
|
|
_EX(glMatrixMultTransposef);
|
|
_EX(glMatrixMultTransposed);
|
|
|
|
if(globals4es.queries) {
|
|
_EX(glGenQueries);
|
|
_EX(glIsQuery);
|
|
_EX(glDeleteQueries);
|
|
_EX(glBeginQuery);
|
|
_EX(glEndQuery);
|
|
_EX(glGetQueryiv);
|
|
_EX(glGetQueryObjectiv);
|
|
_EX(glGetQueryObjectuiv);
|
|
}
|
|
|
|
// GL_ARB_multisample
|
|
_ARB(glSampleCoverage);
|
|
|
|
if (!globals4es.silentstub) LOGD("glXGetProcAddress: %s not found.\n", name);
|
|
return NULL;
|
|
}
|
|
|
|
EXPORT void *glXGetProcAddress(const char *name) {
|
|
return glXGetProcAddressARB(name);
|
|
}
|