typedef void (*_eng_fn) (void);
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
#include "headers/sym.h"
+#undef _COREGL_EXT_SYMBOL
extern int coregl_initialize();
extern void coregl_terminate();
ovr_glViewport(x, y, width, height);
}
-
-// GLES Extensions...
-void
-glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
-{
- ovr_glEGLImageTargetTexture2DOES(target, image);
-}
-
-void
-glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
-{
- ovr_glEGLImageTargetRenderbufferStorageOES(target, image);
-}
-
-void
-glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
-{
- ovr_glGetProgramBinary(program, bufsize, length, binaryFormat, binary);
-}
-
-void
-glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
-{
- ovr_glProgramBinary(program, binaryFormat, binary, length);
-}
-
-
-void
-glProgramParameteri(GLuint program, GLuint pname, GLint value)
-{
- ovr_glProgramParameteri(program, pname, value);
-}
-
-void
-glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-{
- ovr_glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
-}
-
-void
-glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
-{
- ovr_glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
-}
-
-void
-glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
-{
- ovr_glDiscardFramebufferEXT(target, numAttachments, attachments);
-}
-
-
get_current_thread_state()
{
GLThreadState *ret = NULL;
+
if (thread_key_inited)
{
ret = (GLThreadState *)pthread_getspecific(thread_key);
#define _COREGL_SYMBOL_NOT_DEFINED
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) COREGL_API extern RET_TYPE FUNC_NAME PARAM_LIST;
#endif
+#ifndef _COREGL_EXT_SYMBOL
+#define _COREGL_EXT_SYMBOL_NOT_DEFINED
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
+#endif
// Standard EGL APIs
// Extensions
-_COREGL_SYMBOL(GL_TRUE, EGLImageKHR, eglCreateImageKHR, (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list))
-_COREGL_SYMBOL(GL_TRUE, EGLBoolean, eglDestroyImageKHR, (EGLDisplay dpy, EGLImageKHR image))
+_COREGL_EXT_SYMBOL(GL_TRUE, EGLImageKHR, eglCreateImageKHR, (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list))
+_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglDestroyImageKHR, (EGLDisplay dpy, EGLImageKHR image))
+
+_COREGL_EXT_SYMBOL(GL_TRUE, void*, eglMapImageSEC, (EGLDisplay dpy, EGLImageKHR image))
+_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglUnmapImageSEC, (EGLDisplay dpy, EGLImageKHR image))
+_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglGetImageAttribSEC, (EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value))
-_COREGL_SYMBOL(GL_TRUE, void*, eglMapImageSEC, (EGLDisplay dpy, EGLImageKHR image))
-_COREGL_SYMBOL(GL_TRUE, EGLBoolean, eglUnmapImageSEC, (EGLDisplay dpy, EGLImageKHR image))
-_COREGL_SYMBOL(GL_TRUE, EGLBoolean, eglGetImageAttribSEC, (EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value))
+_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglLockSurfaceKHR, (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list))
+_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglUnlockSurfaceKHR, (EGLDisplay display, EGLSurface surface))
-_COREGL_SYMBOL(GL_TRUE, EGLBoolean, eglLockSurfaceKHR, (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list))
-_COREGL_SYMBOL(GL_TRUE, EGLBoolean, eglUnlockSurfaceKHR, (EGLDisplay display, EGLSurface surface))
+#ifdef _COREGL_EXT_SYMBOL_NOT_DEFINED
+#undef _COREGL_EXT_SYMBOL_NOT_DEFINED
+#undef _COREGL_EXT_SYMBOL
+#endif
#ifdef _COREGL_SYMBOL_NOT_DEFINED
#undef _COREGL_SYMBOL_NOT_DEFINED
#define _COREGL_SYMBOL_NOT_DEFINED
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) COREGL_API extern RET_TYPE FUNC_NAME PARAM_LIST;
#endif
+#ifndef _COREGL_EXT_SYMBOL
+#define _COREGL_EXT_SYMBOL_NOT_DEFINED
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
+#endif
/* version 1: */
_COREGL_SYMBOL(GL_FALSE, void, glActiveTexture, (GLenum texture))
_COREGL_SYMBOL(GL_FALSE, void, glViewport, (GLint x, GLint y, GLsizei width, GLsizei height))
/* Extensions */
-_COREGL_SYMBOL(GL_TRUE, void, glEGLImageTargetTexture2DOES, (GLenum target, GLeglImageOES image))
-_COREGL_SYMBOL(GL_TRUE, void, glEGLImageTargetRenderbufferStorageOES, (GLenum target, GLeglImageOES image))
-_COREGL_SYMBOL(GL_TRUE, void, glGetProgramBinary, (GLuint program, GLsizei bufsize, GLsizei *length, GLenum *binaryFormat, void *binary))
-_COREGL_SYMBOL(GL_TRUE, void, glProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLint length))
-_COREGL_SYMBOL(GL_TRUE, void, glProgramParameteri, (GLuint a, GLuint b, GLint d))
-_COREGL_SYMBOL(GL_TRUE, void, glRenderbufferStorageMultisampleEXT, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
-_COREGL_SYMBOL(GL_TRUE, void, glFramebufferTexture2DMultisampleEXT, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples))
-_COREGL_SYMBOL(GL_TRUE, void, glDiscardFramebufferEXT, (GLenum target, GLsizei numAttachments, const GLenum *attachments))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glEGLImageTargetTexture2DOES, (GLenum target, GLeglImageOES image))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glEGLImageTargetRenderbufferStorageOES, (GLenum target, GLeglImageOES image))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glGetProgramBinary, (GLuint program, GLsizei bufsize, GLsizei *length, GLenum *binaryFormat, void *binary))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLint length))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glProgramParameteri, (GLuint a, GLuint b, GLint d))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glRenderbufferStorageMultisampleEXT, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glFramebufferTexture2DMultisampleEXT, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples))
+_COREGL_EXT_SYMBOL(GL_TRUE, void, glDiscardFramebufferEXT, (GLenum target, GLsizei numAttachments, const GLenum *attachments))
+
+#ifdef _COREGL_EXT_SYMBOL_NOT_DEFINED
+#undef _COREGL_EXT_SYMBOL_NOT_DEFINED
+#undef _COREGL_EXT_SYMBOL
+#endif
#ifdef _COREGL_SYMBOL_NOT_DEFINED
#undef _COREGL_SYMBOL_NOT_DEFINED
#define _COREGL_SYMBOL_NOT_DEFINED
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (*_COREGL_NAME_MANGLE(FUNC_NAME)) PARAM_LIST;
#endif
+#ifndef _COREGL_EXT_SYMBOL
+#define _COREGL_EXT_SYMBOL_NOT_DEFINED
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
+#endif
_COREGL_SYMBOL(GL_FALSE, _eng_fn, glXGetProcAddress, (const char* procName))
_COREGL_SYMBOL(GL_FALSE, int, glXSwapIntervalSGI, (int interval))
_COREGL_SYMBOL(GL_FALSE, void, glXSwapIntervalEXT, (Display* dpy, GLXDrawable draw, int interval))
+#ifdef _COREGL_EXT_SYMBOL_NOT_DEFINED
+#undef _COREGL_EXT_SYMBOL_NOT_DEFINED
+#undef _COREGL_EXT_SYMBOL
+#endif
+
#ifdef _COREGL_SYMBOL_NOT_DEFINED
#undef _COREGL_SYMBOL_NOT_DEFINED
#undef _COREGL_SYMBOL
#include <sys/time.h>
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) RET_TYPE (*_orig_appopt_##FUNC_NAME) PARAM_LIST = NULL;
-#include "../../headers/sym.h"
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
+# include "../../headers/sym.h"
+#undef _COREGL_EXT_SYMBOL
#undef _COREGL_SYMBOL
void
appopt_apply_overrides_egl(int enable)
{
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) COREGL_INIT_ORIGINAL(_orig_appopt_, FUNC_NAME);
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
# include "../../headers/sym_egl.h"
+#undef _COREGL_EXT_SYMBOL
#undef _COREGL_SYMBOL
}
appopt_apply_overrides_gl(int enable)
{
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) COREGL_INIT_ORIGINAL(_orig_appopt_, FUNC_NAME);
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
# include "../../headers/sym_gl.h"
+#undef _COREGL_EXT_SYMBOL
#undef _COREGL_SYMBOL
}
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
if (strcmp(procname, #FUNC_NAME) == 0) \
{ \
- ret = (_eng_fn)FUNC_NAME; \
+ _eng_fn ret_orig = NULL; \
+ ret_orig = _orig_fastpath_eglGetProcAddress(procname); \
+ if (ret_orig != NULL) \
+ ret = (_eng_fn)ovr_##FUNC_NAME; \
goto finish; \
}
+
#include "../../headers/sym_egl.h"
#include "../../headers/sym_gl.h"
#undef _COREGL_SYMBOL
#define COREGL_API __attribute__((visibility("default")))
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) COREGL_API extern RET_TYPE FUNC_NAME PARAM_LIST;
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
# include "../headers/sym_egl.h"
+#undef _COREGL_EXT_SYMBOL
#undef _COREGL_SYMBOL
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) RET_TYPE (*ovr_##FUNC_NAME) PARAM_LIST = NULL;
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
ovr_##FUNC_NAME = (__typeof__(ovr_##FUNC_NAME))dlsym(lib_handle, #FUNC_NAME);
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
#include "../headers/sym_egl.h"
+#undef _COREGL_EXT_SYMBOL
#undef _COREGL_SYMBOL
return 1;
return ovr_eglQueryString(dpy, name);
}
-EGLImageKHR
-eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
-{
- INIT_EXPORT();
- return ovr_eglCreateImageKHR(dpy, ctx, target, buffer, attrib_list);
-}
-
-EGLBoolean
-eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
-{
- INIT_EXPORT();
- return ovr_eglDestroyImageKHR(dpy, image);
-}
-
-void *
-eglMapImageSEC(EGLDisplay dpy, EGLImageKHR image)
-{
- INIT_EXPORT();
- return ovr_eglMapImageSEC(dpy, image);
-}
-
-EGLBoolean
-eglUnmapImageSEC(EGLDisplay dpy, EGLImageKHR image)
-{
- INIT_EXPORT();
- return ovr_eglUnmapImageSEC(dpy, image);
-}
-
-EGLBoolean
-eglGetImageAttribSEC(EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value)
-{
- INIT_EXPORT();
- return ovr_eglGetImageAttribSEC(dpy, image, attribute, value);
-}
-
-EGLBoolean
-eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list)
-{
- INIT_EXPORT();
- return ovr_eglLockSurfaceKHR(display, surface, attrib_list);
-}
-
-EGLBoolean
-eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface)
-{
- INIT_EXPORT();
- return ovr_eglUnlockSurfaceKHR(display, surface);
-}
-
-
#define COREGL_API __attribute__((visibility("default")))
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) COREGL_API extern RET_TYPE FUNC_NAME PARAM_LIST;
+#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
# include "../headers/sym_gl.h"
+#undef _COREGL_EXT_SYMBOL
#undef _COREGL_SYMBOL
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) RET_TYPE (*ovr_##FUNC_NAME) PARAM_LIST = NULL;
ovr_glViewport(x, y, width, height);
}
-
-// GLES Extensions...
-void
-glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
-{
- ovr_glEGLImageTargetTexture2DOES(target, image);
-}
-
-void
-glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
-{
- ovr_glEGLImageTargetRenderbufferStorageOES(target, image);
-}
-
-void
-glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
-{
- ovr_glGetProgramBinary(program, bufsize, length, binaryFormat, binary);
-}
-
-void
-glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
-{
- ovr_glProgramBinary(program, binaryFormat, binary, length);
-}
-
-
-void
-glProgramParameteri(GLuint program, GLuint pname, GLint value)
-{
- ovr_glProgramParameteri(program, pname, value);
-}
-
-void
-glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-{
- ovr_glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
-}
-
-void
-glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
-{
- ovr_glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
-}
-
-void
-glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
-{
- ovr_glDiscardFramebufferEXT(target, numAttachments, attachments);
-}
-
-
-