# Build coregl Library
# ------------------------------
SET(COREGL "COREGL")
-SET(SRCS_common src/coregl.c src/coregl_thread_pthread.c src/coregl_trace.c src/coregl_override.c
- src/coregl_export.c src/coregl_export_egl.c src/coregl_export_gl.c
- src/coregl_wrappath.c src/coregl_wrappath_egl.c src/coregl_wrappath_gl.c
- src/coregl_fastpath.c src/coregl_fastpath_egl.c src/coregl_fastpath_gl.c)
+SET(SRCS_common
+ src/coregl.c
+ src/coregl_thread_pthread.c
+ src/coregl_trace.c
+ src/coregl_export.c
+ src/coregl_export_egl.c
+ src/coregl_export_gl.c
+ src/modules/coregl_module.c
+ src/modules/tracepath/coregl_tracepath.c
+ src/modules/tracepath/coregl_tracepath_egl.c
+ src/modules/tracepath/coregl_tracepath_gl.c
+
+ src/modules/fastpath/coregl_fastpath.c
+ src/modules/fastpath/coregl_fastpath_egl.c
+ src/modules/fastpath/coregl_fastpath_gl.c
+
+ src/modules/appopt/coregl_appopt.c
+ src/modules/appopt/coregl_appopt_egl.c
+ src/modules/appopt/coregl_appopt_gl.c
+)
+
#SET(HEADERS_common src/coregl_export.h src/coregl_fastpath.h src/coregl_fastpath_state.h src/coregl.h src/coregl_internal.h src/coregl_thread_pthread.h src/coregl_wrappath.h)
INCLUDE(FindPkgConfig)
CC = gcc
-CFLAGS = -g -O2 -fvisibility=hidden -fPIC -Wall -std=c99 \
- -D_COREGL_EMBEDDED_GL\
+CFLAGS = -g -O2 -fvisibility=hidden -fPIC -Wall -std=c99
+
+
+LDFLAGS = -g -O2 -fvisibility=hidden -Wall -std=c99 -lpthread
-LDFLAGS = -g -O2 -fvisibility=hidden -Wall -std=c99 -fPIC -ldl -lpthread -lGLESv2 -lEGL
SOURCES = \
src/coregl.c \
src/coregl_thread_pthread.c \
src/coregl_trace.c \
- src/coregl_override.c \
src/coregl_export.c \
src/coregl_export_egl.c \
src/coregl_export_gl.c \
- src/coregl_wrappath.c \
- src/coregl_wrappath_egl.c \
- src/coregl_wrappath_gl.c \
- src/coregl_fastpath.c \
- src/coregl_fastpath_egl.c \
- src/coregl_fastpath_gl.c
-
-BIN = libCOREGL.so.1.1
+ src/modules/coregl_module.c \
+ \
+ src/modules/tracepath/coregl_tracepath.c \
+ src/modules/tracepath/coregl_tracepath_egl.c \
+ src/modules/tracepath/coregl_tracepath_gl.c \
+ \
+ src/modules/fastpath/coregl_fastpath.c \
+ src/modules/fastpath/coregl_fastpath_egl.c \
+ src/modules/fastpath/coregl_fastpath_gl.c \
+ \
+ src/modules/appopt/coregl_appopt.c \
+ src/modules/appopt/coregl_appopt_egl.c \
+ src/modules/appopt/coregl_appopt_gl.c
+
+BIN = libCOREGL.so
OBJECTS = $(SOURCES:.c=.o)
all : $(BIN)
- ln -sf $(BIN) lib/libCOREGL.so
- ln -sf $(BIN) lib/libCOREGL.so.1
- ln -sf $(BIN) lib/libEGL.so
- ln -sf $(BIN) lib/libEGL.so.1
ln -sf $(BIN) lib/libEGL.so.1.4
- ln -sf $(BIN) lib/libGLESv2.so
- ln -sf $(BIN) lib/libGLESv2.so.2
ln -sf $(BIN) lib/libGLESv2.so.2.0
cp src/headers/egl.h include/EGL/def_egl.h
cp src/headers/gl.h include/GLES2/def_gl.h
$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
clean:
- rm -f $(OBJECTS) lib/*
+ rm -f $(OBJECTS) lib/$(BIN)
#include <dlfcn.h>
#include <string.h>
#include "coregl_internal.h"
+#include "coregl_export.h"
-CoreGL_Opt_Flag api_opt = COREGL_UNKNOWN_PATH;
-
-Mutex ctx_list_access_mutex = MUTEX_INITIALIZER;
-
-void *egl_lib_handle;
-void *gl_lib_handle;
-
-GLContext_List *glctx_list = NULL;
-
-int trace_api_flag = 0;
-int trace_ctx_flag = 0;
-int trace_ctx_force_flag = 0;
-int trace_state_flag = 0;
-int debug_nofp = 0;
-FILE *trace_fp = NULL;
+void *egl_lib_handle;
+void *gl_lib_handle;
// Symbol definition for real
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) RET_TYPE (*_sym_##FUNC_NAME) PARAM_LIST;
return fp_env;
}
-int
-add_context_state_to_list(const void *option, const int option_len, GLContextState *cstate, Mutex *mtx)
-{
- int ret = 0;
- int tid = 0;
- GLContext_List *current = NULL;
- GLContext_List *newitm = NULL;
-
- if (mtx != NULL) AST(mutex_lock(mtx) == 1);
-
- AST(cstate != NULL);
-
- tid = get_current_thread();
-
- current = glctx_list;
- while (current != NULL)
- {
- if (current->option_len == option_len &&
- memcmp(current->option, option, option_len) == 0 &&
- current->thread_id == tid)
- {
- AST(current->cstate == cstate);
- goto finish;
- }
- current = current->next;
- }
-
- newitm = (GLContext_List *)calloc(1, sizeof(GLContext_List));
- if (newitm == NULL)
- {
- ERR("Failed to create context list.\n");
- goto finish;
- }
-
- newitm->cstate = cstate;
- newitm->thread_id = tid;
- newitm->option_len = option_len;
- newitm->option = (void *)malloc(option_len);
- memcpy(newitm->option, option, option_len);
-
- if (glctx_list != NULL)
- newitm->next = glctx_list;
-
- glctx_list = newitm;
-
- ret = 1;
- goto finish;
-
-finish:
- if (ret != 1)
- {
- if (newitm != NULL)
- {
- free(newitm);
- newitm = NULL;
- }
- if (cstate != NULL)
- {
- free(cstate);
- cstate = NULL;
- }
- }
- if (mtx != NULL) AST(mutex_unlock(mtx) == 1);
-
- return ret;
-}
-
-GLContextState *
-get_context_state_from_list(const void *option, const int option_len, Mutex *mtx)
-{
- GLContextState *ret = NULL;
- GLContext_List *current = NULL;
- int tid = 0;
-
- if (mtx != NULL) AST(mutex_lock(mtx) == 1);
-
- tid = get_current_thread();
-
- current = glctx_list;
- while (current != NULL)
- {
- if (current->option_len == option_len &&
- memcmp(current->option, option, option_len) == 0 &&
- current->thread_id == tid)
- {
- ret = current->cstate;
- goto finish;
- }
- current = current->next;
- }
- goto finish;
-
-finish:
- if (mtx != NULL) AST(mutex_unlock(mtx) == 1);
- return ret;
-}
-
-int
-remove_context_states_from_list(GLContextState *cstate, Mutex *mtx)
+void
+cleanup_current_thread_state()
{
- int ret = 0;
- int tid = 0;
- GLContext_List *olditm = NULL;
- GLContext_List *current = NULL;
-
- if (mtx != NULL) AST(mutex_lock(mtx) == 1);
-
- AST(cstate != NULL);
+ GLThreadState *tstate = NULL;
- tid = get_current_thread();
- current = glctx_list;
+ tstate = get_current_thread_state();
- while (current != NULL)
+ if (tstate != NULL)
{
- if (current->cstate == cstate)
- {
- GLContext_List *nextitm = NULL;
- if (olditm != NULL)
- {
- olditm->next = current->next;
- nextitm = olditm->next;
- }
- else
- {
- glctx_list = current->next;
- nextitm = glctx_list;
- }
- free(current);
- ret = 1;
- current = nextitm;
- continue;
- }
- olditm = current;
- current = current->next;
+ LOG("[COREGL] de-init thread state \n");
+ deinit_modules_tstate(tstate);
+ free(tstate);
+ tstate = NULL;
}
- goto finish;
-finish:
- if (mtx != NULL) AST(mutex_unlock(mtx) == 1);
- return ret;
+ set_current_thread_state(NULL);
}
int
tstate = (GLThreadState *)calloc(1, sizeof(GLThreadState));
tstate->thread_id = get_current_thread();
- tstate->binded_api = EGL_OPENGL_ES_API;
- set_current_thread_state(&ctx_list_access_mutex, tstate);
+ init_modules_tstate(tstate);
+
+ set_current_thread_state(tstate);
#ifdef COREGL_TRACE_CONTEXT_INFO
add_to_general_trace_list(&thread_trace_list, tstate);
#define FALLBAK(dst) \
if (!dst) { dst = (__typeof__(dst))_sym_missing; ERR("WARNING : symbol '"#dst"' missing!\n"); }
-
-#ifndef _COREGL_DESKTOP_GL
-# define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
- FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME); \
- if (IS_EXTENSION == GL_TRUE) { \
- FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"EXT"); \
- FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"ARB"); \
- FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"OES"); \
- FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"KHR"); \
- } else { FALLBAK(_sym_##FUNC_NAME); }
-# include "headers/sym_egl.h"
-# undef _COREGL_SYMBOL
-#else
-# define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
- FINDSYM(glue_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME); \
- if (IS_EXTENSION == GL_TRUE) { \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"EXT"); \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"ARB"); \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"OES"); \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"MESA"); \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"SGI"); \
- } else { FALLBAK(_sym_##FUNC_NAME); }
-# include "headers/sym_glx.h"
-# undef _COREGL_SYMBOL
-#endif
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
+ FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME); \
+ if (IS_EXTENSION == GL_TRUE) { \
+ FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"EXT"); \
+ FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"ARB"); \
+ FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"OES"); \
+ FINDSYM(egl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"KHR"); \
+ } else { FALLBAK(_sym_##FUNC_NAME); }
+#include "headers/sym_egl.h"
+#undef _COREGL_SYMBOL
#undef FINDSYM
#undef FALLBAK
#define FALLBAK(dst) \
if (!dst) { dst = (__typeof__(dst))_sym_missing; ERR("WARNING : symbol '"#dst"' missing!\n"); }
-#ifndef _COREGL_DESKTOP_GL
-# define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
- FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME); \
- if (IS_EXTENSION == GL_TRUE) { \
- FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"EXT"); \
- FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"ARB"); \
- FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"OES"); \
- FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"KHR"); \
- } else { FALLBAK(_sym_##FUNC_NAME); }
-# include "headers/sym_gl.h"
-# undef _COREGL_SYMBOL
-#else
-# define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
- if (IS_EXTENSION == GL_TRUE) { \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME); \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"EXT"); \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"ARB"); \
- FINDSYM(gl_lib_handle, _sym_glXGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"OES"); \
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
+ FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME); \
+ if (IS_EXTENSION == GL_TRUE) { \
+ FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"EXT"); \
+ FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"ARB"); \
+ FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"OES"); \
+ FINDSYM(gl_lib_handle, _sym_eglGetProcAddress, _sym_##FUNC_NAME, #FUNC_NAME"KHR"); \
} else { FALLBAK(_sym_##FUNC_NAME); }
-# include "headers/sym_gl.h"
-# undef _COREGL_SYMBOL
-#endif
+#include "headers/sym_gl.h"
+#undef _COREGL_SYMBOL
#undef FINDSYM
#undef FALLBAK
_gl_lib_init(void)
{
-#ifndef _COREGL_DESKTOP_GL
//------------------------------------------------//
// Open EGL Library as EGL is separate
-#ifndef _COREGL_EMBED_EVAS
egl_lib_handle = dlopen("libEGL_drv.so", RTLD_NOW);
-#else
- egl_lib_handle = dlopen("libEGL.so.1", RTLD_NOW);
- if (!egl_lib_handle)
- egl_lib_handle = dlopen("libEGL.so", RTLD_NOW);
-#endif
if (!egl_lib_handle)
{
ERR("\E[0;31;1mERROR : %s\E[0m\n\n", dlerror());
}
// use gl_lib handle for GL symbols
-#ifndef _COREGL_EMBED_EVAS
gl_lib_handle = dlopen("libGLESv2_drv.so", RTLD_NOW);
-#else
- gl_lib_handle = dlopen("libGLESv2.so.1", RTLD_NOW);
- if (!gl_lib_handle)
- gl_lib_handle = dlopen("libGLESv2.so", RTLD_NOW);
-#endif
if (!gl_lib_handle)
{
ERR("\E[0;31;1mERROR : %s\E[0m\n\n", dlerror());
}
//------------------------------------------------//
-#else // GLX
-
-
-#ifndef _COREGL_EMBED_EVAS
- gl_lib_handle = dlopen("libGL_drv.so", RTLD_NOW);
-#else
- gl_lib_handle = dlopen("libGL.so.1", RTLD_NOW);
- if (!gl_lib_handle)
- gl_lib_handle = dlopen("libGL.so", RTLD_NOW);
-#endif
- if (!gl_lib_handle)
- {
- ERR("%s\n", dlerror());
- return 0;
- }
-
- //------------------------------------------------//
-
-#endif // _COREGL_DESKTOP_GL
-
if (!_glue_sym_init()) return 0;
if (!_gl_sym_init()) return 0;
return 1;
}
-extern void init_fast_gl();
-extern void init_wrap_gl();
+static int
+_gl_lib_deinit(void)
+{
+ if (egl_lib_handle) dlclose(egl_lib_handle);
+ if (gl_lib_handle) dlclose(gl_lib_handle);
+
+ return 1;
+}
-#ifndef _COREGL_EMBED_EVAS
-__attribute__((constructor))
-#endif
int
init_gl()
{
- int fastpath_opt = 0;
-
- LOG("[CoreGL] ");
+ LOG("[CoreGL] Library initializing...");
if (!_gl_lib_init()) return 0;
- fastpath_opt = atoi(get_env_setting("COREGL_FASTPATH"));
-
- switch (fastpath_opt)
- {
- case 1:
- api_opt = COREGL_FAST_PATH;
- LOG(": (%d) Fastpath enabled...\n", fastpath_opt);
- init_fast_gl();
- break;
- default:
- LOG(": (%d) Default API path enabled...\n", fastpath_opt);
- api_opt = COREGL_NORMAL_PATH;
- init_wrap_gl();
- break;
- }
-
- {
- const char *output_file = NULL;
- output_file = get_env_setting("COREGL_LOG_FILE");
- if (strlen(output_file) > 0)
- {
- trace_fp = fopen(output_file, "w");
- }
- if (trace_fp == NULL)
- trace_fp = stderr;
- }
-
-#ifdef COREGL_TRACE_APICALL_INFO
- trace_api_flag = atoi(get_env_setting("COREGL_TRACE_API"));
-#endif
-#ifdef COREGL_TRACE_CONTEXT_INFO
- trace_ctx_flag = atoi(get_env_setting("COREGL_TRACE_CTX"));
-#endif
-#ifdef COREGL_TRACE_CONTEXT_INFO
- trace_ctx_force_flag = atoi(get_env_setting("COREGL_TRACE_CTX_FORCE"));
-#endif
-#ifdef COREGL_TRACE_STATE_INFO
- trace_state_flag = atoi(get_env_setting("COREGL_TRACE_STATE"));
-#endif
+ init_export();
- debug_nofp = atoi(get_env_setting("COREGL_DEBUG_NOFP"));
+ LOG(" -> Completed\n");
-
- override_glue_apis(api_opt);
- override_gl_apis(api_opt);
+ init_modules();
return 1;
}
-extern void free_fast_gl();
-extern void free_wrap_gl();
-
-#ifndef _COREGL_EMBED_EVAS
__attribute__((destructor))
-#endif
void
free_gl()
{
- GLContext_List *current = NULL;
-
- switch (api_opt)
+ if (export_initialized != 0)
{
- case COREGL_FAST_PATH:
- free_fast_gl();
- break;
- default:
- free_wrap_gl();
- break;
- }
-
- AST(mutex_lock(&ctx_list_access_mutex) == 1);
+ deinit_modules();
- {
- // Destroy remained context & Detect leaks
- int retry_destroy = 0;
-
- while (1)
- {
- retry_destroy = 0;
- current = glctx_list;
- while (current)
- {
- if (current->cstate != NULL)
- {
- ERR("\E[0;31;1mWARNING : Context attached to [dpy=%p|rctx=%p] has not been completely destroyed.(leak)\E[0m\n", current->cstate->rdpy, current->cstate->rctx);
-
-#ifndef _COREGL_DESKTOP_GL
- _sym_eglMakeCurrent(current->cstate->rdpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
- _sym_eglDestroyContext(current->cstate->rdpy, current->cstate->rctx);
-#else
- _sym_glXDestroyContext(current->cstate->rdpy, current->cstate->rctx);
-#endif
-
- remove_context_states_from_list(current->cstate, NULL);
- retry_destroy = 1;
- break;
- }
-
- glctx_list = current->next;
- free(current);
- current = glctx_list;
- }
- if (retry_destroy == 0) break;
- }
+ _gl_lib_deinit();
}
-
-#ifndef _COREGL_DESKTOP_GL
- if (egl_lib_handle) dlclose(egl_lib_handle);
-#endif
- if (gl_lib_handle) dlclose(gl_lib_handle);
- goto finish;
-
-finish:
- AST(mutex_unlock(&ctx_list_access_mutex) == 1);
}
#include <X11/Xlib.h>
#include <X11/Xutil.h>
-#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
-#else
-# define _COREGL_DESKTOP_GL
-#endif
-
-#if defined(_COREGL_EMBEDDED_GL)
-#undef _COREGL_DESKTOP_GL
-#endif
-
#define COREGL_API __attribute__((visibility("default")))
// Include GL/EGL/GLX types
-#ifndef _COREGL_DESKTOP_GL
# include <GLES/glplatform.h>
# include <EGL/eglplatform.h>
# include "headers/egl.h"
-#else
-# include "headers/glx.h"
-#endif
# include "headers/gl.h"
typedef void (*_eng_fn) (void);
#include "headers/sym.h"
#undef _COREGL_SYMBOL
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) RET_TYPE (*wrp_##FUNC_NAME) PARAM_LIST = NULL;
-#include "headers/sym.h"
+#include "coregl_internal.h"
+#include "coregl_export.h"
+
+#include <stdlib.h>
+
+#define COREGL_OVERRIDE_API(mangle, func, prefix) \
+ mangle##func = prefix##func
+
+int export_initialized = 0;
+
+static void
+_clean_overrides()
+{
+#define OVERRIDE(f) COREGL_OVERRIDE_API(ovr_, f, _sym_)
+
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) OVERRIDE(FUNC_NAME);
+# include "headers/sym_egl.h"
+#undef _COREGL_SYMBOL
+
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) OVERRIDE(FUNC_NAME);
+# include "headers/sym_gl.h"
#undef _COREGL_SYMBOL
+#undef OVERRIDE
+}
+
+void
+init_export()
+{
+ _clean_overrides();
+}
+
+void
+deinit_export()
+{
+}
+
# include "headers/sym.h"
#undef _COREGL_SYMBOL
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (*wrp_##FUNC_NAME) PARAM_LIST;
-# include "headers/sym.h"
-#undef _COREGL_SYMBOL
+extern int export_initialized;
+
+extern void init_export();
+extern void clean_overrides();
#endif // COREGL_EXPORT_H
#include "coregl_export.h"
+Mutex init_export_mutex = MUTEX_INITIALIZER;
+
+#define INIT_EXPORT() \
+ if (unlikely(export_initialized == 0)) \
+ { \
+ mutex_lock(&init_export_mutex); \
+ if (export_initialized == 0) \
+ { \
+ init_gl(); \
+ export_initialized = 1; \
+ } \
+ mutex_unlock(&init_export_mutex); \
+ }
+
EGLint
eglGetError(void)
{
+ INIT_EXPORT();
return ovr_eglGetError();
}
EGLDisplay
eglGetDisplay(EGLNativeDisplayType display_id)
{
+ INIT_EXPORT();
return ovr_eglGetDisplay(display_id);
}
EGLBoolean
eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor)
{
+ INIT_EXPORT();
return ovr_eglInitialize(dpy, major, minor);
}
EGLBoolean
eglTerminate(EGLDisplay dpy)
{
+ INIT_EXPORT();
return ovr_eglTerminate(dpy);
}
EGLBoolean
eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
{
+ INIT_EXPORT();
return ovr_eglGetConfigs(dpy, configs, config_size, num_config);
}
EGLBoolean
eglChooseConfig(EGLDisplay dpy, const EGLint* attrib_list, EGLConfig* configs, EGLint config_size, EGLint* num_config)
{
+ INIT_EXPORT();
return ovr_eglChooseConfig(dpy, attrib_list, configs, config_size, num_config);
}
EGLBoolean
eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
{
+ INIT_EXPORT();
return ovr_eglGetConfigAttrib(dpy, config, attribute, value);
}
EGLSurface
eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint* attrib_list)
{
+ INIT_EXPORT();
return ovr_eglCreateWindowSurface(dpy, config, win, attrib_list);
}
EGLSurface
eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
{
+ INIT_EXPORT();
return ovr_eglCreatePbufferSurface(dpy, config, attrib_list);
}
EGLSurface
eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint* attrib_list)
{
+ INIT_EXPORT();
return ovr_eglCreatePixmapSurface(dpy, config, pixmap, attrib_list);
}
EGLBoolean
eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
{
+ INIT_EXPORT();
return ovr_eglDestroySurface(dpy, surface);
}
EGLBoolean
eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
{
+ INIT_EXPORT();
return ovr_eglQuerySurface(dpy, surface, attribute, value);
}
EGLBoolean
eglBindAPI(EGLenum api)
{
+ INIT_EXPORT();
return ovr_eglBindAPI(api);
}
EGLenum
eglQueryAPI(void)
{
+ INIT_EXPORT();
return ovr_eglQueryAPI();
}
EGLBoolean
eglWaitClient(void)
{
+ INIT_EXPORT();
return ovr_eglWaitClient();
}
EGLBoolean
eglReleaseThread(void)
{
+ INIT_EXPORT();
return ovr_eglReleaseThread();
}
EGLSurface
eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
{
+ INIT_EXPORT();
return ovr_eglCreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
}
EGLBoolean
eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
{
+ INIT_EXPORT();
return ovr_eglSurfaceAttrib(dpy, surface, attribute, value);
}
EGLBoolean
eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{
+ INIT_EXPORT();
return ovr_eglBindTexImage(dpy, surface, buffer);
}
EGLBoolean
eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{
+ INIT_EXPORT();
return ovr_eglReleaseTexImage(dpy, surface, buffer);
}
EGLBoolean
eglSwapInterval(EGLDisplay dpy, EGLint interval)
{
+ INIT_EXPORT();
return ovr_eglSwapInterval(dpy, interval);
}
EGLContext
eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)
{
+ INIT_EXPORT();
return ovr_eglCreateContext(dpy, config, share_context, attrib_list);
}
EGLBoolean
eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
{
+ INIT_EXPORT();
return ovr_eglDestroyContext(dpy, ctx);
}
EGLBoolean
eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
{
+ INIT_EXPORT();
return ovr_eglMakeCurrent(dpy, draw, read, ctx);
}
EGLContext
eglGetCurrentContext(void)
{
+ INIT_EXPORT();
return ovr_eglGetCurrentContext();
}
EGLSurface
eglGetCurrentSurface(EGLint readdraw)
{
+ INIT_EXPORT();
return ovr_eglGetCurrentSurface(readdraw);
}
EGLDisplay
eglGetCurrentDisplay(void)
{
+ INIT_EXPORT();
return ovr_eglGetCurrentDisplay();
}
EGLBoolean
eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
{
+ INIT_EXPORT();
return ovr_eglQueryContext(dpy, ctx, attribute, value);
}
EGLBoolean
eglWaitGL(void)
{
+ INIT_EXPORT();
return ovr_eglWaitGL();
}
EGLBoolean
eglWaitNative(EGLint engine)
{
+ INIT_EXPORT();
return ovr_eglWaitNative(engine);
}
EGLBoolean
eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
{
+ INIT_EXPORT();
return ovr_eglSwapBuffers(dpy, surface);
}
EGLBoolean
eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
{
+ INIT_EXPORT();
return ovr_eglCopyBuffers(dpy, surface, target);
}
_eng_fn
eglGetProcAddress(const char* procname)
{
+ INIT_EXPORT();
return ovr_eglGetProcAddress(procname);
}
const char *
eglQueryString(EGLDisplay dpy, EGLint name)
{
+ INIT_EXPORT();
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);
}
+++ /dev/null
-#ifndef COREGL_FASTPATH_H
-#define COREGL_FASTPATH_H
-
-#include "coregl_internal.h"
-
-// Symbol definition for fastpath
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (fpgl_##FUNC_NAME) PARAM_LIST;
-# include "headers/sym.h"
-#undef _COREGL_SYMBOL
-
-#define FLAG_BIT_0 0x01
-#define FLAG_BIT_1 0x02
-#define FLAG_BIT_2 0x04
-#define FLAG_BIT_3 0x08
-#define FLAG_BIT_4 0x10
-#define FLAG_BIT_5 0x20
-#define FLAG_BIT_6 0x40
-#define FLAG_BIT_7 0x80
-
-#define MAX_TEXTURE_UNITS 32
-#define MAX_VERTEX_ATTRIBS 64
-
-typedef struct
-{
- GLuint tex_id;
-} GL_Texture_State;
-
-typedef struct
-{
- GLboolean modified;
- GLboolean enabled;
- GLuint buf_id;
- GLint size;
- GLenum type;
- GLboolean normalized;
- GLsizei stride;
- const void *pointer;
-} GL_Vertex_Array_State;
-
-typedef struct
-{
- GLboolean modified;
- GLfloat value[4];
-} GL_Vertex_Attrib;
-
-
-#define MAGIC_GLFAST 0x73777770
-#define MAX_GL_OBJECT_SIZE 100000
-
-typedef enum
-{
- GL_OBJECT_TYPE_UNKNOWN = 0x0,
- GL_OBJECT_TYPE_TEXTURE = 0x1000000,
- GL_OBJECT_TYPE_BUFFER = 0x2000000,
- GL_OBJECT_TYPE_FRAMEBUFFER = 0x3000000,
- GL_OBJECT_TYPE_RENDERBUFFER = 0x4000000,
- GL_OBJECT_TYPE_PROGRAM = 0x5000000,
-} GL_Object_Type;
-
-typedef struct _GL_Object
-{
- GLuint id;
- GLuint real_id;
-
- struct _GL_Shared_Object_State *parent;
-} GL_Object;
-
-typedef struct _GL_Shared_Object_State
-{
- int ref_count;
-
- GL_Object *texture[MAX_GL_OBJECT_SIZE];
- GL_Object *buffer[MAX_GL_OBJECT_SIZE];
- GL_Object *framebuffer[MAX_GL_OBJECT_SIZE];
- GL_Object *renderbuffer[MAX_GL_OBJECT_SIZE];
- GL_Object *program[MAX_GL_OBJECT_SIZE];
-} GL_Shared_Object_State;
-
-typedef struct _GLGlueContext
-{
- int magic;
- int initialized;
- int surface_attached;
-
- int ref_count;
- int is_destroyed;
-
- int used_count;
-
- GLDisplay *rdpy;
- GLContextState *cstate;
- int thread_id;
-
- void *real_ctx_option;
- int real_ctx_option_len;
-
- void *real_ctx_sharable_option;
- int real_ctx_sharable_option_len;
-
- unsigned char _bind_flag;
- unsigned char _enable_flag1;
- unsigned char _enable_flag2;
- unsigned char _clear_flag1;
- unsigned char _clear_flag2;
- unsigned char _tex_flag1;
- unsigned char _blend_flag;
- unsigned char _stencil_flag1;
- unsigned char _stencil_flag2;
- unsigned char _misc_flag1;
- unsigned char _misc_flag2;
- unsigned char _vattrib_flag;
-
- GL_Shared_Object_State *sostate;
-
- GLenum gl_error;
-
- // General state
-#define GLUE_STATE(TYPE, NAME, SIZE, ARRAY_SIZE, DEFAULT_STMT, GET_STMT) TYPE NAME[ARRAY_SIZE];
-# include "coregl_fastpath_state.h"
-#undef GLUE_STATE
-
-} GLGlueContext;
-
-typedef struct _GLGlueContext_List
-{
- GLGlueContext *gctx;
- struct _GLGlueContext_List *prev;
- struct _GLGlueContext_List *next;
-} GLGlueContext_List;
-
-extern GLGlueContext_List *gctx_list;
-
-extern GLGlueContext *initial_ctx;
-
-extern int debug_nofp;
-
-extern void init_fast_gl();
-extern void free_fast_gl();
-
-extern int init_context_states(GLGlueContext *ctx);
-extern void make_context_current(GLGlueContext *oldctx, GLGlueContext *newctx);
-
-#ifdef COREGL_TRACE_STATE_INFO
-extern void dump_context_states(GLGlueContext *ctx, int force_output);
-#endif
-
-extern GLuint sostate_create_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint name);
-extern GLuint sostate_remove_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint glue_name);
-extern GLuint sostate_get_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint name);
-extern GLuint sostate_find_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint real_name);
-
-
-#endif // COREGL_FASTPATH_H
-
+++ /dev/null
-#include "coregl_internal.h"
-#include "coregl_fastpath.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-
-#define INIT_FAST_GLX_FUNC() \
- LOG("WARNING : GLX fastpath is not implemented!!!!\n");
-
-#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
-
-typedef struct _General_Trace_List
-{
- void *value;
- struct _General_Trace_List *next;
-} General_Trace_List;
-
-General_Trace_List *glue_ctx_trace_list = NULL;
-General_Trace_List *thread_trace_list = NULL;
-Mutex general_trace_lists_access_mutex = MUTEX_INITIALIZER;
-
-static int
-_add_to_general_trace_list(General_Trace_List **gtl, void *value)
-{
- int ret = 0;
- General_Trace_List *newitm = NULL;
-
- AST(mutex_lock(&general_trace_lists_access_mutex) == 1);
-
- newitm = (General_Trace_List *)calloc(1, sizeof(General_Trace_List));
- newitm->value = value;
- newitm->next = *gtl;
- *gtl = newitm;
- ret = 1;
- goto finish;
-
-finish:
- AST(mutex_unlock(&general_trace_lists_access_mutex) == 1);
- return ret;
-}
-
-static int
-_remove_from_general_trace_list(General_Trace_List **gtl, void *value)
-{
- int ret = 0;
- General_Trace_List *current = NULL;
- General_Trace_List *priv = NULL;
-
- AST(mutex_lock(&general_trace_lists_access_mutex) == 1);
-
- current = *gtl;
-
- while(current != NULL)
- {
- if (current->value == value)
- {
- if (priv == NULL)
- *gtl = current->next;
- else
- priv->next = current->next;
-
- free(current);
- ret = 1;
- goto finish;
- }
- priv = current;
- current = current->next;
- }
- goto finish;
-
-finish:
- AST(mutex_unlock(&general_trace_lists_access_mutex) == 1);
-
- return ret;
-}
-
-static void
-_dump_context_info(const char *ment, int force_output)
-{
- GLThreadState *tstate = NULL;
- static struct timeval tv_last = { 0, 0 };
-
- AST(mutex_lock(&ctx_list_access_mutex) == 1);
- AST(mutex_lock(&general_trace_lists_access_mutex) == 1);
-
- if (!force_output)
- {
- struct timeval tv_now = { 0, 0 };
- AST(gettimeofday(&tv_now, NULL) == 0);
- if (tv_now.tv_sec - tv_last.tv_sec < 5)
- {
- goto finish;
- }
- tv_last = tv_now;
- }
-
- tstate = get_current_thread_state();
-
- LOG("\n");
- LOG("\E[0;40;34m===================================================================================================================\E[0m\n");
- LOG("\E[0;32;1m Context info \E[1;37;1m: %s\E[0m\n", ment);
- LOG("\E[0;40;34m===================================================================================================================\E[0m\n");
-
- // Context State List
- {
- GLContextState *cstate = NULL;
- void *iter = NULL;
-
- iter = traverse_context_state_from_list(NULL, &cstate);
- while (cstate != NULL)
- {
-
- LOG(" RealCTX [%12p] : EGLDPY=[%12p] EGLCTX=[%12p] GlueCTX=[%12p] <[%2d] GlueCTXs>\E[0m\n",
- cstate,
- cstate->rdpy,
- cstate->rctx,
- cstate->data,
- cstate->ref_count);
-
- if (iter == NULL) break;
- iter = traverse_context_state_from_list(iter, &cstate);
- }
-
- }
-
- LOG("\E[0;40;33m...................................................................................................................\E[0m\n");
-
- // Glue Context List
- {
- General_Trace_List *current = NULL;
- current = glue_ctx_trace_list;
-
- while(current != NULL)
- {
- GLGlueContext *cur_gctx = (GLGlueContext *)current->value;
-
- LOG(" %c GlueCTX [%12p] : EGLDPY=[%12p] TID=[%12d]",
- (cur_gctx->cstate != NULL && cur_gctx->cstate->data == cur_gctx) ? '*' : ' ',
- cur_gctx,
- cur_gctx->rdpy,
- cur_gctx->thread_id);
-
- if (cur_gctx->cstate != NULL)
- {
- LOG(" RealCTX=[%12p]\n",
- cur_gctx->cstate);
- }
- else
- {
- LOG(" (NOT BINDED) \E[0m\n");
- }
-
- current = current->next;
- }
- }
-
- LOG("\E[0;40;33m...................................................................................................................\E[0m\n");
-
- // Thread State List
- {
- General_Trace_List *current = NULL;
- current = thread_trace_list;
-
- while(current != NULL)
- {
- GLThreadState *cur_tstate = (GLThreadState *)current->value;
-
- LOG(" %c Thread [%12d] : Surf <D=[%12p] R=[%12p]>",
- (tstate == cur_tstate) ? '*' : ' ',
- cur_tstate->thread_id,
- cur_tstate->rsurf_draw,
- cur_tstate->rsurf_read);
-
- if (cur_tstate->cstate != NULL)
- {
- LOG(" GlueCTX=[%12p] RealCTX=[%12p]\E[0m\n",
- cur_tstate->cstate->data,
- cur_tstate->cstate);
- }
- else
- {
- LOG(" (NOT BINDED TO THREAD)\E[0m\n");
- }
-
- current = current->next;
- }
- }
-
- LOG("\E[0;40;34m===================================================================================================================\E[0m\n");
- LOG("\n");
-
- goto finish;
-
-finish:
-
- AST(mutex_unlock(&general_trace_lists_access_mutex) == 1);
- AST(mutex_unlock(&ctx_list_access_mutex) == 1);
-
-}
-
-#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
-
-
-typedef struct
-{
- EGLint context_client_version;
-} EGL_packed_attrib_list;
-
-typedef struct
-{
- EGLDisplay dpy;
- EGLConfig cfg;
- EGL_packed_attrib_list attrib_list;
-} EGL_packed_option;
-
-typedef struct
-{
- EGLContext share_context;
-} EGL_packed_sharable_option;
-
-
-static int
-_pack_egl_context_option(EGL_packed_option *pack_data, EGLDisplay dpy, EGLConfig cfg, const EGLint *attrib_list)
-{
- int ret = 0;
-
- pack_data->dpy = dpy;
- pack_data->cfg = cfg;
-
- // Default context attributes
- pack_data->attrib_list.context_client_version = EGL_DONT_CARE;
-
- // Apply specified attributes
- EGLint *attrib = (EGLint *)attrib_list;
- while(attrib[0] != EGL_NONE)
- {
- switch(attrib[0])
- {
- case EGL_CONTEXT_CLIENT_VERSION:
- pack_data->attrib_list.context_client_version = attrib[1];
- break;
- default:
- ERR("Invalid context attribute.\n");
- goto finish;
- }
- attrib += 2;
- }
- ret = 1;
- goto finish;
-
-finish:
- return ret;
-}
-
-static int
-_unpack_egl_context_option(EGL_packed_option *pack_data, EGLDisplay *dpy, EGLConfig *cfg, EGLint *attrib_list, const int attrib_list_size)
-{
- int ret = 0;
-
- AST(dpy != NULL);
- AST(cfg != NULL);
- AST(attrib_list != NULL);
- AST(attrib_list_size < 1);
-
- *dpy = pack_data->dpy;
- *cfg = pack_data->cfg;
-
- {
- int attrib_list_index = 0;
-
- memset(attrib_list, 0x00, sizeof(int) * attrib_list_size);
-
- if (pack_data->attrib_list.context_client_version != EGL_DONT_CARE)
- {
- AST(attrib_list_index + 2 < attrib_list_size);
- attrib_list[attrib_list_index] = EGL_CONTEXT_CLIENT_VERSION;
- attrib_list[attrib_list_index + 1] = pack_data->attrib_list.context_client_version;
- attrib_list_index += 2;
- }
-
- attrib_list[attrib_list_index] = EGL_NONE;
- }
- ret = 1;
- goto finish;
-
-finish:
- return ret;
-}
-
-static int
-_pack_egl_context_sharable_option(EGL_packed_sharable_option *pack_data, EGLContext share_context)
-{
- int ret = 0;
-
- pack_data->share_context = share_context;
-
- ret = 1;
- goto finish;
-
-finish:
- return ret;
-}
-
-static int
-_unpack_egl_context_sharable_option(EGL_packed_sharable_option *pack_data, EGLContext *share_context)
-{
- int ret = 0;
-
- *share_context = pack_data->share_context;
-
- ret = 1;
- goto finish;
-
-finish:
- return ret;
-}
-
-static void
-_link_context_state(GLContextState *cstate, GLGlueContext *gctx)
-{
- cstate->ref_count++;
-}
-
-static void
-_unlink_context_state(GLContextState *cstate, GLGlueContext *gctx)
-{
- cstate->ref_count--;
- if (cstate->ref_count == 0)
- {
- GLThreadState *tstate = NULL;
-
- AST(remove_context_state_from_list(cstate) == 1);
-
- tstate = get_current_thread_state();
- if (tstate != NULL)
- {
- if (tstate->cstate == cstate)
- {
- _sym_glXMakeCurrent(gctx->rdpy, tstate->rsurf_draw, NULL);
- tstate->cstate = NULL;
- }
- }
- _sym_glXDestroyContext(gctx->rdpy, cstate->rctx);
- free(cstate);
- cstate = NULL;
- }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//----------------------------------------------------------------//
-// Fastpath GLX Functions //
-// The functions have prefix 'fpgl_' for (fastpath gl) //
-//----------------------------------------------------------------//
-GLXContext
-fpgl_glXCreateContext(Display* dpy, XVisualInfo* vis, GLXContext shareList, Bool direct)
-{
- GLGlueContext *gctx = NULL;
- GLContextState *cstate = NULL;
- GLContextState *cstate_new = NULL;
- GLContext ctx = NULL;
- GLXContext real_share_context = NULL;
-
- EGL_packed_option *real_ctx_option = NULL;
- EGL_packed_sharable_option *real_ctx_sharable_option = NULL;
-
- _COREGL_FAST_FUNC_BEGIN();
-
- if (share_context != NULL)
- {
- GLGlueContext *share_gctx = NULL;
- share_gctx = (GLGlueContext *)share_context;
- if (share_gctx->cstate == NULL)
- {
- ERR("Invalid (not initialized) share context handle\n");
- goto finish;
- }
- real_share_context = share_gctx->cstate->rctx;
- }
-
-
- // Create a global context if it hasn't been created
- if (cstate == NULL)
- {
- // Create a global context if it hasn't been created yet
- ctx = _sym_glXCreateContext(dpy, vis, real_share_context, 1);
- if (ctx == NULL)
- {
- ERR("Failed creating a glx global context for Fastpath.\n");
- goto finish;
- }
-
- cstate_new = (GLContextState *)calloc(1, sizeof(GLContextState));
- if (cstate_new == NULL)
- {
- ERR("Error creating a new context state.\n");
- goto finish;
- }
- cstate_new->rctx = ctx;
- cstate_new->rdpy = dpy;
- cstate_new->data = NULL;
-
- ctx = NULL;
-
- AST(add_context_state_to_list(real_ctx_option, sizeof(EGL_packed_option), cstate_new) == 1);
-
- cstate = cstate_new;
- }
-
- // Allocate a new context
- gctx = (GLGlueContext *)calloc(1, sizeof(GLGlueContext));
- if (gctx == NULL)
- {
- ERR("Error creating a new GLGlueContext.\n");
- goto finish;
- }
-
- gctx->magic = MAGIC_GLFAST;
- gctx->initialized = 0;
- gctx->rdpy = dpy;
- gctx->thread_id = get_current_thread();
-
- gctx->real_ctx_option = real_ctx_option;
- gctx->real_ctx_option_len = sizeof(EGL_packed_option);
- gctx->real_ctx_sharable_option = real_ctx_sharable_option;
- gctx->real_ctx_sharable_option_len = sizeof(EGL_packed_sharable_option);
-
- gctx->cstate = cstate;
-
- _add_to_general_trace_list(&glue_ctx_trace_list, gctx);
-
- cstate->ref_count++;
-
-#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
- {
- char ment[256];
- sprintf(ment, "eglCreateContext completed (GlueCTX=[%12p])", gctx);
- _dump_context_info(ment, 1);
- }
-#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
-
- goto finish;
-
-finish:
- if (gctx == NULL)
- {
- if (ctx != NULL)
- {
- _sym_eglDestroyContext(dpy, ctx);
- ctx = NULL;
- }
- if (real_ctx_option != NULL)
- {
- free(real_ctx_option);
- real_ctx_option = NULL;
- }
- if (real_ctx_sharable_option != NULL)
- {
- free(real_ctx_sharable_option);
- real_ctx_sharable_option = NULL;
- }
- if (cstate_new != NULL)
- {
- remove_context_state_from_list(cstate_new);
- free(cstate_new);
- cstate_new = NULL;
- }
- }
-
- _COREGL_FAST_FUNC_END();
- return (GLXContext)gctx;
-}
-
-
-
-void
-fpgl_glXDestroyContext(Display* dpy, GLXContext ctx)
-{
- int ret = 0;
- GLGlueContext *gctx = NULL;
-
- _COREGL_FAST_FUNC_BEGIN();
-
- gctx = (GLGlueContext *)ctx;
-
- if (gctx != NULL)
- {
- GLContextState *cstate = NULL;
- if (gctx->magic != MAGIC_GLFAST)
- {
- ERR("Magic Check Failed!!!\n");
- ret = 0;
- goto finish;
- }
- cstate = gctx->cstate;
- AST(cstate != NULL);
-
- _unlink_context_state(cstate, gctx);
-
- _remove_from_general_trace_list(&glue_ctx_trace_list, gctx);
-
- if (gctx->real_ctx_option != NULL)
- {
- free(gctx->real_ctx_option);
- gctx->real_ctx_option = NULL;
- }
- if (gctx->real_ctx_sharable_option != NULL)
- {
- free(gctx->real_ctx_sharable_option);
- gctx->real_ctx_sharable_option = NULL;
- }
- free(gctx);
- }
- else
- {
- ERR("Invalid Context.\n");
- ret = 0;
- goto finish;
- }
-
-#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
- {
- char ment[256];
- sprintf(ment, "eglDestroyContext completed (GlueCTX=[%12p])", ctx);
- _dump_context_info(ment, 1);
- }
-#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
-
- ret = 1;
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
- return ret;
-}
-
-
-
-
-
-
-
-
-
-GLXContext
-fpgl_glXGetCurrentContext(void)
-{
- GLGlueContext *ret = NULL;
- GLThreadState *tstate = NULL;
-
- _COREGL_FAST_FUNC_BEGIN();
-
- tstate = get_current_thread_state();
-
- if (tstate != NULL)
- {
- if (tstate->cstate != NULL)
- {
- ret = (GLGlueContext *)tstate->cstate->data;
- }
- }
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
- return (EGLContext)ret;
-}
-
-
-GLXDrawable
-fpgl_glXGetCurrentDrawable(void)
-{
- GLXDrawable ret = None;
- GLThreadState *tstate = NULL;
-
- _COREGL_FAST_FUNC_BEGIN();
-
- tstate = get_current_thread_state();
-
- if (tstate != NULL)
- ret = (GLGlueContext *)tstate->rsurf_draw;
-
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
- return ret;
-}
-
-Bool
-fpgl_glXMakeCurrent(Display* dpy, GLXDrawable draw, GLXContext ctx)
-{
- Bool ret = False;
- Bool need_mc = False;
- GLGlueContext *gctx = NULL;
-
- GLThreadState *tstate = NULL;
- GLContextState *cstate = NULL;
-
- _COREGL_FAST_FUNC_BEGIN();
-
- gctx = (GLGlueContext *)ctx;
-
- tstate = get_current_thread_state();
- if (tstate == NULL)
- {
- // TODO : Move to Initialize
- tstate = (GLThreadState *)calloc(1, sizeof(GLThreadState));
- tstate->thread_id = get_current_thread();
-
- set_current_thread_state(&ctx_list_access_mutex, tstate);
-
- _add_to_general_trace_list(&thread_trace_list, tstate);
-
- tstate = get_current_thread_state();
- AST(tstate != NULL);
- }
-
- // Fast path for context deletion
- if (ctx == NULL)
- {
- AST(gctx == NULL);
- if (draw != None)
- {
- // BB : full makecurrent when draw/read is specified
- if (!_sym_glXMakeCurrent(dpy, draw, NULL))
- {
- ERR("Error making context current with the drawable.\n");
- ret = False;
- goto finish;
- }
- tstate->cstate = NULL;
- }
-
- tstate->rsurf_draw = draw;
- tstate->rsurf_read = draw;
- ret = True;
- goto finish;
- }
-
- AST(gctx != NULL);
- AST(gctx->cstate != NULL);
-
- if (gctx->rdpy != dpy)
- {
- ERR("Invalid context (or invalid Display)\n");
- ret = False;
- goto finish;
- }
-
- AST(gctx->real_ctx_option != NULL);
- AST(gctx->real_ctx_sharable_option != NULL);
-
- // Handle cross threading of context (when used by two or more gctx)
- if (gctx->thread_id != get_current_thread() && gctx->cstate->ref_count > 1)
- {
- GLContextState *cstate_new = NULL;
- GLXContext *new_real_ctx = NULL;
-
- // Create a new context
- {
-#define ATTRIB_LIST_BUFFER_SIZE 8
-
- Display dpy = NULL;
- EGLConfig config = NULL;
- int attrib_list[ATTRIB_LIST_BUFFER_SIZE];
- GLXContext real_share_context = NULL;
-
- _unpack_egl_context_option(gctx->real_ctx_option, &dpy, &config, attrib_list, ATTRIB_LIST_BUFFER_SIZE);
- _unpack_egl_context_sharable_option(gctx->real_ctx_sharable_option, &real_share_context);
-
- AST(dpy == gctx->rdpy);
-
- new_real_ctx = _sym_glXCreateContext(dpy, config, real_share_context);
- if (new_real_ctx == NULL)
- {
- ERR("Failed creating a egl context.\n");
- goto finish;
- }
- }
-
- cstate_new = (GLContextState *)calloc(1, sizeof(GLContextState));
- if (cstate_new == NULL)
- {
- ERR("Error creating a new context state.\n");
- goto finish;
- }
-
- cstate_new->rctx = new_real_ctx;
- cstate_new->rdpy = gctx->rdpy;
- cstate_new->data = gctx;
-
- // TODO : Setup context state for new real ctx
-
- AST(add_context_state_to_list(gctx->real_ctx_option, gctx->real_ctx_option_len, cstate_new) == 1);
-
- _unlink_context_state(gctx->cstate, gctx);
- gctx->cstate = cstate_new;
- _link_context_state(gctx->cstate, gctx);
-
- // Apply to new thread
- gctx->thread_id = get_current_thread();
-
- }
-
- // Check if the object is correct
- if (gctx->magic != MAGIC_GLFAST)
- {
- ERR("Magic Check Failed!!!\n");
- ret = False;
- goto finish;
-
- }
-
- cstate = tstate->cstate;
-
- // If it's a first time or drawable changed, do a make current
- if (cstate == NULL)
- {
- cstate = get_context_state_from_list(gctx->real_ctx_option, gctx->real_ctx_option_len);
-
- if (cstate == NULL)
- {
- ERR("Error making context current because context not ready.\n");
- ret = False;
- goto finish;
- }
- need_mc = EGL_TRUE;
- }
-
- // If drawable changed, do a make current
- if ((tstate->rsurf_draw != draw) ||
- (tstate->rsurf_read != read))
- need_mc = True;
-
- // If binded real context changed, do a make current
- if (gctx->cstate == NULL ||
- gctx->cstate->rctx != cstate->rctx)
- need_mc = True;
-
- if (need_mc == True)
- {
- // BB : full makecurrent
- if (!_sym_glXMakeCurrent(dpy, draw, cstate->rctx))
- {
- ERR("Error making context current with the drawable.\n");
- ret = False;
- goto finish;
- }
-
- tstate->cstate = cstate;
-
- tstate->rsurf_draw = draw;
- tstate->rsurf_read = read;
-
- gctx->cstate = cstate;
- }
-
- // Initialize context states
- if (gctx->initialized == 0)
- {
- if (init_context_states(gctx) != 1)
- {
- ERR("Error intializing context\n");
- goto finish;
- }
- if (tstate->cstate->data == NULL)
- tstate->cstate->data = (void *)gctx;
- }
-
- AST(tstate->cstate->data != NULL);
-
- if (tstate->cstate->data != gctx)
- {
- // restore needed
- make_context_current((GLGlueContext *)tstate->cstate->data, gctx);
- tstate->cstate->data = (void *)gctx;
- }
-
- ret = True;
- goto finish;
-
-finish:
-
-#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
- {
- char ment[256];
- sprintf(ment, "eglMakeCurrent finished (GlueCTX=[%12p] Surf=[D:%12p R:%12p])", ctx, draw, read);
- _dump_context_info(ment, 0);
- }
-#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
-
- _COREGL_FAST_FUNC_END();
- return ret;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-GLGlueContext ectx = (GLGlueContext)ctx;
-
-_COREGL_FAST_FUNC_BEGIN();
-INIT_FAST_GLX_FUNC();
-
-// Check if the values are null
-if ((draw == None) || (ctx == NULL))
-{
- if (current_ctx)
- real_current_ctx = current_ctx;
-
- /*
- if (!_sym_glXMakeCurrent(dpy, None, NULL))
- {
- ERR("Error making context current with the drawable.\n");
- return False;
- }
- */
-
- current_ctx = NULL;
- current_surf = None;
-
- return 1;
-}
-
-// Check if the object is correct
-if (ectx->magic != MAGIC_GLFAST)
-{
- ERR("Magic Check Failed!!!\n");
- return 0;
-}
-
-
-// If it's the first time
-if (!global_ctx_initted)
-{
- if (!_sym_glXMakeCurrent(dpy, draw, global_ctx))
- {
- ERR("Error making context current with the drawable.\n");
- return False;
- }
-
- current_ctx = ectx;
- current_surf = draw;
-
- real_current_ctx = current_ctx;
-
- global_ctx_initted = 1;
-}
-
-
-if (!current_ctx) current_ctx = real_current_ctx;
-
-// If drawable changed, do a make current
-if (current_surf != draw)
-{
- if (!_sym_glXMakeCurrent(dpy, draw, global_ctx))
- {
- ERR("Error making context current with the drawable.\n");
- return False;
- }
- current_surf = draw;
-}
-
-// If it's first time...
-if (ectx->first_time == 1)
-{
- // FIXME!!!:
- // Actually, i need to query the drawable size...
- // Do some initializations that required make_current
- _sym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &ectx->num_tex_units);
- _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &ectx->num_vertex_attribs);
- _sym_glGetIntegerv(GL_VIEWPORT, ectx->gl_viewport);
- _sym_glGetIntegerv(GL_SCISSOR_BOX, ectx->gl_scissor_box);
- DBG("----Num Tex Units: %d, Num Vertex Attribs: %d \n", ectx->num_tex_units, ectx->num_vertex_attribs);
-
- ectx->first_time = 0;
-}
-
-// if context is same, return
-if ((current_ctx == ectx) && (current_surf == draw))
-{
- return True;
-}
-
-make_context_current(current_ctx, ectx);
-
-current_ctx = ectx;
-current_surf = draw;
-
-return True;
-goto finish;
-
-finish:
-_COREGL_FAST_FUNC_END();
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//----------------------------------------------------------------//
-// Fastpath GLX Functions //
-// The functions have prefix 'fpgl_' for (fastpath gl) //
-//----------------------------------------------------------------//
-GLXContext
-fpgl_glXCreateContext(Display* dpy, XVisualInfo* vis, GLXContext shareList, Bool direct)
-{
- GLGlueContext ctx;
-
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GLX_FUNC();
-
- // Create a global context if it hasn't been created
- if (!global_ctx)
- {
- global_dpy = dpy;
- // Create a global context if it hasn't been created yet
- global_ctx = _sym_glXCreateContext(dpy, vis, NULL, 1);
- if (!global_ctx)
- {
- ERR("Failed creating a glX global context for FastPath.\n");
- return 0;
- }
- ctx_ref_count++;
- }
-
- // Allocate a new context
- ctx = calloc(1, sizeof(struct _GLGlueContext));
- if (!ctx)
- {
- ERR("Error creating a new GLGlueContext.\n");
- return NULL;
- }
-
- if (!init_context_states(ctx))
- {
- ERR("Error intialing intial context\n");
- free(ctx);
- return NULL;
- }
-
- ctx_ref_count++;
-
- return (GLXContext)ctx;
-
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
-}
-
-
-void
-fpgl_glXDestroyContext(Display* dpy, GLXContext ctx)
-{
- GLGlueContext ectx = (GLGlueContext)ctx;
-
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GLX_FUNC();
-
- if (ctx != NULL)
- {
- if (ectx->magic != MAGIC_GLFAST)
- {
- ERR("Magic Check Failed!!!\n");
- return;
- }
-
- if (ectx == current_ctx)
- {
- DBG("Destroying current context... %d\n", ctx_ref_count);
- real_current_ctx = current_ctx;
- current_ctx = NULL;
- }
-
- if (ectx)
- free(ectx);
-
- if (!(--ctx_ref_count))
- {
- DBG("Destroying the global context...\n");
- _sym_glXDestroyContext(dpy, global_ctx);
- global_ctx = NULL;
- current_ctx = NULL;
- real_current_ctx = NULL;
- }
- }
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
-}
-
-
-
-GLXContext
-fpgl_glXGetCurrentContext(void)
-{
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GLX_FUNC();
-
- return (GLXContext)current_ctx;
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
-}
-
-
-GLXDrawable
-fpgl_glXGetCurrentDrawable(void)
-{
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GLX_FUNC();
-
- //return _sym_glXGetCurrentDrawable();
- return (GLXDrawable)current_surf;
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
-}
-
-
-
-Bool
-fpgl_glXMakeCurrent(Display* dpy, GLXDrawable draw, GLXContext ctx)
-{
- GLGlueContext ectx = (GLGlueContext)ctx;
-
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GLX_FUNC();
-
- // Check if the values are null
- if ((draw == None) || (ctx == NULL))
- {
- if (current_ctx)
- real_current_ctx = current_ctx;
-
- /*
- if (!_sym_glXMakeCurrent(dpy, None, NULL))
- {
- ERR("Error making context current with the drawable.\n");
- return False;
- }
- */
-
- current_ctx = NULL;
- current_surf = None;
-
- return 1;
- }
-
- // Check if the object is correct
- if (ectx->magic != MAGIC_GLFAST)
- {
- ERR("Magic Check Failed!!!\n");
- return 0;
- }
-
-
- // If it's the first time
- if (!global_ctx_initted)
- {
- if (!_sym_glXMakeCurrent(dpy, draw, global_ctx))
- {
- ERR("Error making context current with the drawable.\n");
- return False;
- }
-
- current_ctx = ectx;
- current_surf = draw;
-
- real_current_ctx = current_ctx;
-
- global_ctx_initted = 1;
- }
-
-
- if (!current_ctx) current_ctx = real_current_ctx;
-
- // If drawable changed, do a make current
- if (current_surf != draw)
- {
- if (!_sym_glXMakeCurrent(dpy, draw, global_ctx))
- {
- ERR("Error making context current with the drawable.\n");
- return False;
- }
- current_surf = draw;
- }
-
- // If it's first time...
- if (ectx->first_time == 1)
- {
- // FIXME!!!:
- // Actually, i need to query the drawable size...
- // Do some initializations that required make_current
- _sym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &ectx->num_tex_units);
- _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &ectx->num_vertex_attribs);
- _sym_glGetIntegerv(GL_VIEWPORT, ectx->gl_viewport);
- _sym_glGetIntegerv(GL_SCISSOR_BOX, ectx->gl_scissor_box);
- DBG("----Num Tex Units: %d, Num Vertex Attribs: %d \n", ectx->num_tex_units, ectx->num_vertex_attribs);
-
- ectx->first_time = 0;
- }
-
- // if context is same, return
- if ((current_ctx == ectx) && (current_surf == draw))
- {
- return True;
- }
-
- make_context_current(current_ctx, ectx);
-
- current_ctx = ectx;
- current_surf = draw;
-
- return True;
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
-}
-
-
-Bool
-fpgl_glXMakeContextCurrent(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
-{
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GLX_FUNC();
-
- ERR("NOT IMPLEMENTED YET!!! GLX Function Wrapped. Not fastpathed yet...\n");
- return _sym_glXMakeContextCurrent(dpy, draw, read, ctx);
- goto finish;
-
-finish:
- _COREGL_FAST_FUNC_END();
-}
-
-#endif
-
#include "coregl.h"
+#include "modules/coregl_module.h"
+
#define unlikely(x) __builtin_expect(x, 0)
// Symbol definition for real
# define LOG(...) \
fprintf(stderr, __VA_ARGS__)
+
# define TRACE(...) \
fprintf(trace_fp, __VA_ARGS__)
-
# define TRACE_END() \
fflush(trace_fp)
+#define _COREGL_TRACE_OUTPUT_INTERVAL_SEC 5
+
#ifdef COREGL_DEBUG
# define AST(expr) \
typedef GLvoid * GLvoidptr;
typedef GLuint GLuintmask;
-#define COREGL_TRACE_ALL
-
-#ifdef COREGL_TRACE_ALL
-#define COREGL_TRACE_CONTEXT_INFO // Context state & thread state & Glue-context info
-#define COREGL_TRACE_STATE_INFO // Glue-context state info
-#define COREGL_TRACE_APICALL_INFO // API call frequency info
-#endif
-
-#define _COREGL_TRACE_OUTPUT_INTERVAL_SEC 5
-
#define _COREGL_INT_INIT_VALUE -3
#ifdef COREGL_ERRORS
typedef struct _Trace_Data Trace_Data;
-#ifdef COREGL_TRACE_APICALL_INFO
-# define _COREGL_TRACE_API_BEGIN(api, hint, trace_total_time) \
- trace_begin(api, hint, trace_total_time);
-# define _COREGL_TRACE_API_END(api, hint, trace_total_time) \
- trace_end(api, hint, trace_total_time);
-# define _COREGL_TRACE_API_OUTPUT(force_output) \
- trace_output(force_output);
-#else
-# define _COREGL_TRACE_API_BEGIN(api, hint, trace_total_time) NULL;
-# define _COREGL_TRACE_API_END(api, hint, trace_total_time)
-# define _COREGL_TRACE_API_OUTPUT(force_output)
-#endif
-
-
-#define _COREGL_FAST_FUNC_BEGIN()
-
-#define _COREGL_FAST_FUNC_END()
-
-#define _COREGL_FAST_FUNC_SYMCALL_BEGIN()
-
-#define _COREGL_FAST_FUNC_SYMCALL_END()
-
-#define _COREGL_WRAP_FUNC_BEGIN() \
- if (unlikely(trace_api_flag == 1)) \
- _COREGL_TRACE_API_BEGIN(__func__, NULL, 1);
+#define COREGL_OVERRIDE_API(mangle, func, prefix) \
+ mangle##func = prefix##func
-#define _COREGL_WRAP_FUNC_END() \
- if (unlikely(trace_api_flag == 1)) \
- _COREGL_TRACE_API_END(__func__, NULL, 1);
-
-typedef enum _CoreGL_Opt_Flag
-{
- COREGL_UNKNOWN_PATH,
- COREGL_NORMAL_PATH,
- COREGL_FAST_PATH
-} CoreGL_Opt_Flag;
-
-extern CoreGL_Opt_Flag api_opt;
-
-#ifndef _COREGL_DESKTOP_GL
typedef EGLSurface GLSurface;
typedef EGLDisplay GLDisplay;
typedef EGLContext GLContext;
-#else
-typedef GLXDrawable GLSurface;
-typedef Display GLDisplay;
-typedef GLXContext GLContext;
-#endif
-
-typedef struct _GLContextState
-{
- int ref_count;
- GLContext *rctx;
- GLDisplay *rdpy;
- void *data;
-} GLContextState;
typedef struct _GLThreadState
{
int thread_id;
- EGLenum binded_api;
- GLContextState *cstate;
- GLSurface *rsurf_draw;
- GLSurface *rsurf_read;
- Trace_Data **ftd_table;
+ void *module_data[COREGL_MAX_MODULES];
} GLThreadState;
-typedef struct _GLContext_List
-{
- void *option;
- int option_len;
- int thread_id;
- GLContextState *cstate;
- struct _GLContext_List *next;
-} GLContext_List;
-
extern void *glue_lib_handle;
extern void *egl_lib_handle;
-extern GLContext_List *glctx_list;
-
#include "coregl_thread_pthread.h"
-extern Mutex ctx_list_access_mutex;
typedef struct _General_Trace_List
{
extern General_Trace_List *thread_trace_list;
extern Mutex general_trace_lists_access_mutex;
+extern FILE *trace_fp;
+
extern int trace_api_flag;
+extern int trace_api_all_flag;
extern int trace_ctx_flag;
extern int trace_ctx_force_flag;
extern int trace_state_flag;
-extern int debug_nofp;
-extern FILE *trace_fp;
-#define NEED_WRAPPING (trace_api_flag == 1 || trace_ctx_flag == 1 || trace_state_flag == 1)
+#define USE_TRACEPATH (trace_api_flag == 1 || trace_ctx_flag == 1 || trace_state_flag == 1)
// Environment functions
extern const char *get_env_setting(const char *name);
extern int mutex_lock(Mutex *mt);
extern int mutex_unlock(Mutex *mt);
extern int get_current_thread();
-extern int set_current_thread_state(Mutex *mt, GLThreadState *tstate);
+extern int set_current_thread_state(GLThreadState *tstate);
extern GLThreadState *get_current_thread_state();
-// Context state functions
-extern int add_context_state_to_list(const void *data, const int datalen, GLContextState *cstate, Mutex *mtx);
-extern int remove_context_states_from_list(GLContextState *cstate, Mutex *mtx);
-extern GLContextState *get_context_state_from_list(const void *data, const int datalen, Mutex *mtx);
-
-
// Override functions
-extern void override_glue_normal_path();
-extern void override_glue_fast_path();
-extern void override_gl_normal_path();
-extern void override_gl_fast_path();
-extern void override_glue_apis(CoreGL_Opt_Flag opt);
-extern void override_gl_apis(CoreGL_Opt_Flag opt);
+extern void init_export();
+extern void deinit_export();
+
+// Module interfaces
+extern void init_modules();
+extern void deinit_modules();
+extern void init_modules_tstate(GLThreadState *tstate);
+extern void deinit_modules_tstate(GLThreadState *tstate);
// Debug & Trace functions
extern int add_to_general_trace_list(General_Trace_List **gtl, void *value);
extern int remove_from_general_trace_list(General_Trace_List **gtl, void *value);
-extern void *trace_begin(const char *name, void *hint, int trace_total_time);
-extern void *trace_end(const char *name, void *hint, int trace_total_time);
-extern void trace_output(int force_output);
#endif // COREGL_INTERNAL_H
#include "coregl_internal.h"
#include "coregl_export.h"
-#include "coregl_wrappath.h"
-#include "coregl_fastpath.h"
#include <stdlib.h>
mangle##func = prefix##func
void
-override_glue_normal_path()
+init_overrides()
{
#define C_ORD(f) COREGL_OVERRIDE_API(ovr_, f, _sym_)
-#define N_ORD(f) COREGL_OVERRIDE_API(ovr_, f, wpgl_); COREGL_OVERRIDE_API(wrp_, f, _sym_)
- if (NEED_WRAPPING)
- {
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) N_ORD(FUNC_NAME);
-# ifndef _COREGL_DESKTOP_GL
-# include "headers/sym_egl.h"
-# else
-# include "headers/sym_glx.h"
-# endif
-#undef _COREGL_SYMBOL
- }
- else
- {
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) C_ORD(FUNC_NAME);
-# ifndef _COREGL_DESKTOP_GL
-# include "headers/sym_egl.h"
-# else
-# include "headers/sym_glx.h"
-# endif
+# include "headers/sym_egl.h"
#undef _COREGL_SYMBOL
- }
-
-#undef N_ORD
-#undef C_ORD
-}
-
-void
-override_glue_fast_path()
-{
- // Inherit from normal path
- override_glue_normal_path();
-
-#define F_ORD(f) \
- if (NEED_WRAPPING) \
- COREGL_OVERRIDE_API(wrp_, f, fpgl_); \
- else \
- COREGL_OVERRIDE_API(ovr_, f, fpgl_);
-
-
-#ifndef _COREGL_DESKTOP_GL
- // Fast-Path Core Functions
- F_ORD(eglGetProcAddress);
-
- F_ORD(eglBindAPI);
- F_ORD(eglQueryAPI);
-
- F_ORD(eglCreateContext);
- F_ORD(eglCreateImageKHR);
- F_ORD(eglMakeCurrent);
- F_ORD(eglDestroyContext);
- F_ORD(eglQueryContext);
- F_ORD(eglGetCurrentContext);
- F_ORD(eglReleaseThread);
- F_ORD(eglGetCurrentSurface);
- F_ORD(eglTerminate);
-#else
- // Fastpath-ed Functions
- F_ORD(glXCreateContext);
- F_ORD(glXDestroyContext);
- F_ORD(glXMakeCurrent);
- F_ORD(glXGetCurrentContext);
- F_ORD(glXGetCurrentDrawable);
-
- F_ORD(glXMakeContextCurrent);
-#endif
-
-#undef F_ORD
-}
-
-void
-override_gl_normal_path()
-{
-#define C_ORD(f) COREGL_OVERRIDE_API(ovr_, f, _sym_)
-#define N_ORD(f) COREGL_OVERRIDE_API(ovr_, f, wpgl_); COREGL_OVERRIDE_API(wrp_, f, _sym_)
-
- if (NEED_WRAPPING)
- {
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) N_ORD(FUNC_NAME);
-# include "headers/sym_gl.h"
-#undef _COREGL_SYMBOL
- }
- else
- {
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) C_ORD(FUNC_NAME);
# include "headers/sym_gl.h"
#undef _COREGL_SYMBOL
- }
-#undef N_ORD
#undef C_ORD
}
-void
-override_gl_fast_path()
-{
- // Inherit from normal path
- override_gl_normal_path();
-
-#define F_ORD(f) \
- if (NEED_WRAPPING) \
- COREGL_OVERRIDE_API(wrp_, f, fpgl_); \
- else \
- COREGL_OVERRIDE_API(ovr_, f, fpgl_);
-
- // Fast-Path Functions
- if (debug_nofp != 1)
- {
- F_ORD(glGetError);
-
- F_ORD(glGetIntegerv);
- F_ORD(glGetFloatv);
- F_ORD(glGetBooleanv);
-
- F_ORD(glActiveTexture);
- F_ORD(glGenTextures);
- F_ORD(glBindTexture);
- F_ORD(glIsTexture);
- F_ORD(glDeleteTextures);
- F_ORD(glFramebufferTexture2D);
- F_ORD(glFramebufferTexture2DMultisampleEXT);
-
- F_ORD(glGenBuffers);
- F_ORD(glBindBuffer);
- F_ORD(glIsBuffer);
- F_ORD(glDeleteBuffers);
-
- F_ORD(glGenFramebuffers);
- F_ORD(glBindFramebuffer);
- F_ORD(glIsFramebuffer);
- F_ORD(glDeleteFramebuffers);
-
- F_ORD(glGenRenderbuffers);
- F_ORD(glBindRenderbuffer);
- F_ORD(glFramebufferRenderbuffer);
- F_ORD(glIsRenderbuffer);
- F_ORD(glDeleteRenderbuffers);
-
- F_ORD(glCreateShader);
- F_ORD(glCreateProgram);
- F_ORD(glAttachShader);
- F_ORD(glCompileShader);
- F_ORD(glShaderBinary);
- F_ORD(glDeleteShader);
- F_ORD(glDetachShader);
- F_ORD(glGetShaderiv);
- F_ORD(glGetShaderInfoLog);
- F_ORD(glGetShaderSource);
- F_ORD(glIsShader);
- F_ORD(glShaderSource);
- F_ORD(glBindAttribLocation);
- F_ORD(glDeleteProgram);
- F_ORD(glDetachShader);
- F_ORD(glGetActiveAttrib);
- F_ORD(glGetActiveUniform);
- F_ORD(glGetAttachedShaders);
- F_ORD(glGetAttribLocation);
- F_ORD(glGetProgramiv);
- F_ORD(glGetProgramInfoLog);
- F_ORD(glGetUniformfv);
- F_ORD(glGetUniformiv);
- F_ORD(glGetUniformLocation);
- F_ORD(glIsProgram);
- F_ORD(glLinkProgram);
- F_ORD(glUseProgram);
- F_ORD(glValidateProgram);
- F_ORD(glGetProgramBinary);
- F_ORD(glProgramBinary);
-
- F_ORD(glBlendColor);
- F_ORD(glBlendEquation);
- F_ORD(glBlendEquationSeparate);
- F_ORD(glBlendFunc);
- F_ORD(glBlendFuncSeparate);
- F_ORD(glClearColor);
- F_ORD(glClearDepthf);
- F_ORD(glClearStencil);
- F_ORD(glColorMask);
- F_ORD(glCullFace);
- F_ORD(glDepthFunc);
- F_ORD(glDepthMask);
- F_ORD(glDepthRangef);
- F_ORD(glDisable);
- F_ORD(glDisableVertexAttribArray);
- F_ORD(glDrawArrays);
- F_ORD(glDrawElements);
- F_ORD(glEnable);
- F_ORD(glEnableVertexAttribArray);
- F_ORD(glFrontFace);
- F_ORD(glGetVertexAttribfv);
- F_ORD(glGetVertexAttribiv);
- F_ORD(glGetVertexAttribPointerv);
- F_ORD(glHint);
- F_ORD(glLineWidth);
- F_ORD(glPixelStorei);
- F_ORD(glPolygonOffset);
- F_ORD(glSampleCoverage);
- F_ORD(glScissor);
- F_ORD(glStencilFunc);
- F_ORD(glStencilFuncSeparate);
- F_ORD(glStencilMask);
- F_ORD(glStencilMaskSeparate);
- F_ORD(glStencilOp);
- F_ORD(glStencilOpSeparate);
- F_ORD(glVertexAttrib1f);
- F_ORD(glVertexAttrib1fv);
- F_ORD(glVertexAttrib2f);
- F_ORD(glVertexAttrib2fv);
- F_ORD(glVertexAttrib3f);
- F_ORD(glVertexAttrib3fv);
- F_ORD(glVertexAttrib4f);
- F_ORD(glVertexAttrib4fv);
- F_ORD(glVertexAttribPointer);
- F_ORD(glViewport);
-
- F_ORD(glEGLImageTargetTexture2DOES);
-
- }
- else
- {
- LOG("\E[0;35;1m[CoreGL] SKIP GL FASTPATH...\E[0m\n");
- }
-
-#undef F_ORD
-}
-
-
-void
-override_glue_apis(CoreGL_Opt_Flag opt)
-{
- switch (opt)
- {
- case COREGL_NORMAL_PATH:
- override_glue_normal_path();
- break;
- case COREGL_FAST_PATH:
- override_glue_fast_path();
- break;
- default:
- ERR("Invalide GL Override Option!!!\n");
- }
-}
-
-void
-override_gl_apis(CoreGL_Opt_Flag opt)
-{
- switch (opt)
- {
- case COREGL_NORMAL_PATH:
- override_gl_normal_path();
- break;
- case COREGL_FAST_PATH:
- override_gl_fast_path();
- break;
- default:
- ERR("Invalide GL Override Option!!!\n");
- }
-}
-
int mutex_lock(Mutex *mt);
int mutex_unlock(Mutex *mt);
int get_current_thread();
-int set_current_thread_state(Mutex *mt, GLThreadState *tstate);
+int set_current_thread_state(GLThreadState *tstate);
GLThreadState * get_current_thread_state();
//////////////////////////////////////////////////////////////////////////
+static Mutex thread_key_mutex = MUTEX_INITIALIZER;
static int thread_key_inited = 0;
static pthread_key_t thread_key = 0;
}
int
-set_current_thread_state(Mutex *mt, GLThreadState *tstate)
+set_current_thread_state(GLThreadState *tstate)
{
int ret = 0;
- AST(mutex_lock(mt) == 1);
+ AST(mutex_lock(&thread_key_mutex) == 1);
if (thread_key_inited == 0)
{
goto finish;
finish:
- AST(mutex_unlock(mt) == 1);
+ AST(mutex_unlock(&thread_key_mutex) == 1);
return ret;
}
#include <string.h>
#include <sys/time.h>
-#define MAX_TRACE_NAME_LENGTH 256
-#define MAX_TRACE_TABLE_SIZE 65536
-
-#define TIMEVAL_INIT { 0, 0 }
-
-struct _Trace_Data
-{
- char name[MAX_TRACE_NAME_LENGTH];
- int call_count;
- int last_call_count;
- struct timeval elapsed_time;
- struct timeval last_elapsed_time;
- struct timeval total_elapsed_time;
- struct timeval last_total_elapsed_time;
- struct timeval last_time;
-
- int traced;
-
- struct _Trace_Data *next;
-};
+int trace_api_flag = 0;
+int trace_api_all_flag = 0;
+int trace_ctx_flag = 0;
+int trace_ctx_force_flag = 0;
+int trace_state_flag = 0;
General_Trace_List *thread_trace_list = NULL;
Mutex general_trace_lists_access_mutex = MUTEX_INITIALIZER;
-struct timeval initial_time = TIMEVAL_INIT;
-struct timeval last_initial_time = TIMEVAL_INIT;
-
-struct timeval last_trace_time = TIMEVAL_INIT;
-struct timeval other_elapsed_time = TIMEVAL_INIT;
-struct timeval traced_other_elapsed_time = TIMEVAL_INIT;
-
-
-static inline void
-_add_timeval_period(struct timeval *tv_dst, struct timeval tv_now, struct timeval tv_old)
-{
- tv_dst->tv_sec += tv_now.tv_sec - tv_old.tv_sec;
- tv_dst->tv_usec += 1000000 + (tv_now.tv_usec - tv_old.tv_usec);
- tv_dst->tv_sec += (tv_dst->tv_usec / 1000000) - 1;
- tv_dst->tv_usec = tv_dst->tv_usec % 1000000;
-}
-
-static inline void
-_add_timeval(struct timeval *tv_dst, struct timeval tv_src)
-{
- tv_dst->tv_sec += tv_src.tv_sec;
- tv_dst->tv_usec += tv_src.tv_usec;
- if (tv_dst->tv_usec > 1000000)
- {
- tv_dst->tv_usec -= 1000000;
- tv_dst->tv_sec++;
- }
- else if (tv_dst->tv_usec < 0)
- {
- tv_dst->tv_usec += 1000000;
- tv_dst->tv_sec--;
- }
-}
-
-static inline double
-_get_timeval_period(struct timeval time_now, struct timeval time_old)
-{
- return ((time_now.tv_sec - time_old.tv_sec) * 1000) + ((time_now.tv_usec - time_old.tv_usec) / 1000.0);
-}
-
-static inline double
-_get_timeval(struct timeval time)
-{
- return (time.tv_sec * 1000) + (time.tv_usec / 1000.0);
-}
-
-static unsigned short
-_generate_hash_short(const char *string)
-{
- unsigned short hash = 0;
- int i;
-
- for (i = 0; i < strlen(string); i++)
- {
- hash = 253 * hash + string[i];
- }
- return (hash ^ (hash >> 8)) % MAX_TRACE_TABLE_SIZE;
-}
-
-static Trace_Data *
-_get_trace_data(Trace_Data **ftd_table, const char *name)
-{
- Trace_Data *ret = NULL;
- Trace_Data *current = NULL;
- Trace_Data *prev = NULL;
- unsigned short hash = 0;
-
- AST(strlen(name) < MAX_TRACE_NAME_LENGTH);
-
- hash = _generate_hash_short(name);
-
- current = ftd_table[hash];
-
- while (current != NULL && current->next != NULL)
- {
- if (strcmp(current->name, name) == 0)
- break;
- prev = current;
- current = current->next;
- }
-
- if (current != NULL)
- {
- ret = current;
- }
- else
- {
- Trace_Data *newitm = NULL;
- newitm = (Trace_Data *)calloc(1, sizeof(Trace_Data));
- strcpy(newitm->name, name);
- newitm->next = NULL;
-
- if (prev != NULL)
- {
- prev->next = newitm;
- }
- else
- {
- ftd_table[hash] = newitm;
- }
- ret = newitm;
- }
-
- goto finish;
-
-finish:
- return ret;
-}
int
add_to_general_trace_list(General_Trace_List **gtl, void *value)
return ret;
}
-void *
-trace_begin(const char *funcname, void *hint, int trace_total_time)
-{
- Trace_Data *ftd = NULL;
- struct timeval t = TIMEVAL_INIT;
-
- if (trace_api_flag == 1)
- {
- AST(gettimeofday(&t, NULL) == 0);
-
- ftd = (Trace_Data *)hint;
-
- if (ftd == NULL)
- {
- GLThreadState *tstate = NULL;
- tstate = get_current_thread_state();
-
- if (tstate == NULL)
- {
- init_new_thread_state();
-
- tstate = get_current_thread_state();
- AST(tstate != NULL);
- }
-
- if (tstate->ftd_table == NULL)
- {
- tstate->ftd_table = (Trace_Data **)calloc(1, sizeof(Trace_Data *) * MAX_TRACE_TABLE_SIZE);
- }
-
- ftd = _get_trace_data(tstate->ftd_table, funcname);
- }
-
- AST(ftd != NULL);
-
- ftd->call_count++;
- AST(ftd->last_time.tv_sec == 0);
-
- AST(gettimeofday(&ftd->last_time, NULL) == 0);
-
- if (initial_time.tv_sec == 0)
- {
- initial_time = ftd->last_time;
- last_initial_time = ftd->last_time;
- }
-
- if (trace_total_time == 1)
- {
- if (last_trace_time.tv_sec != 0)
- {
- _add_timeval_period(&other_elapsed_time, t, last_trace_time);
- last_trace_time.tv_sec = 0;
- }
- }
-
- }
-
- return ftd;
-}
-
-void *
-trace_end(const char *funcname, void *hint, int trace_total_time)
-{
- Trace_Data *ftd = NULL;
- struct timeval t = TIMEVAL_INIT;
-
- if (trace_api_flag == 1)
- {
- GLThreadState *tstate = NULL;
- struct timeval elapsed_time = TIMEVAL_INIT;
-
- AST(gettimeofday(&t, NULL) == 0);
-
- ftd = (Trace_Data *)hint;
-
- if (ftd == NULL)
- {
- tstate = get_current_thread_state();
-
- if (tstate == NULL)
- {
- init_new_thread_state();
-
- tstate = get_current_thread_state();
- AST(tstate != NULL);
- }
- AST(tstate->ftd_table != NULL);
-
- ftd = _get_trace_data(tstate->ftd_table, funcname);
- }
-
- AST(ftd != NULL);
-
- _add_timeval_period(&elapsed_time, t, ftd->last_time);
-
- _add_timeval(&ftd->elapsed_time, elapsed_time);
-
-
- ftd->last_time.tv_sec = 0;
-
- if (trace_total_time == 1)
- {
- _add_timeval(&ftd->total_elapsed_time, elapsed_time);
-
- AST(gettimeofday(&last_trace_time, NULL) == 0);
-
- if (initial_time.tv_sec == 0)
- {
- initial_time = t;
- last_initial_time = t;
- }
- }
-
- }
-
-
- return ftd;
-}
-
-void
-trace_output(int force_output)
-{
- static struct timeval tv_last = TIMEVAL_INIT;
- struct timeval total_now = TIMEVAL_INIT;
- GLThreadState *tstate = NULL;
- Trace_Data **ftd_table = NULL;
-
- double total_elapsed_time = 0.0;
- double total_elapsed_time_period = 0.0;
- double total_opengl_elapsed_time = 0.0;
- double total_opengl_elapsed_time_period = 0.0;
- double total_other_elapsed_time = 0.0;
- double total_other_elapsed_time_period = 0.0;
-
- double swaps_per_sec = 0.0;
-
- int i;
-
- if (trace_api_flag != 1)
- {
- goto finish;
- }
-
- if (!force_output)
- {
- struct timeval tv_now = TIMEVAL_INIT;
- AST(gettimeofday(&tv_now, NULL) == 0);
- if (tv_now.tv_sec - tv_last.tv_sec < _COREGL_TRACE_OUTPUT_INTERVAL_SEC)
- {
- goto finish;
- }
- tv_last = tv_now;
- }
-
- AST(gettimeofday(&total_now, NULL) == 0);
-
- total_elapsed_time = _get_timeval_period(total_now, initial_time);
- total_elapsed_time_period = _get_timeval_period(total_now, last_initial_time);
- last_initial_time = total_now;
-
- total_other_elapsed_time = _get_timeval(other_elapsed_time);
- total_other_elapsed_time_period = _get_timeval_period(other_elapsed_time, traced_other_elapsed_time);
- traced_other_elapsed_time = other_elapsed_time;
-
- tstate = get_current_thread_state();
-
- if (tstate == NULL)
- {
- init_new_thread_state();
-
- tstate = get_current_thread_state();
- AST(tstate != NULL);
- }
-
-
- ftd_table = tstate->ftd_table;
- if (ftd_table == NULL) return;
-
- {
- static Trace_Data *trace_hint_swap = NULL;
- if (trace_hint_swap == NULL)
- trace_hint_swap = _get_trace_data(ftd_table, "eglSwapBuffers");
-
- if (trace_hint_swap != NULL && total_elapsed_time_period > 0)
- {
- swaps_per_sec = (trace_hint_swap->call_count - trace_hint_swap->last_call_count) / (total_elapsed_time_period / 1000);
- }
- }
-
-
- TRACE("\n");
- TRACE("\E[40;34m========================================================================================================================\E[0m\n");
- TRACE("\E[40;32;1m API call info \E[1;37;1m: Thread ID = %d [Swaps per Second(P) = %7.2f]\E[0m\n", tstate->thread_id, swaps_per_sec);
- TRACE("\E[40;34m========================================================================================================================\E[0m\n");
-
- // highlighted
- for (i = 0; i < MAX_TRACE_TABLE_SIZE; i++)
- {
- if (ftd_table[i] != NULL)
- {
- Trace_Data *current = ftd_table[i];
-
- while (current != NULL)
- {
- double elapsed_time = _get_timeval(current->elapsed_time);
- double elapsed_time_per_call = elapsed_time / current->call_count;
-
- total_opengl_elapsed_time += _get_timeval(current->total_elapsed_time);
- total_opengl_elapsed_time_period += _get_timeval(current->total_elapsed_time) - _get_timeval(current->last_total_elapsed_time);
-
- current->traced = 0;
-
- if (current->call_count > current->last_call_count)
- {
- double elapsed_time_period = _get_timeval_period(current->elapsed_time, current->last_elapsed_time);
- double elapsed_time_per_call_period = elapsed_time_period / (current->call_count - current->last_call_count);
- char *fname = current->name;
-
- if (!strncmp(fname, "wpgl_", 5))
- fname = ¤t->name[5];
-
- if (elapsed_time_per_call_period >= 0.01 || current->call_count - current->last_call_count > 1000)
- {
- TRACE("\E[40;37;1m %-42.42s : %10d call(s), %10.2f ms, %9.3f ms/API, %9.3f ms/API(P) \E[0m\n",
- fname, current->call_count, elapsed_time, elapsed_time_per_call, elapsed_time_per_call_period);
- current->traced = 1;
- }
- }
- current = current->next;
- }
- }
- }
-
- {
- int fp_env = 0;
- fp_env = atoi(get_env_setting("COREGL_TRACE_API_ALL"));
- if (fp_env == 1)
- {
- // other
- for (i = 0; i < MAX_TRACE_TABLE_SIZE; i++)
- {
- if (ftd_table[i] != NULL)
- {
- Trace_Data *current = ftd_table[i];
-
- while (current != NULL)
- {
- if (current->traced == 0)
- {
- double elapsed_time = _get_timeval(current->elapsed_time);
- double elapsed_time_per_call = elapsed_time / current->call_count;
- char *fname = current->name;
-
- if (!strncmp(fname, "wpgl_", 5))
- fname = ¤t->name[5];
-
- TRACE(" %-42.42s : %10d call(s), %10.2f ms, %9.3f ms/API\n",
- fname, current->call_count, elapsed_time, elapsed_time_per_call);
- }
- current = current->next;
- }
- }
- }
- }
- }
-
- TRACE("\E[40;34m========================================================================================================================\E[0m\n");
-
- TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
- "TOTAL elapsed Time",
- total_elapsed_time,
- 100.0,
- total_elapsed_time_period,
- 100.0);
-
-
- TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
- "OpenGL elapsed Time",
- total_opengl_elapsed_time,
- total_opengl_elapsed_time * 100.0 / total_elapsed_time,
- total_opengl_elapsed_time_period,
- total_opengl_elapsed_time_period * 100.0 / total_elapsed_time_period);
-
- TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
- "Out of OpenGL elapsed time",
- total_other_elapsed_time,
- total_other_elapsed_time * 100.0 / total_elapsed_time,
- total_other_elapsed_time_period,
- total_other_elapsed_time_period * 100.0 / total_elapsed_time_period);
-
- TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
- "CoreGL API tracing overhead",
- total_elapsed_time - total_opengl_elapsed_time - total_other_elapsed_time,
- (total_elapsed_time - total_opengl_elapsed_time - total_other_elapsed_time) * 100.0 / total_elapsed_time,
- total_elapsed_time_period - total_opengl_elapsed_time_period - total_other_elapsed_time_period,
- (total_elapsed_time_period - total_opengl_elapsed_time_period - total_other_elapsed_time_period) * 100.0 / total_elapsed_time_period);
-
- TRACE("\E[40;34m========================================================================================================================\E[0m\n");
- TRACE("\n");
-
- for (i = 0; i < MAX_TRACE_TABLE_SIZE; i++)
- {
- if (ftd_table[i] != NULL)
- {
- Trace_Data *current = ftd_table[i];
-
- while (current != NULL)
- {
- current->last_call_count = current->call_count;
- current->last_elapsed_time = current->elapsed_time;
- current->last_total_elapsed_time = current->total_elapsed_time;
- current = current->next;
- }
- }
- }
-
- TRACE_END();
-
- goto finish;
-
-finish:
- return;
-}
-
+++ /dev/null
-#include "coregl_wrappath.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-
-typedef struct _GLGlueFakeContext
-{
- GLuint gl_num_tex_units[1];
- GLuint gl_num_vertex_attribs[1];
-} GLGlueFakeContext;
-
-GLGlueFakeContext initial_fake_ctx_real;
-GLGlueFakeContext *initial_fake_ctx = &initial_fake_ctx_real;
-
-
-static void
-_get_texture_states(GLenum pname, GLint *params)
-{
- GLuint cur_active_tex = 0;
-
- AST(initial_fake_ctx != NULL);
-
- _sym_glGetIntegerv(GL_ACTIVE_TEXTURE, (GLint *)&cur_active_tex);
- int i;
- for (i = 0; i < initial_fake_ctx->gl_num_tex_units[0]; i++)
- {
- _sym_glActiveTexture(GL_TEXTURE0 + i);
- _sym_glGetIntegerv(pname, &(((GLint *)params)[i]));
- }
- _sym_glActiveTexture(cur_active_tex);
-}
-
-void
-init_wrap_gl()
-{
-}
-
-void
-free_wrap_gl()
-{
-}
-
-void
-dump_wrap_context_states(int force_output)
-{
- static struct timeval tv_last = { 0, 0 };
-
- if (unlikely(trace_state_flag != 1)) return;
-
- _sym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, (GLint *)initial_fake_ctx->gl_num_tex_units);
- _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, (GLint *)initial_fake_ctx->gl_num_vertex_attribs);
-
- if (!force_output)
- {
- struct timeval tv_now = { 0, 0 };
- AST(gettimeofday(&tv_now, NULL) == 0);
- if (tv_now.tv_sec - tv_last.tv_sec < _COREGL_TRACE_OUTPUT_INTERVAL_SEC)
- {
- goto finish;
- }
- tv_last = tv_now;
- }
-
- TRACE("\n");
- TRACE("\E[0;40;34m===================================================================================================================\E[0m\n");
- TRACE("\E[0;32;1m State info \E[1;37;1m: (CURRENT BINDED CONTEXT)\E[0m\n");
- TRACE("\E[0;40;34m===================================================================================================================\E[0m\n");
-
-#define PRINTF_CHAR_GLenum "%10d"
-#define PRINTF_CHAR_GLboolean "%10d"
-#define PRINTF_CHAR_GLint "%10d"
-#define PRINTF_CHAR_GLsizei "%10u"
-#define PRINTF_CHAR_GLuint "%10u"
-#define PRINTF_CHAR_GLuintmask "0x%8X"
-
-#define PRINTF_CHAR_GLclampf "%10.6f"
-#define PRINTF_CHAR_GLfloat "%10.6f"
-
-#define PRINTF_CHAR_GLvoidptr "%10p"
-
-#define PRINTF_CHAR(type) PRINTF_CHAR_##type
-
-#define INITIAL_CTX initial_fake_ctx
-
-#define GLUE_STATE(TYPE, NAME, SIZE, ARRAY_SIZE, DEFAULT_STMT, GET_STMT) \
- { \
- TYPE valuedata[SIZE]; \
- TYPE *value = NULL; \
- value = valuedata; GET_STMT; value = valuedata; \
- TRACE("\E[0;37;1m %-30.30s : (\E[0m ", #NAME); \
- for (int i = 0; i < SIZE; i++) \
- { \
- if (i > 0) { \
- if (i % 4 == 0) \
- TRACE("\n %-30.30s ", "");\
- else \
- TRACE(", "); \
- } \
- TRACE("["PRINTF_CHAR(TYPE)"]", value[i]); \
- } \
- TRACE(" \E[0;37;1m)\E[0m\n"); \
- }
-# include "coregl_fastpath_state.h"
-#undef GLUE_STATE
-
- TRACE("\E[0;40;34m===================================================================================================================\E[0m\n");
- TRACE("\n");
-
- TRACE_END();
-
-finish:
- return;
-}
-
+++ /dev/null
-#ifndef COREGL_WRAPPATH_H\r
-#define COREGL_WRAPPATH_H\r
-\r
-#include "coregl_internal.h"\r
-#include "coregl_export.h"\r
-\r
-// Symbol definition for wrappath\r
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (wpgl_##FUNC_NAME) PARAM_LIST;\r
-# include "headers/sym.h"\r
-#undef _COREGL_SYMBOL\r
-\r
-extern void init_wrap_gl();\r
-extern void free_wrap_gl();\r
-\r
-extern void dump_wrap_context_states(int force_output);\r
-\r
-#endif // COREGL_WRAPPATH_H\r
-\r
+++ /dev/null
-#include "coregl_wrappath.h"
-
-EGLint
-wpgl_eglGetError(void)
-{
- EGLint ret = _COREGL_INT_INIT_VALUE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetError();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLDisplay
-wpgl_eglGetDisplay(EGLNativeDisplayType display_id)
-{
- EGLDisplay ret = EGL_NO_DISPLAY;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetDisplay(display_id);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor)
-{
- EGLBoolean ret = EGL_FALSE;
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglInitialize(dpy, major, minor);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglTerminate(EGLDisplay dpy)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglTerminate(dpy);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetConfigs(dpy, configs, config_size, num_config);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglChooseConfig(EGLDisplay dpy, const EGLint* attrib_list, EGLConfig* configs, EGLint config_size, EGLint* num_config)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglChooseConfig(dpy, attrib_list, configs, config_size, num_config);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetConfigAttrib(dpy, config, attribute, value);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-
-EGLSurface
-wpgl_eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint* attrib_list)
-{
- EGLSurface ret = EGL_NO_SURFACE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglCreateWindowSurface(dpy, config, win, attrib_list);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLSurface
-wpgl_eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
-{
- EGLSurface ret = EGL_NO_SURFACE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglCreatePbufferSurface(dpy, config, attrib_list);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLSurface
-wpgl_eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint* attrib_list)
-{
- EGLSurface ret = EGL_NO_SURFACE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglCreatePixmapSurface(dpy, config, pixmap, attrib_list);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglDestroySurface(dpy, surface);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglQuerySurface(dpy, surface, attribute, value);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglBindAPI(EGLenum api)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglBindAPI(api);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLenum
-wpgl_eglQueryAPI(void)
-{
- EGLenum ret = 0;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglQueryAPI();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglWaitClient(void)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglWaitClient();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglReleaseThread(void)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglReleaseThread();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLSurface
-wpgl_eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
-{
- EGLSurface ret = EGL_NO_SURFACE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglCreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglSurfaceAttrib(dpy, surface, attribute, value);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglBindTexImage(dpy, surface, buffer);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglReleaseTexImage(dpy, surface, buffer);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglSwapInterval(EGLDisplay dpy, EGLint interval)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglSwapInterval(dpy, interval);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLContext
-wpgl_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)
-{
- EGLContext ret = EGL_NO_CONTEXT;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglCreateContext(dpy, config, share_context, attrib_list);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglDestroyContext(dpy, ctx);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglMakeCurrent(dpy, draw, read, ctx);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-#ifdef COREGL_TRACE_STATE_INFO
- if (unlikely(trace_state_flag == 1))
- {
- if (wrp_eglMakeCurrent == _sym_eglMakeCurrent)
- dump_wrap_context_states(0);
- }
-#endif // COREGL_TRACE_STATE_INFO
- return ret;
-}
-
-EGLContext
-wpgl_eglGetCurrentContext(void)
-{
- EGLContext ret = EGL_NO_CONTEXT;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetCurrentContext();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLSurface
-wpgl_eglGetCurrentSurface(EGLint readdraw)
-{
- EGLSurface ret = EGL_NO_SURFACE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetCurrentSurface(readdraw);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLDisplay
-wpgl_eglGetCurrentDisplay(void)
-{
- EGLDisplay ret = EGL_NO_DISPLAY;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetCurrentDisplay();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglQueryContext(dpy, ctx, attribute, value);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglWaitGL(void)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglWaitGL();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglWaitNative(EGLint engine)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglWaitNative(engine);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglSwapBuffers(dpy, surface);
-
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- _COREGL_TRACE_API_OUTPUT(0);
- return ret;
-}
-
-EGLBoolean
-wpgl_eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglCopyBuffers(dpy, surface, target);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-_eng_fn
-wpgl_eglGetProcAddress(const char* procname)
-{
- _eng_fn ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetProcAddress(procname);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-const char *
-wpgl_eglQueryString(EGLDisplay dpy, EGLint name)
-{
- const char *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglQueryString(dpy, name);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLImageKHR
-wpgl_eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
-{
- void *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglCreateImageKHR(dpy, ctx, target, buffer, attrib_list);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglDestroyImageKHR(dpy, image);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void *
-wpgl_eglMapImageSEC(EGLDisplay dpy, EGLImageKHR image)
-{
- void *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglMapImageSEC(dpy, image);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglUnmapImageSEC(EGLDisplay dpy, EGLImageKHR image)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglUnmapImageSEC(dpy, image);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglGetImageAttribSEC(EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglGetImageAttribSEC(dpy, image, attribute, value);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglLockSurfaceKHR(display, surface, attrib_list);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-EGLBoolean
-wpgl_eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface)
-{
- EGLBoolean ret = EGL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_eglUnlockSurfaceKHR(display, surface);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
+++ /dev/null
-#include "coregl_wrappath.h"
-
-void
-wpgl_glActiveTexture(GLenum texture)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glActiveTexture(texture);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glAttachShader(GLuint program, GLuint shader)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glAttachShader(program, shader);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBindAttribLocation(GLuint program, GLuint index, const char* name)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBindAttribLocation(program, index, name);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBindBuffer(GLenum target, GLuint buffer)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBindBuffer(target, buffer);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBindFramebuffer(GLenum target, GLuint framebuffer)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBindFramebuffer(target, framebuffer);
-
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBindRenderbuffer(target, renderbuffer);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBindTexture(GLenum target, GLuint texture)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBindTexture(target, texture);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBlendColor(red, green, blue, alpha);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBlendEquation(GLenum mode)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBlendEquation(mode);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBlendEquationSeparate(modeRGB, modeAlpha);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBlendFunc(GLenum sfactor, GLenum dfactor)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBlendFunc(sfactor, dfactor);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBufferData(target, size, data, usage);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void* data)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glBufferSubData(target, offset, size, data);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-GLenum
-wpgl_glCheckFramebufferStatus(GLenum target)
-{
- GLenum ret = GL_NONE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glCheckFramebufferStatus(target);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-wpgl_glClear(GLbitfield mask)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glClear(mask);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glClearColor(red, green, blue, alpha);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glClearDepthf(GLclampf depth)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glClearDepthf(depth);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glClearStencil(GLint s)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glClearStencil(s);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glColorMask(red, green, blue, alpha);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glCompileShader(GLuint shader)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glCompileShader(shader);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-GLuint
-wpgl_glCreateProgram(void)
-{
- GLuint ret = _COREGL_INT_INIT_VALUE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glCreateProgram();
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLuint
-wpgl_glCreateShader(GLenum type)
-{
- GLuint ret = _COREGL_INT_INIT_VALUE;
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glCreateShader(type);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-wpgl_glCullFace(GLenum mode)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glCullFace(mode);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDeleteBuffers(GLsizei n, const GLuint* buffers)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDeleteBuffers(n, buffers);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDeleteFramebuffers(n, framebuffers);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDeleteProgram(GLuint program)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDeleteProgram(program);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDeleteRenderbuffers(n, renderbuffers);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDeleteShader(GLuint shader)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDeleteShader(shader);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDeleteTextures(GLsizei n, const GLuint* textures)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDeleteTextures(n, textures);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDepthFunc(GLenum func)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDepthFunc(func);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDepthMask(GLboolean flag)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDepthMask(flag);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDepthRangef(GLclampf zNear, GLclampf zFar)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDepthRangef(zNear, zFar);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDetachShader(GLuint program, GLuint shader)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDetachShader(program, shader);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDisable(GLenum cap)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDisable(cap);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDisableVertexAttribArray(GLuint index)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDisableVertexAttribArray(index);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDrawArrays(GLenum mode, GLint first, GLsizei count)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDrawArrays(mode, first, count);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDrawElements(mode, count, type, indices);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glEnable(GLenum cap)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glEnable(cap);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glEnableVertexAttribArray(GLuint index)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glEnableVertexAttribArray(index);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glFinish(void)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glFinish();
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- _COREGL_TRACE_API_OUTPUT(0);
-}
-
-void
-wpgl_glFlush(void)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glFlush();
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- _COREGL_TRACE_API_OUTPUT(0);
-}
-
-void
-wpgl_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glFramebufferTexture2D(target, attachment, textarget, texture, level);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glFrontFace(GLenum mode)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glFrontFace(mode);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetVertexAttribfv(index, pname, params);
-
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetVertexAttribiv(index, pname, params);
-
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetVertexAttribPointerv(index, pname, pointer);
-
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
-
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glHint(GLenum target, GLenum mode)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glHint(target, mode);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGenBuffers(GLsizei n, GLuint* buffers)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGenBuffers(n, buffers);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGenerateMipmap(GLenum target)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGenerateMipmap(target);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGenFramebuffers(GLsizei n, GLuint* framebuffers)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGenFramebuffers(n, framebuffers);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGenRenderbuffers(n, renderbuffers);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGenTextures(GLsizei n, GLuint* textures)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGenTextures(n, textures);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetActiveAttrib(program, index, bufsize, length, size, type, name);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetActiveUniform(program, index, bufsize, length, size, type, name);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetAttachedShaders(program, maxcount, count, shaders);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-int
-wpgl_glGetAttribLocation(GLuint program, const char* name)
-{
- int ret = _COREGL_INT_INIT_VALUE;
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glGetAttribLocation(program, name);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-wpgl_glGetBooleanv(GLenum pname, GLboolean* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetBooleanv(pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetBufferParameteriv(target, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-GLenum
-wpgl_glGetError(void)
-{
- GLenum ret = GL_NONE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glGetError();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-wpgl_glGetFloatv(GLenum pname, GLfloat* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetFloatv(pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetIntegerv(GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetIntegerv(pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetProgramiv(GLuint program, GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetProgramiv(program, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetProgramInfoLog(program, bufsize, length, infolog);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetRenderbufferParameteriv(target, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetShaderiv(shader, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetShaderInfoLog(shader, bufsize, length, infolog);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
-{
- _COREGL_WRAP_FUNC_BEGIN();
-#ifndef _COREGL_DESKTOP_GL
- wrp_glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
-#else
- if (range)
- {
- range[0] = -126; // floor(log2(FLT_MIN))
- range[1] = 127; // floor(log2(FLT_MAX))
- }
- if (precision)
- {
- precision[0] = 24; // floor(-log2((1.0/16777218.0)));
- }
- return;
- shadertype = precisiontype = 0;
-#endif
-
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetShaderSource(shader, bufsize, length, source);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-const GLubyte *
-wpgl_glGetString(GLenum name)
-{
- const GLubyte *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glGetString(name);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-wpgl_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetTexParameterfv(target, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetTexParameteriv(target, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetUniformfv(GLuint program, GLint location, GLfloat* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetUniformfv(program, location, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetUniformiv(GLuint program, GLint location, GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetUniformiv(program, location, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-int
-wpgl_glGetUniformLocation(GLuint program, const char* name)
-{
- int ret = _COREGL_INT_INIT_VALUE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glGetUniformLocation(program, name);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLboolean
-wpgl_glIsBuffer(GLuint buffer)
-{
- GLboolean ret = GL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glIsBuffer(buffer);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLboolean
-wpgl_glIsEnabled(GLenum cap)
-{
- GLboolean ret = GL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glIsEnabled(cap);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLboolean
-wpgl_glIsFramebuffer(GLuint framebuffer)
-{
- GLboolean ret = GL_FALSE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glIsFramebuffer(framebuffer);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLboolean
-wpgl_glIsProgram(GLuint program)
-{
- GLboolean ret;
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glIsProgram(program);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLboolean
-wpgl_glIsRenderbuffer(GLuint renderbuffer)
-{
- GLboolean ret;
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glIsRenderbuffer(renderbuffer);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLboolean
-wpgl_glIsShader(GLuint shader)
-{
- GLboolean ret;
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glIsShader(shader);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLboolean
-wpgl_glIsTexture(GLuint texture)
-{
- GLboolean ret;
- _COREGL_WRAP_FUNC_BEGIN();
- ret = wrp_glIsTexture(texture);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-wpgl_glLineWidth(GLfloat width)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glLineWidth(width);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glLinkProgram(GLuint program)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glLinkProgram(program);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glPixelStorei(GLenum pname, GLint param)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glPixelStorei(pname, param);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glPolygonOffset(GLfloat factor, GLfloat units)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glPolygonOffset(factor, units);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glReadPixels(x, y, width, height, format, type, pixels);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glReleaseShaderCompiler(void)
-{
- _COREGL_WRAP_FUNC_BEGIN();
-#ifndef _COREGL_DESKTOP_GL
- wrp_glReleaseShaderCompiler();
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
-#else
- //FIXME!!! need something here?
-
-#endif
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glRenderbufferStorage(target, internalformat, width, height);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glSampleCoverage(GLclampf value, GLboolean invert)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glSampleCoverage(value, invert);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glScissor(x, y, width, height);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length)
-{
- _COREGL_WRAP_FUNC_BEGIN();
-#ifndef _COREGL_DESKTOP_GL
- wrp_glShaderBinary(n, shaders, binaryformat, binary, length);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
-#else
-// FIXME: need to dlsym/getprocaddress for this
- return;
- /*
- n = binaryformat = length = 0;
- shaders = binary = 0;
- */
-#endif
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glShaderSource(shader, count, string, length);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glStencilFunc(GLenum func, GLint ref, GLuint mask)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glStencilFunc(func, ref, mask);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glStencilFuncSeparate(face, func, ref, mask);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glStencilMask(GLuint mask)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glStencilMask(mask);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glStencilMaskSeparate(GLenum face, GLuint mask)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glStencilMaskSeparate(face, mask);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glStencilOp(fail, zfail, zpass);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glStencilOpSeparate(face, fail, zfail, zpass);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glTexParameterf(GLenum target, GLenum pname, GLfloat param)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glTexParameterf(target, pname, param);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glTexParameterfv(target, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glTexParameteri(GLenum target, GLenum pname, GLint param)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glTexParameteri(target, pname, param);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glTexParameteriv(GLenum target, GLenum pname, const GLint* params)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glTexParameteriv(target, pname, params);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform1f(GLint location, GLfloat x)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform1f(location, x);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform1fv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform1i(GLint location, GLint x)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform1i(location, x);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform1iv(GLint location, GLsizei count, const GLint* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform1iv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform2f(GLint location, GLfloat x, GLfloat y)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform2f(location, x, y);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform2fv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform2i(GLint location, GLint x, GLint y)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform2i(location, x, y);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform2iv(GLint location, GLsizei count, const GLint* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform2iv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform3f(location, x, y, z);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform3fv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform3i(GLint location, GLint x, GLint y, GLint z)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform3i(location, x, y, z);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform3iv(GLint location, GLsizei count, const GLint* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform3iv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform4f(location, x, y, z, w);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform4fv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform4i(location, x, y, z, w);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniform4iv(GLint location, GLsizei count, const GLint* v)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniform4iv(location, count, v);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniformMatrix2fv(location, count, transpose, value);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniformMatrix3fv(location, count, transpose, value);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUniformMatrix4fv(location, count, transpose, value);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glUseProgram(GLuint program)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glUseProgram(program);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glValidateProgram(GLuint program)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glValidateProgram(program);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib1f(GLuint indx, GLfloat x)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib1f(indx, x);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib1fv(GLuint indx, const GLfloat* values)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib1fv(indx, values);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib2f(indx, x, y);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib2fv(GLuint indx, const GLfloat* values)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib2fv(indx, values);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib3f(indx, x, y, z);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib3fv(GLuint indx, const GLfloat* values)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib3fv(indx, values);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib4f(indx, x, y, z, w);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttrib4fv(GLuint indx, const GLfloat* values)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttrib4fv(indx, values);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glViewport(x, y, width, height);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-
-// GLES Extensions...
-void
-wpgl_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glEGLImageTargetTexture2DOES(target, image);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glEGLImageTargetRenderbufferStorageOES(target, image);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glGetProgramBinary(program, bufsize, length, binaryFormat, binary);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glProgramBinary(program, binaryFormat, binary, length);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-
-void
-wpgl_glProgramParameteri(GLuint program, GLuint pname, GLint value)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glProgramParameteri(program, pname, value);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-wpgl_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- wrp_glDiscardFramebufferEXT(target, numAttachments, attachments);
- GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
+++ /dev/null
-#include "coregl_wrappath.h"
-
-_eng_fn
-glXGetProcAddress(const char* procName)
-{
- _eng_fn ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXGetProcAddress(procName);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-XVisualInfo*
-glXChooseVisual(Display* dpy, int screen, int* attribList)
-{
- XVisualInfo *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXChooseVisual(dpy, screen, attribList);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLXContext
-glXCreateContext(Display* dpy, XVisualInfo* vis, GLXContext shareList, Bool direct)
-{
- GLXContext ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXCreateContext(dpy, vis, shareList, direct);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-glXDestroyContext(Display* dpy, GLXContext ctx)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXDestroyContext(dpy, ctx);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-GLXContext
-glXGetCurrentContext(void)
-{
- GLXContext ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXGetCurrentContext();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLXDrawable
-glXGetCurrentDrawable(void)
-{
- GLXDrawable ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXGetCurrentDrawable();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-
-Bool
-glXMakeCurrent(Display* dpy, GLXDrawable draw, GLXContext ctx)
-{
- Bool ret = False;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXMakeCurrent(dpy, draw, ctx);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-glXSwapBuffers(Display* dpy, GLXDrawable draw)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXSwapBuffers(dpy, draw);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-glXWaitX(void)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXWaitX();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-glXWaitGL(void)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXWaitGL();
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-Bool
-glXQueryExtension(Display* dpy, int* errorb, int* event)
-{
- Bool ret = False;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXQueryExtension(dpy, errorb, event);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-const char *
-glXQueryExtensionsString(Display *dpy, int screen)
-{
- const char *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXQueryExtensionsString(dpy, screen);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLXFBConfig*
-glXChooseFBConfig(Display* dpy, int screen, const int* attribList, int* nitems)
-{
- GLXFBConfig *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXChooseFBConfig(dpy, screen, attribList, nitems);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-GLXFBConfig*
-glXGetFBConfigs(Display* dpy, int screen, int* nelements)
-{
- GLXFBConfig *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXGetFBConfigs(dpy, screen, nelements);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-//!!!!! FIXME Called too many times
-int
-glXGetFBConfigAttrib(Display* dpy, GLXFBConfig config, int attribute, int* value)
-{
- int ret = _COREGL_INT_INIT_VALUE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXGetFBConfigAttrib(dpy, config, attribute, value);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-//!!!!! FIXME Called too many times
-XVisualInfo*
-glXGetVisualFromFBConfig(Display* dpy, GLXFBConfig config)
-{
- XVisualInfo *ret = NULL;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXGetVisualFromFBConfig(dpy, config);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-glXDestroyWindow(Display* dpy, GLXWindow window)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXDestroyWindow(dpy, window);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-Bool
-glXMakeContextCurrent(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
-{
- Bool ret = False;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXMakeContextCurrent(dpy, draw, read, ctx);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-glXBindTexImage(Display* dpy, GLXDrawable draw, int buffer, int* attribList)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXBindTexImage(dpy, draw, buffer, attribList);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-glXReleaseTexImage(Display* dpy, GLXDrawable draw, int buffer)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXReleaseTexImage(dpy, draw, buffer);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-int
-glXGetVideoSync(unsigned int* count)
-{
- int ret = _COREGL_INT_INIT_VALUE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXGetVideoSync(count);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-int
-glXWaitVideoSync(int divisor, int remainder, unsigned int* count)
-{
- int ret = _COREGL_INT_INIT_VALUE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXWaitVideoSync(divisor, remainder, count);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-XID
-glXCreatePixmap(Display* dpy, void* config, Pixmap pixmap, const int* attribList)
-{
- XID ret = None;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXCreatePixmap(dpy, config, pixmap, attribList);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-glXDestroyPixmap(Display* dpy, XID pixmap)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXDestroyPixmap(dpy, pixmap);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-void
-glXQueryDrawable(Display* dpy, XID draw, int attribute, unsigned int* value)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXQueryDrawable(dpy, draw, attribute, value);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
-int
-glXSwapIntervalSGI(int interval)
-{
- int ret = _COREGL_INT_INIT_VALUE;
-
- _COREGL_WRAP_FUNC_BEGIN();
- ret = glsym_glXSwapIntervalSGI(interval);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
- return ret;
-}
-
-void
-glXSwapIntervalEXT(Display* dpy, GLXDrawable draw, int interval)
-{
- _COREGL_WRAP_FUNC_BEGIN();
- glsym_glXSwapIntervalEXT(dpy, draw, interval);
- goto finish;
-
-finish:
- _COREGL_WRAP_FUNC_END();
-}
-
\r
#include "sym_gl.h"\r
\r
-#ifndef _COREGL_DESKTOP_GL\r
-# include "sym_egl.h"\r
-#else\r
-# include "sym_glx.h"\r
-#endif\r
+#include "sym_egl.h"\r
\r
_COREGL_SYMBOL(GL_FALSE, GLenum, glCheckFramebufferStatus, (GLenum target))
_COREGL_SYMBOL(GL_FALSE, void, glClear, (GLbitfield mask))
_COREGL_SYMBOL(GL_FALSE, void, glClearColor, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha))
-#ifndef _COREGL_DESKTOP_GL
_COREGL_SYMBOL(GL_FALSE, void, glClearDepthf, (GLclampf depth))
-#else
-_COREGL_SYMBOL(GL_FALSE, void, glClearDepth, (GLclampf depth))
-#endif
_COREGL_SYMBOL(GL_FALSE, void, glClearStencil, (GLint s))
_COREGL_SYMBOL(GL_FALSE, void, glColorMask, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha))
_COREGL_SYMBOL(GL_FALSE, void, glCompileShader, (GLuint shader))
_COREGL_SYMBOL(GL_FALSE, void, glDeleteTextures, (GLsizei n, const GLuint* textures))
_COREGL_SYMBOL(GL_FALSE, void, glDepthFunc, (GLenum func))
_COREGL_SYMBOL(GL_FALSE, void, glDepthMask, (GLboolean flag))
-#ifndef _COREGL_DESKTOP_GL
_COREGL_SYMBOL(GL_FALSE, void, glDepthRangef, (GLclampf zNear, GLclampf zFar))
-#else
-_COREGL_SYMBOL(GL_FALSE, void, glDepthRange, (GLclampf zNear, GLclampf zFar))
-#endif
_COREGL_SYMBOL(GL_FALSE, void, glDetachShader, (GLuint program, GLuint shader))
_COREGL_SYMBOL(GL_FALSE, void, glDisable, (GLenum cap))
_COREGL_SYMBOL(GL_FALSE, void, glDisableVertexAttribArray, (GLuint index))
--- /dev/null
+#include "coregl_appopt.h"
+
+#include <stdlib.h>
+#include <string.h>
+#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"
+#undef _COREGL_SYMBOL
+
+void
+init_modules_appopt()
+{
+ LOG("[CoreGL] <Appopt> : ");
+
+ LOG("Not yet implemented\n");
+
+ appopt_apply_overrides();
+}
+
+void
+deinit_modules_appopt()
+{
+}
+
+void
+init_modules_tstate_appopt(GLThreadState *tstate)
+{
+ MY_MODULE_TSTATE *tstate_mt = NULL;
+
+ tstate_mt = (MY_MODULE_TSTATE *)calloc(1, sizeof(MY_MODULE_TSTATE));
+
+
+ tstate->module_data[MY_MODULE_ID] = tstate_mt;
+}
+
+void
+deinit_modules_tstate_appopt(GLThreadState *tstate)
+{
+ if (tstate->module_data[MY_MODULE_ID] != NULL)
+ {
+ free(tstate->module_data[MY_MODULE_ID]);
+ tstate->module_data[MY_MODULE_ID] = NULL;
+ }
+}
+
+void
+appopt_apply_overrides()
+{
+ //appopt_apply_overrides_egl(1);
+ //appopt_apply_overrides_gl(1);
+}
+
+#define OVERRIDE(f) \
+ if (enable == 1) \
+ { \
+ COREGL_OVERRIDE_API(_orig_appopt_, f, ovr_); \
+ COREGL_OVERRIDE_API(ovr_, f, appopt_); \
+ } \
+ else \
+ { \
+ AST(ovr_##f != NULL); \
+ COREGL_OVERRIDE_API(ovr_, f, _orig_appopt_); \
+ _orig_appopt_##f = NULL; \
+ }
+
+void
+appopt_apply_overrides_egl(int enable)
+{
+ // Fast-Path Core Functions
+}
+
+void
+appopt_apply_overrides_gl(int enable)
+{
+ // Fast-Path Functions
+}
+
+#undef A_ORD
+
--- /dev/null
+#ifndef COREGL_APPOPT_H
+#define COREGL_APPOPT_H
+
+#include "../coregl_module.h"
+
+#ifndef COREGL_USE_MODULE_APPOPT
+#error "COREGL_USE_MODULE_APPOPT must defined!!!"
+#endif
+
+#define MY_MODULE_ID COREGL_MODULE_APPOPT
+#define MY_MODULE_TSTATE Appopt_ThreadState
+
+#include "../../coregl_internal.h"
+#include "../../coregl_export.h"
+
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (*_orig_appopt_##FUNC_NAME) PARAM_LIST;
+# include "../../headers/sym.h"
+#undef _COREGL_SYMBOL
+
+// Symbol definition for appopt
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (appopt_##FUNC_NAME) PARAM_LIST;
+# include "../../headers/sym.h"
+#undef _COREGL_SYMBOL
+
+typedef struct _Appopt_ThreadState
+{
+ void *_notusedyet;
+} Appopt_ThreadState;
+
+
+#define _COREGL_APPOPT_FUNC_BEGIN()
+
+#define _COREGL_APPOPT_FUNC_END()
+
+
+extern void init_modules_appopt();
+extern void deinit_modules_appopt();
+extern void init_modules_tstate_appopt(GLThreadState *tstate);
+extern void deinit_modules_tstate_appopt(GLThreadState *tstate);
+
+extern void appopt_apply_overrides();
+extern void appopt_apply_overrides_egl(int enable);
+extern void appopt_apply_overrides_gl(int enable);
+
+
+#endif // COREGL_APPOPT_H
+
--- /dev/null
+#include "coregl_appopt.h"
+
+
--- /dev/null
+#include "coregl_appopt.h"
+
+
--- /dev/null
+#include "../coregl_internal.h"
+
+// TRACEPATH module
+#include "tracepath/coregl_tracepath.h"
+#undef MY_MODULE_ID
+#undef MY_MODULE_TSTATE
+
+// FASTPATH module
+#include "fastpath/coregl_fastpath.h"
+#undef MY_MODULE_ID
+#undef MY_MODULE_TSTATE
+
+// APIOPT module
+#include "appopt/coregl_appopt.h"
+#undef MY_MODULE_ID
+#undef MY_MODULE_TSTATE
+
+void
+init_modules()
+{
+ // Step 1 : Initialization
+ init_export();
+
+ // Step 2 : User Define Modules : Sequence is important! (Last module's API is called first)
+ init_modules_fastpath();
+ init_modules_appopt();
+
+ // Step 3 : Common Wrapping Modules
+ init_modules_tracepath();
+}
+
+void
+deinit_modules()
+{
+ // Step 1(rollback init 3) : Common Wrapping Modules
+ deinit_modules_tracepath();
+
+ // Step 2(rollback init 2) : User Define Modules : Sequence is important!
+ deinit_modules_appopt();
+ deinit_modules_fastpath();
+
+ // Step 3(rollback init 1) : De-Initialization
+ deinit_export();
+}
+
+void
+init_modules_tstate(GLThreadState *tstate)
+{
+ // Initialization for each thread state : Sequence is important!
+ init_modules_tstate_tracepath(tstate);
+ init_modules_tstate_fastpath(tstate);
+ init_modules_tstate_appopt(tstate);
+}
+
+void
+deinit_modules_tstate(GLThreadState *tstate)
+{
+ // De-Initialization for each thread state(rollback) : Sequence is important!
+ deinit_modules_tstate_appopt(tstate);
+ deinit_modules_tstate_fastpath(tstate);
+ deinit_modules_tstate_tracepath(tstate);
+}
+
--- /dev/null
+#ifndef COREGL_MODULE_H
+#define COREGL_MODULE_H
+
+#define COREGL_USE_MODULE_TRACEPATH
+#define COREGL_USE_MODULE_FASTPATH
+#define COREGL_USE_MODULE_APPOPT
+
+
+typedef enum
+{
+ COREGL_MODULE_TRACEPATH = 0,
+ COREGL_MODULE_FASTPATH = 1,
+ COREGL_MODULE_APPOPT = 2
+} CoreGL_Modules;
+
+#define COREGL_MAX_MODULES 5
+
+#define GET_MY_TSTATE(val, stmt) \
+ if (stmt != NULL) \
+ val = ((MY_MODULE_TSTATE *)(stmt)->module_data[MY_MODULE_ID]); \
+ else \
+ val = NULL
+
+#endif // COREGL_MODULE_H
+
#include <string.h>
#include <sys/time.h>
-GLenum FPGL_Error = GL_NO_ERROR;
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) RET_TYPE (*_orig_fastpath_##FUNC_NAME) PARAM_LIST = NULL;
+#include "../../headers/sym.h"
+#undef _COREGL_SYMBOL
+
+Fastpath_Opt_Flag fp_opt = FP_UNKNOWN_PATH;
+
+int debug_nofp = 0;
+FILE *trace_fp = NULL;
+
+GLenum FPGL_Error = GL_NO_ERROR;
GLGlueContext_List *gctx_list = NULL;
-Mutex init_context_mutex = MUTEX_INITIALIZER;
-GLGlueContext *initial_ctx = NULL;
+Mutex init_context_mutex = MUTEX_INITIALIZER;
+GLGlueContext *initial_ctx = NULL;
+
+Mutex ctx_list_access_mutex = MUTEX_INITIALIZER;
+
+GLContext_List *glctx_list = NULL;
static void
_get_texture_states(GLenum pname, GLint *params)
}
void
-init_fast_gl()
+init_modules_fastpath()
{
+ int fastpath_opt = 0;
+
+ LOG("[CoreGL] <Fastpath> : ");
+
+ fastpath_opt = atoi(get_env_setting("COREGL_FASTPATH"));
+
+ switch (fastpath_opt)
+ {
+ case 1:
+ LOG("(%d) Fastpath enabled...\n", fastpath_opt);
+ fp_opt = FP_FAST_PATH;
+ break;
+ default:
+ LOG("(%d) Default API path enabled...\n", fastpath_opt);
+ fp_opt = FP_NORMAL_PATH;
+ break;
+ }
+
+ debug_nofp = atoi(get_env_setting("COREGL_DEBUG_NOFP"));
+
+ fastpath_apply_overrides();
+
}
void
-free_fast_gl()
+deinit_modules_fastpath()
{
+ GLContext_List *current = NULL;
+
+ AST(mutex_lock(&ctx_list_access_mutex) == 1);
+
+ // Destroy remained context & Detect leaks
+ int retry_destroy = 0;
+
+ while (1)
+ {
+ retry_destroy = 0;
+ current = glctx_list;
+ while (current)
+ {
+ if (current->cstate != NULL)
+ {
+ ERR("\E[0;31;1mWARNING : Context attached to [dpy=%p|rctx=%p] has not been completely destroyed.(leak)\E[0m\n", current->cstate->rdpy, current->cstate->rctx);
+
+ _sym_eglMakeCurrent(current->cstate->rdpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ _sym_eglDestroyContext(current->cstate->rdpy, current->cstate->rctx);
+
+ fastpath_remove_context_states_from_list(current->cstate, NULL);
+ retry_destroy = 1;
+ break;
+ }
+
+ glctx_list = current->next;
+ free(current);
+ current = glctx_list;
+ }
+ if (retry_destroy == 0) break;
+ }
+ goto finish;
+
+finish:
+ AST(mutex_unlock(&ctx_list_access_mutex) == 1);
}
+void
+init_modules_tstate_fastpath(GLThreadState *tstate)
+{
+ MY_MODULE_TSTATE *tstate_mt = NULL;
+
+ tstate_mt = (MY_MODULE_TSTATE *)calloc(1, sizeof(MY_MODULE_TSTATE));
+
+ tstate_mt->binded_api = EGL_OPENGL_ES_API;
+
+ tstate->module_data[MY_MODULE_ID] = tstate_mt;
+}
+
+void
+deinit_modules_tstate_fastpath(GLThreadState *tstate)
+{
+ if (tstate->module_data[MY_MODULE_ID] != NULL)
+ {
+ free(tstate->module_data[MY_MODULE_ID]);
+ tstate->module_data[MY_MODULE_ID] = NULL;
+ }
+}
+
+void
+fastpath_apply_overrides()
+{
+ switch(fp_opt)
+ {
+ case FP_FAST_PATH:
+ fastpath_apply_overrides_egl(1);
+ fastpath_apply_overrides_gl(1);
+ break;
+ case FP_NORMAL_PATH:
+ break;
+ default:
+ ERR("Invalide GL Override Option!!!\n");
+ break;
+ }
+}
+
+#define OVERRIDE(f) \
+ if (enable == 1) \
+ { \
+ COREGL_OVERRIDE_API(_orig_fastpath_, f, ovr_); \
+ COREGL_OVERRIDE_API(ovr_, f, fastpath_); \
+ } \
+ else \
+ { \
+ AST(ovr_##f != NULL); \
+ COREGL_OVERRIDE_API(ovr_, f, _orig_fastpath_); \
+ _orig_fastpath_##f = NULL; \
+ }
+
+void
+fastpath_apply_overrides_egl(int enable)
+{
+ // Fast-Path Core Functions
+ OVERRIDE(eglGetProcAddress);
+
+ OVERRIDE(eglBindAPI);
+ OVERRIDE(eglQueryAPI);
+
+ OVERRIDE(eglCreateContext);
+ OVERRIDE(eglCreateImageKHR);
+ OVERRIDE(eglMakeCurrent);
+ OVERRIDE(eglDestroyContext);
+ OVERRIDE(eglQueryContext);
+ OVERRIDE(eglGetCurrentContext);
+ OVERRIDE(eglReleaseThread);
+ OVERRIDE(eglGetCurrentSurface);
+ OVERRIDE(eglTerminate);
+
+}
+
+void
+fastpath_apply_overrides_gl(int enable)
+{
+ // Fast-Path Functions
+ if (debug_nofp != 1)
+ {
+ OVERRIDE(glGetError);
+
+ OVERRIDE(glGetIntegerv);
+ OVERRIDE(glGetFloatv);
+ OVERRIDE(glGetBooleanv);
+
+ OVERRIDE(glActiveTexture);
+ OVERRIDE(glGenTextures);
+ OVERRIDE(glBindTexture);
+ OVERRIDE(glIsTexture);
+ OVERRIDE(glDeleteTextures);
+ OVERRIDE(glFramebufferTexture2D);
+ OVERRIDE(glFramebufferTexture2DMultisampleEXT);
+
+ OVERRIDE(glGenBuffers);
+ OVERRIDE(glBindBuffer);
+ OVERRIDE(glIsBuffer);
+ OVERRIDE(glDeleteBuffers);
+
+ OVERRIDE(glGenFramebuffers);
+ OVERRIDE(glBindFramebuffer);
+ OVERRIDE(glIsFramebuffer);
+ OVERRIDE(glDeleteFramebuffers);
+
+ OVERRIDE(glGenRenderbuffers);
+ OVERRIDE(glBindRenderbuffer);
+ OVERRIDE(glFramebufferRenderbuffer);
+ OVERRIDE(glIsRenderbuffer);
+ OVERRIDE(glDeleteRenderbuffers);
+
+ OVERRIDE(glCreateShader);
+ OVERRIDE(glCreateProgram);
+ OVERRIDE(glAttachShader);
+ OVERRIDE(glCompileShader);
+ OVERRIDE(glShaderBinary);
+ OVERRIDE(glDeleteShader);
+ OVERRIDE(glDetachShader);
+ OVERRIDE(glGetShaderiv);
+ OVERRIDE(glGetShaderInfoLog);
+ OVERRIDE(glGetShaderSource);
+ OVERRIDE(glIsShader);
+ OVERRIDE(glShaderSource);
+ OVERRIDE(glBindAttribLocation);
+ OVERRIDE(glDeleteProgram);
+ OVERRIDE(glDetachShader);
+ OVERRIDE(glGetActiveAttrib);
+ OVERRIDE(glGetActiveUniform);
+ OVERRIDE(glGetAttachedShaders);
+ OVERRIDE(glGetAttribLocation);
+ OVERRIDE(glGetProgramiv);
+ OVERRIDE(glGetProgramInfoLog);
+ OVERRIDE(glGetUniformfv);
+ OVERRIDE(glGetUniformiv);
+ OVERRIDE(glGetUniformLocation);
+ OVERRIDE(glIsProgram);
+ OVERRIDE(glLinkProgram);
+ OVERRIDE(glUseProgram);
+ OVERRIDE(glValidateProgram);
+ OVERRIDE(glGetProgramBinary);
+ OVERRIDE(glProgramBinary);
+
+ OVERRIDE(glBlendColor);
+ OVERRIDE(glBlendEquation);
+ OVERRIDE(glBlendEquationSeparate);
+ OVERRIDE(glBlendFunc);
+ OVERRIDE(glBlendFuncSeparate);
+ OVERRIDE(glClearColor);
+ OVERRIDE(glClearDepthf);
+ OVERRIDE(glClearStencil);
+ OVERRIDE(glColorMask);
+ OVERRIDE(glCullFace);
+ OVERRIDE(glDepthFunc);
+ OVERRIDE(glDepthMask);
+ OVERRIDE(glDepthRangef);
+ OVERRIDE(glDisable);
+ OVERRIDE(glDisableVertexAttribArray);
+ OVERRIDE(glDrawArrays);
+ OVERRIDE(glDrawElements);
+ OVERRIDE(glEnable);
+ OVERRIDE(glEnableVertexAttribArray);
+ OVERRIDE(glFrontFace);
+ OVERRIDE(glGetVertexAttribfv);
+ OVERRIDE(glGetVertexAttribiv);
+ OVERRIDE(glGetVertexAttribPointerv);
+ OVERRIDE(glHint);
+ OVERRIDE(glLineWidth);
+ OVERRIDE(glPixelStorei);
+ OVERRIDE(glPolygonOffset);
+ OVERRIDE(glSampleCoverage);
+ OVERRIDE(glScissor);
+ OVERRIDE(glStencilFunc);
+ OVERRIDE(glStencilFuncSeparate);
+ OVERRIDE(glStencilMask);
+ OVERRIDE(glStencilMaskSeparate);
+ OVERRIDE(glStencilOp);
+ OVERRIDE(glStencilOpSeparate);
+ OVERRIDE(glVertexAttrib1f);
+ OVERRIDE(glVertexAttrib1fv);
+ OVERRIDE(glVertexAttrib2f);
+ OVERRIDE(glVertexAttrib2fv);
+ OVERRIDE(glVertexAttrib3f);
+ OVERRIDE(glVertexAttrib3fv);
+ OVERRIDE(glVertexAttrib4f);
+ OVERRIDE(glVertexAttrib4fv);
+ OVERRIDE(glVertexAttribPointer);
+ OVERRIDE(glViewport);
+
+ OVERRIDE(glEGLImageTargetTexture2DOES);
+
+ }
+ else
+ {
+ LOG("\E[0;35;1m[CoreGL] SKIP GL FASTPATH...\E[0m\n");
+ }
+}
+
+#undef OVERRIDE
+
static GL_Object **
_get_shared_object(GL_Shared_Object_State *sostate, GL_Object_Type type)
{
}
}
+int
+fastpath_add_context_state_to_list(const void *option, const int option_len, GLContextState *cstate, Mutex *mtx)
+{
+ int ret = 0;
+ int tid = 0;
+ GLContext_List *current = NULL;
+ GLContext_List *newitm = NULL;
+
+ if (mtx != NULL) AST(mutex_lock(mtx) == 1);
+
+ AST(cstate != NULL);
+
+ tid = get_current_thread();
+
+ current = glctx_list;
+ while (current != NULL)
+ {
+ if (current->option_len == option_len &&
+ memcmp(current->option, option, option_len) == 0 &&
+ current->thread_id == tid)
+ {
+ AST(current->cstate == cstate);
+ goto finish;
+ }
+ current = current->next;
+ }
+
+ newitm = (GLContext_List *)calloc(1, sizeof(GLContext_List));
+ if (newitm == NULL)
+ {
+ ERR("Failed to create context list.\n");
+ goto finish;
+ }
+
+ newitm->cstate = cstate;
+ newitm->thread_id = tid;
+ newitm->option_len = option_len;
+ newitm->option = (void *)malloc(option_len);
+ memcpy(newitm->option, option, option_len);
+
+ if (glctx_list != NULL)
+ newitm->next = glctx_list;
+
+ glctx_list = newitm;
+
+ ret = 1;
+ goto finish;
+
+finish:
+ if (ret != 1)
+ {
+ if (newitm != NULL)
+ {
+ free(newitm);
+ newitm = NULL;
+ }
+ if (cstate != NULL)
+ {
+ free(cstate);
+ cstate = NULL;
+ }
+ }
+ if (mtx != NULL) AST(mutex_unlock(mtx) == 1);
+
+ return ret;
+}
+
+GLContextState *
+fastpath_get_context_state_from_list(const void *option, const int option_len, Mutex *mtx)
+{
+ GLContextState *ret = NULL;
+ GLContext_List *current = NULL;
+ int tid = 0;
+
+ if (mtx != NULL) AST(mutex_lock(mtx) == 1);
+
+ tid = get_current_thread();
+
+ current = glctx_list;
+ while (current != NULL)
+ {
+ if (current->option_len == option_len &&
+ memcmp(current->option, option, option_len) == 0 &&
+ current->thread_id == tid)
+ {
+ ret = current->cstate;
+ goto finish;
+ }
+ current = current->next;
+ }
+ goto finish;
+
+finish:
+ if (mtx != NULL) AST(mutex_unlock(mtx) == 1);
+ return ret;
+}
+
+int
+fastpath_remove_context_states_from_list(GLContextState *cstate, Mutex *mtx)
+{
+ int ret = 0;
+ int tid = 0;
+ GLContext_List *olditm = NULL;
+ GLContext_List *current = NULL;
+
+ if (mtx != NULL) AST(mutex_lock(mtx) == 1);
+
+ AST(cstate != NULL);
+
+ tid = get_current_thread();
+ current = glctx_list;
+
+ while (current != NULL)
+ {
+ if (current->cstate == cstate)
+ {
+ GLContext_List *nextitm = NULL;
+ if (olditm != NULL)
+ {
+ olditm->next = current->next;
+ nextitm = olditm->next;
+ }
+ else
+ {
+ glctx_list = current->next;
+ nextitm = glctx_list;
+ }
+ free(current);
+ ret = 1;
+ current = nextitm;
+ continue;
+ }
+ olditm = current;
+ current = current->next;
+ }
+ goto finish;
+
+finish:
+ if (mtx != NULL) AST(mutex_unlock(mtx) == 1);
+ return ret;
+}
GLuint
-sostate_create_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint real_name)
+fastpath_sostate_create_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint real_name)
{
GL_Object **object = NULL;
GLuint ret = _COREGL_INT_INIT_VALUE;
}
GLuint
-sostate_remove_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint glue_name)
+fastpath_sostate_remove_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint glue_name)
{
GL_Object **object = NULL;
GLuint ret = _COREGL_INT_INIT_VALUE;
}
GLuint
-sostate_get_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint glue_name)
+fastpath_sostate_get_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint glue_name)
{
GL_Object **object = NULL;
GLuint ret = _COREGL_INT_INIT_VALUE;
}
GLuint
-sostate_find_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint real_name)
+fastpath_sostate_find_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint real_name)
{
GL_Object **object = NULL;
GLuint ret = _COREGL_INT_INIT_VALUE;
}
void
-dump_context_states(GLGlueContext *ctx, int force_output)
+fastpath_dump_context_states(GLGlueContext *ctx, int force_output)
{
static struct timeval tv_last = { 0, 0 };
}
int
-init_context_states(GLGlueContext *ctx)
+fastpath_init_context_states(GLGlueContext *ctx)
{
int ret = 0;
return ret;
}
+#ifdef COREGL_USE_MODULE_TRACEPATH
+extern void *tracepath_api_trace_begin(const char *name, void *hint, int trace_total_time);
+extern void *tracepath_api_trace_end(const char *name, void *hint, int trace_total_time);
+#endif
+
void
-make_context_current(GLGlueContext *oldctx, GLGlueContext *newctx)
+fastpath_make_context_current(GLGlueContext *oldctx, GLGlueContext *newctx)
{
unsigned char flag = 0;
int i = 0;
// Return if they're the same
if (oldctx == newctx) goto finish;
-#ifdef EVAS_GL_DEBUG
-# define STATE_COMPARE(state)
-# define STATES_COMPARE(state_ptr, bytes)
-#else
-# define STATE_COMPARE(state) \
+#define STATE_COMPARE(state) \
if ((oldctx->state) != (newctx->state))
-# define STATES_COMPARE(state_ptr, bytes) \
+
+#define STATES_COMPARE(state_ptr, bytes) \
if ((memcmp((oldctx->state_ptr), (newctx->state_ptr), (bytes))) != 0)
-#endif
+
+#ifdef COREGL_USE_MODULE_TRACEPATH
static void *trace_hint_glfinish = NULL;
- trace_hint_glfinish = _COREGL_TRACE_API_BEGIN("eglMakeCurrent(FP glFinish)", trace_hint_glfinish, 0);
+ trace_hint_glfinish = tracepath_api_trace_begin("eglMakeCurrent(FP glFinish)", trace_hint_glfinish, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
+
_sym_glFlush();
- _COREGL_TRACE_API_END("eglMakeCurrent(FP glFinish)", trace_hint_glfinish, 0);
+#ifdef COREGL_USE_MODULE_TRACEPATH
+ tracepath_api_trace_end("eglMakeCurrent(FP glFinish)", trace_hint_glfinish, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
+#ifdef COREGL_USE_MODULE_TRACEPATH
static void *trace_hint_bindbuffers = NULL;
- trace_hint_bindbuffers = _COREGL_TRACE_API_BEGIN("eglMakeCurrent(FP bind buffers)", trace_hint_bindbuffers, 0);
+ trace_hint_bindbuffers = tracepath_api_trace_begin("eglMakeCurrent(FP bind buffers)", trace_hint_bindbuffers, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
//------------------//
// _bind_flag
}
}
- _COREGL_TRACE_API_END("eglMakeCurrent(FP bind buffers)", trace_hint_bindbuffers, 0);
+#ifdef COREGL_USE_MODULE_TRACEPATH
+ tracepath_api_trace_end("eglMakeCurrent(FP bind buffers)", trace_hint_bindbuffers, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
//------------------//
// Enable States
// _enable_flag1
+#ifdef COREGL_USE_MODULE_TRACEPATH
static void *trace_hint_enable_states = NULL;
- trace_hint_enable_states = _COREGL_TRACE_API_BEGIN("eglMakeCurrent(FP enable states)", trace_hint_enable_states, 0);
+ trace_hint_enable_states = tracepath_api_trace_begin("eglMakeCurrent(FP enable states)", trace_hint_enable_states, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
flag = oldctx->_enable_flag1 | newctx->_enable_flag1;
if (flag)
}
}
- _COREGL_TRACE_API_END("eglMakeCurrent(FP enable states)", trace_hint_enable_states, 0);
+#ifdef COREGL_USE_MODULE_TRACEPATH
+ tracepath_api_trace_end("eglMakeCurrent(FP enable states)", trace_hint_enable_states, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
//------------------//
// _clear_flag1
+#ifdef COREGL_USE_MODULE_TRACEPATH
static void *trace_hint_clear_viewport = NULL;
- trace_hint_clear_viewport = _COREGL_TRACE_API_BEGIN("eglMakeCurrent(FP clear/viewport)", trace_hint_clear_viewport, 0);
+ trace_hint_clear_viewport = tracepath_api_trace_begin("eglMakeCurrent(FP clear/viewport)", trace_hint_clear_viewport, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
flag = oldctx->_clear_flag1 | newctx->_clear_flag1;
if (flag)
}
- _COREGL_TRACE_API_END("eglMakeCurrent(FP clear/viewport)", trace_hint_clear_viewport, 0);
+#ifdef COREGL_USE_MODULE_TRACEPATH
+ tracepath_api_trace_end("eglMakeCurrent(FP clear/viewport)", trace_hint_clear_viewport, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
//------------------//
// Texture here...
+#ifdef COREGL_USE_MODULE_TRACEPATH
static void *trace_hint_bind_textures = NULL;
- trace_hint_bind_textures = _COREGL_TRACE_API_BEGIN("eglMakeCurrent(FP bind textures)", trace_hint_bind_textures, 0);
+ trace_hint_bind_textures = tracepath_api_trace_begin("eglMakeCurrent(FP bind textures)", trace_hint_bind_textures, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
flag = oldctx->_tex_flag1 | newctx->_tex_flag1;
if (flag)
_sym_glHint(GL_GENERATE_MIPMAP_HINT, newctx->gl_generate_mipmap_hint[0]);
}
}
- _COREGL_TRACE_API_END("eglMakeCurrent(FP bind textures)", trace_hint_bind_textures, 0);
+#ifdef COREGL_USE_MODULE_TRACEPATH
+ tracepath_api_trace_end("eglMakeCurrent(FP bind textures)", trace_hint_bind_textures, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
//------------------//
+#ifdef COREGL_USE_MODULE_TRACEPATH
static void *trace_hint_etc = NULL;
- trace_hint_etc = _COREGL_TRACE_API_BEGIN("eglMakeCurrent(FP etc.)", trace_hint_etc, 0);
+ trace_hint_etc = tracepath_api_trace_begin("eglMakeCurrent(FP etc.)", trace_hint_etc, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
flag = oldctx->_blend_flag | newctx->_blend_flag;
if (flag)
_sym_glPixelStorei(GL_UNPACK_ALIGNMENT, newctx->gl_unpack_alignment[0]);
}
}
- _COREGL_TRACE_API_END("eglMakeCurrent(FP etc.)", trace_hint_etc, 0);
+#ifdef COREGL_USE_MODULE_TRACEPATH
+ tracepath_api_trace_end("eglMakeCurrent(FP etc.)", trace_hint_etc, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
// _varray_flag
+#ifdef COREGL_USE_MODULE_TRACEPATH
static void *trace_hint_vertex_attrib = NULL;
- trace_hint_vertex_attrib = _COREGL_TRACE_API_BEGIN("eglMakeCurrent(FP vertex attrib)", trace_hint_vertex_attrib, 0);
+ trace_hint_vertex_attrib = tracepath_api_trace_begin("eglMakeCurrent(FP vertex attrib)", trace_hint_vertex_attrib, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
+
flag = oldctx->_vattrib_flag | newctx->_vattrib_flag;
if (flag)
{
}
- _COREGL_TRACE_API_END("eglMakeCurrent(FP vertex attrib)", trace_hint_vertex_attrib, 0);
+#ifdef COREGL_USE_MODULE_TRACEPATH
+ tracepath_api_trace_end("eglMakeCurrent(FP vertex attrib)", trace_hint_vertex_attrib, 0);
+#endif // COREGL_USE_MODULE_TRACEPATH
+
goto finish;
finish:
#ifdef COREGL_TRACE_STATE_INFO
if (unlikely(trace_state_flag == 1))
- dump_context_states(newctx, 0);
+ fastpath_dump_context_states(newctx, 0);
#endif // COREGL_TRACE_STATE_INFO
return;
#undef STATE_COMPARE
--- /dev/null
+#ifndef COREGL_FASTPATH_H
+#define COREGL_FASTPATH_H
+
+#include "../coregl_module.h"
+
+#ifndef COREGL_USE_MODULE_FASTPATH
+#error "COREGL_USE_MODULE_FASTPATH must defined!!!"
+#endif
+
+#define MY_MODULE_ID COREGL_MODULE_FASTPATH
+#define MY_MODULE_TSTATE Fastpath_ThreadState
+
+#include "../../coregl_internal.h"
+#include "../../coregl_export.h"
+
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (*_orig_fastpath_##FUNC_NAME) PARAM_LIST;
+# include "../../headers/sym.h"
+#undef _COREGL_SYMBOL
+
+// Symbol definition for fastpath
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (fastpath_##FUNC_NAME) PARAM_LIST;
+# include "../../headers/sym.h"
+#undef _COREGL_SYMBOL
+
+#define COREGL_FASTPATH_TRACE_ALL
+
+#ifdef COREGL_FASTPATH_TRACE_ALL
+#define COREGL_FASTPATH_TRACE_CONTEXT_INFO // Context state & thread state & Glue-context info
+#define COREGL_FASTPATH_TRACE_STATE_INFO // Glue-context state info
+#endif
+
+
+#define _COREGL_FASTPATH_FUNC_BEGIN()
+
+#define _COREGL_FASTPATH_FUNC_END()
+
+
+#define FLAG_BIT_0 0x01
+#define FLAG_BIT_1 0x02
+#define FLAG_BIT_2 0x04
+#define FLAG_BIT_3 0x08
+#define FLAG_BIT_4 0x10
+#define FLAG_BIT_5 0x20
+#define FLAG_BIT_6 0x40
+#define FLAG_BIT_7 0x80
+
+#define MAX_TEXTURE_UNITS 32
+#define MAX_VERTEX_ATTRIBS 64
+
+typedef enum _Fastpath_Opt_Flag
+{
+ FP_UNKNOWN_PATH,
+ FP_NORMAL_PATH,
+ FP_FAST_PATH
+} Fastpath_Opt_Flag;
+
+extern Fastpath_Opt_Flag fp_opt;
+extern int debug_nofp;
+
+typedef struct _GLContextState
+{
+ int ref_count;
+ GLContext *rctx;
+ GLDisplay *rdpy;
+ void *data;
+} GLContextState;
+
+typedef struct _Fastpath_ThreadState
+{
+ EGLenum binded_api;
+ GLContextState *cstate;
+ GLSurface *rsurf_draw;
+ GLSurface *rsurf_read;
+} Fastpath_ThreadState;
+
+typedef struct _GLContext_List
+{
+ void *option;
+ int option_len;
+ int thread_id;
+ GLContextState *cstate;
+ struct _GLContext_List *next;
+} GLContext_List;
+
+extern GLContext_List *glctx_list;
+
+extern Mutex ctx_list_access_mutex;
+
+typedef struct
+{
+ GLuint tex_id;
+} GL_Texture_State;
+
+typedef struct
+{
+ GLboolean modified;
+ GLboolean enabled;
+ GLuint buf_id;
+ GLint size;
+ GLenum type;
+ GLboolean normalized;
+ GLsizei stride;
+ const void *pointer;
+} GL_Vertex_Array_State;
+
+typedef struct
+{
+ GLboolean modified;
+ GLfloat value[4];
+} GL_Vertex_Attrib;
+
+
+#define MAGIC_GLFAST 0x73777770
+#define MAX_GL_OBJECT_SIZE 100000
+
+typedef enum
+{
+ GL_OBJECT_TYPE_UNKNOWN = 0x0,
+ GL_OBJECT_TYPE_TEXTURE = 0x1000000,
+ GL_OBJECT_TYPE_BUFFER = 0x2000000,
+ GL_OBJECT_TYPE_FRAMEBUFFER = 0x3000000,
+ GL_OBJECT_TYPE_RENDERBUFFER = 0x4000000,
+ GL_OBJECT_TYPE_PROGRAM = 0x5000000,
+} GL_Object_Type;
+
+typedef struct _GL_Object
+{
+ GLuint id;
+ GLuint real_id;
+
+ struct _GL_Shared_Object_State *parent;
+} GL_Object;
+
+typedef struct _GL_Shared_Object_State
+{
+ int ref_count;
+
+ GL_Object *texture[MAX_GL_OBJECT_SIZE];
+ GL_Object *buffer[MAX_GL_OBJECT_SIZE];
+ GL_Object *framebuffer[MAX_GL_OBJECT_SIZE];
+ GL_Object *renderbuffer[MAX_GL_OBJECT_SIZE];
+ GL_Object *program[MAX_GL_OBJECT_SIZE];
+} GL_Shared_Object_State;
+
+typedef struct _GLGlueContext
+{
+ int magic;
+ int initialized;
+ int surface_attached;
+
+ int ref_count;
+ int is_destroyed;
+
+ int used_count;
+
+ GLDisplay *rdpy;
+ GLContextState *cstate;
+ int thread_id;
+
+ void *real_ctx_option;
+ int real_ctx_option_len;
+
+ void *real_ctx_sharable_option;
+ int real_ctx_sharable_option_len;
+
+ unsigned char _bind_flag;
+ unsigned char _enable_flag1;
+ unsigned char _enable_flag2;
+ unsigned char _clear_flag1;
+ unsigned char _clear_flag2;
+ unsigned char _tex_flag1;
+ unsigned char _blend_flag;
+ unsigned char _stencil_flag1;
+ unsigned char _stencil_flag2;
+ unsigned char _misc_flag1;
+ unsigned char _misc_flag2;
+ unsigned char _vattrib_flag;
+
+ GL_Shared_Object_State *sostate;
+
+ GLenum gl_error;
+
+ // General state
+#define GLUE_STATE(TYPE, NAME, SIZE, ARRAY_SIZE, DEFAULT_STMT, GET_STMT) TYPE NAME[ARRAY_SIZE];
+# include "coregl_fastpath_state.h"
+#undef GLUE_STATE
+
+} GLGlueContext;
+
+typedef struct _GLGlueContext_List
+{
+ GLGlueContext *gctx;
+ struct _GLGlueContext_List *prev;
+ struct _GLGlueContext_List *next;
+} GLGlueContext_List;
+
+extern GLGlueContext_List *gctx_list;
+
+extern GLGlueContext *initial_ctx;
+
+extern void init_modules_fastpath();
+extern void deinit_modules_fastpath();
+extern void init_modules_tstate_fastpath(GLThreadState *tstate);
+extern void deinit_modules_tstate_fastpath(GLThreadState *tstate);
+
+extern void fastpath_apply_overrides();
+extern void fastpath_apply_overrides_egl(int enable);
+extern void fastpath_apply_overrides_gl(int enable);
+
+extern int fastpath_init_context_states(GLGlueContext *ctx);
+extern void fastpath_make_context_current(GLGlueContext *oldctx, GLGlueContext *newctx);
+
+#ifdef COREGL_TRACE_STATE_INFO
+extern void fastpath_dump_context_states(GLGlueContext *ctx, int force_output);
+#endif
+
+// Context state functions
+extern int fastpath_add_context_state_to_list(const void *data, const int datalen, GLContextState *cstate, Mutex *mtx);
+extern int fastpath_remove_context_states_from_list(GLContextState *cstate, Mutex *mtx);
+extern GLContextState *fastpath_get_context_state_from_list(const void *data, const int datalen, Mutex *mtx);
+
+// Shared object state functions
+extern GLuint fastpath_sostate_create_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint name);
+extern GLuint fastpath_sostate_remove_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint glue_name);
+extern GLuint fastpath_sostate_get_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint name);
+extern GLuint fastpath_sostate_find_object(GL_Shared_Object_State *sostate, GL_Object_Type type, GLuint real_name);
+
+
+#endif // COREGL_FASTPATH_H
+
#include <sys/time.h>
#include <execinfo.h>
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
General_Trace_List *glue_ctx_trace_list = NULL;
General_Trace_List *context_state_trace_list = NULL;
static void
_dump_context_info(const char *ment, int force_output)
{
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
static struct timeval tv_last = { 0, 0 };
if (trace_ctx_flag != 1) return;
tv_last = tv_now;
}
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
TRACE("\n");
TRACE("\E[40;34m========================================================================================================================\E[0m\n");
while (current != NULL)
{
GLThreadState *cur_tstate = (GLThreadState *)current->value;
+ MY_MODULE_TSTATE *cur_tstate_tm = NULL;
+
+ GET_MY_TSTATE(cur_tstate_tm, cur_tstate);
+ AST(cur_tstate_tm != NULL);
TRACE(" %c Thread [%12d] : Surf <D=[%12p] R=[%12p]>",
- (tstate == cur_tstate) ? '*' : ' ',
+ (tstate == cur_tstate_tm) ? '*' : ' ',
cur_tstate->thread_id,
- cur_tstate->rsurf_draw,
- cur_tstate->rsurf_read);
+ cur_tstate_tm->rsurf_draw,
+ cur_tstate_tm->rsurf_read);
- if (cur_tstate->cstate != NULL)
+ if (cur_tstate_tm->cstate != NULL)
{
TRACE(" GlueCTX=[%12p] RealCTX=[%12p]\E[0m\n",
- cur_tstate->cstate->data,
- cur_tstate->cstate);
+ cur_tstate_tm->cstate->data,
+ cur_tstate_tm->cstate);
}
else
{
while (current != NULL)
{
GLContextState *cur_cstate = (GLContextState *)current->value;
+ MY_MODULE_TSTATE *cur_tstate_tm = NULL;
+
+ GET_MY_TSTATE(cur_tstate_tm, cur_tstate);
+ AST(cur_tstate_tm != NULL);
- if (cur_tstate->cstate == cur_cstate)
+ if (cur_tstate_tm->cstate == cur_cstate)
{
TRACE(" -> RealCTX [%12p] : EGLDPY=[%12p] EGLCTX=[%12p] <[%2d] GlueCTXs>\E[0m\n",
cur_cstate,
while (current_t != NULL)
{
GLThreadState *cur_tstate = (GLThreadState *)current_t->value;
+ MY_MODULE_TSTATE *cur_tstate_tm = NULL;
+
+ GET_MY_TSTATE(cur_tstate_tm, cur_tstate);
+ AST(cur_tstate_tm != NULL);
if (cur_tstate->thread_id == ((GLGlueContext *)cur_cstate->data)->thread_id)
{
- if (cur_tstate->cstate == cur_cstate)
+ if (cur_tstate_tm->cstate == cur_cstate)
isbinded = 1;
break;
}
}
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
typedef struct
if (cstate->ref_count == 0)
{
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
AST(cstate->data == NULL || cstate->data == initial_ctx);
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
remove_from_general_trace_list(&context_state_trace_list, cstate);
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
- AST(remove_context_states_from_list(cstate, ctx_list_mtx) == 1);
+ AST(fastpath_remove_context_states_from_list(cstate, ctx_list_mtx) == 1);
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
if (tstate != NULL)
{
if (tstate->cstate == cstate)
{
- _sym_eglMakeCurrent(cstate->rdpy, tstate->rsurf_draw, tstate->rsurf_read, EGL_NO_CONTEXT);
+ _orig_fastpath_eglMakeCurrent(cstate->rdpy, tstate->rsurf_draw, tstate->rsurf_read, EGL_NO_CONTEXT);
tstate->cstate = NULL;
}
}
- _sym_eglDestroyContext(cstate->rdpy, cstate->rctx);
+ _orig_fastpath_eglDestroyContext(cstate->rdpy, cstate->rctx);
free(cstate);
cstate = NULL;
}
gctx->ref_count--;
if (gctx->ref_count == 0)
{
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
remove_from_general_trace_list(&glue_ctx_trace_list, gctx);
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
_unlink_context_state(gctx, ctx_list_mtx);
AST(newctx != NULL);
AST(curctx != NULL);
- make_context_current(curctx, newctx);
+ fastpath_make_context_current(curctx, newctx);
cstate->data = (void *)newctx;
_remove_context_ref(curctx, ctx_list_mtx);
_add_context_ref(newctx);
}
// Find context state
- cstate = get_context_state_from_list(real_ctx_option, sizeof(EGL_packed_option), &ctx_list_access_mutex);
+ cstate = fastpath_get_context_state_from_list(real_ctx_option, sizeof(EGL_packed_option), &ctx_list_access_mutex);
// Create a real context if it hasn't been created
if (cstate == NULL)
}
AST(mutex_unlock(&ctx_list_access_mutex) == 1);
- *ctx = _sym_eglCreateContext(dpy, config, real_share_context, attrib_list);
+ *ctx = _orig_fastpath_eglCreateContext(dpy, config, real_share_context, attrib_list);
if (*ctx == EGL_NO_CONTEXT)
{
(*cstate_new)->rdpy = dpy;
(*cstate_new)->data = NULL;
- AST(add_context_state_to_list(real_ctx_option, sizeof(EGL_packed_option), *cstate_new, &ctx_list_access_mutex) == 1);
+ AST(fastpath_add_context_state_to_list(real_ctx_option, sizeof(EGL_packed_option), *cstate_new, &ctx_list_access_mutex) == 1);
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
add_to_general_trace_list(&context_state_trace_list, *cstate_new);
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
cstate = *cstate_new;
}
}
-
-
-//----------------------------------------------------------------//
-// Fastpath EGL Functions //
-// The functions have prefix 'fpgl_' for (fastpath gl) //
-//----------------------------------------------------------------//
-
-extern EGLBoolean (*wrp_eglBindAPI)(EGLenum api);
-extern EGLenum (*wrp_eglQueryAPI)(void);
extern EGLBoolean (*ovr_eglBindAPI)(EGLenum api);
extern EGLenum (*ovr_eglQueryAPI)(void);
EGLBoolean
-fpgl_eglBindAPI(EGLenum api)
+fastpath_eglBindAPI(EGLenum api)
{
EGLBoolean ret = EGL_FALSE;
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
- _COREGL_FAST_FUNC_BEGIN();
- if (api_opt == COREGL_UNKNOWN_PATH)
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ if (fp_opt == FP_UNKNOWN_PATH)
{
ERR("\E[0;31;1mERROR : Invalid library link! (CoreGL path option is invalid)\E[0m\n");
goto finish;
}
- ret = _sym_eglBindAPI(api);
+ ret = _orig_fastpath_eglBindAPI(api);
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
if (tstate == NULL)
{
AST(init_new_thread_state() == 1);
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
AST(tstate != NULL);
}
{
- EGLenum newapi = _sym_eglQueryAPI();
+ EGLenum newapi = _orig_fastpath_eglQueryAPI();
if (tstate->binded_api != newapi)
{
if (newapi != EGL_OPENGL_ES_API)
{
// Fallback when binding other API
// Fastpath restores when bind OPENGL_ES_API
- override_glue_normal_path();
- if (trace_api_flag == 1)
- {
- wrp_eglBindAPI = fpgl_eglBindAPI;
- wrp_eglQueryAPI = fpgl_eglQueryAPI;
- }
- else
- {
- ovr_eglBindAPI = fpgl_eglBindAPI;
- ovr_eglQueryAPI = fpgl_eglQueryAPI;
- }
+ fastpath_apply_overrides_egl(0);
+ ovr_eglBindAPI = fastpath_eglBindAPI;
+ ovr_eglQueryAPI = fastpath_eglQueryAPI;
}
else
{
- override_glue_fast_path();
+ fastpath_apply_overrides_egl(1);
}
tstate->binded_api = newapi;
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
EGLenum
-fpgl_eglQueryAPI(void)
+fastpath_eglQueryAPI(void)
{
EGLenum ret = 0;
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
- _COREGL_FAST_FUNC_BEGIN();
- if (api_opt == COREGL_UNKNOWN_PATH)
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ if (fp_opt == FP_UNKNOWN_PATH)
{
ERR("\E[0;31;1mERROR : Invalid library link! (CoreGL path option is invalid)\E[0m\n");
goto finish;
}
- ret = _sym_eglQueryAPI();
+ ret = _orig_fastpath_eglQueryAPI();
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
if (tstate != NULL)
{
AST(tstate->binded_api == ret);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
EGLContext
-fpgl_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)
+fastpath_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)
{
GLGlueContext *gctx = NULL;
GLGlueContext_List *gctx_list_new = NULL;
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
GLContextState *cstate = NULL;
GLContextState *cstate_new = NULL;
GL_Shared_Object_State *sostate_new = NULL;
EGL_packed_sharable_option *real_ctx_sharable_option = NULL;
// Special eject condition for binding API
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
if (tstate != NULL && tstate->binded_api != EGL_OPENGL_ES_API)
{
- return _sym_eglCreateContext(dpy, config, share_context, attrib_list);
+ return _orig_fastpath_eglCreateContext(dpy, config, share_context, attrib_list);
}
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
real_ctx_option = (EGL_packed_option *)calloc(1, sizeof(EGL_packed_option));
if (real_ctx_option == NULL)
AST(mutex_unlock(&ctx_list_access_mutex) == 1);
}
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
{
char ment[256];
sprintf(ment, "eglCreateContext completed (GlueCTX=[%12p])", gctx);
_dump_context_info(ment, 1);
}
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
goto finish;
{
if (ctx != NULL)
{
- _sym_eglDestroyContext(dpy, ctx);
+ _orig_fastpath_eglDestroyContext(dpy, ctx);
ctx = NULL;
}
if (sostate_new != NULL)
}
if (cstate_new != NULL)
{
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
remove_from_general_trace_list(&context_state_trace_list, cstate_new);
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
- remove_context_states_from_list(cstate_new, &ctx_list_access_mutex);
+ fastpath_remove_context_states_from_list(cstate_new, &ctx_list_access_mutex);
free(cstate_new);
cstate_new = NULL;
}
}
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return (EGLContext)gctx;
}
EGLBoolean
-fpgl_eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
+fastpath_eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
{
EGLBoolean ret = EGL_FALSE;
GLGlueContext *gctx = NULL;
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
gctx = (GLGlueContext *)ctx;
if (gctx->magic != MAGIC_GLFAST)
{
- ret = _sym_eglDestroyContext(dpy, ctx);
+ ret = _orig_fastpath_eglDestroyContext(dpy, ctx);
goto finish;
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
{
char ment[256];
sprintf(ment, "eglDestroyContext completed (GlueCTX=[%12p])", ctx);
_dump_context_info(ment, 1);
}
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
return ret;
}
EGLBoolean
-fpgl_eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
+fastpath_eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
{
EGLBoolean ret = EGL_FALSE;
EGLContext real_ctx = EGL_NO_CONTEXT;
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
if (ctx != EGL_NO_CONTEXT)
{
}
}
- _COREGL_FAST_FUNC_SYMCALL_BEGIN();
- ret = _sym_eglQueryContext(dpy, real_ctx, attribute, value);
- _COREGL_FAST_FUNC_SYMCALL_END();
+ ret = _orig_fastpath_eglQueryContext(dpy, real_ctx, attribute, value);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
EGLBoolean
-fpgl_eglReleaseThread(void)
+fastpath_eglReleaseThread(void)
{
EGLBoolean ret = EGL_FALSE;
EGLDisplay dpy = EGL_NO_DISPLAY;
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
// Special eject condition for binding API
if (tstate != NULL && tstate->binded_api != EGL_OPENGL_ES_API)
{
- return _sym_eglReleaseThread();
+ return _orig_fastpath_eglReleaseThread();
}
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
- dpy = _sym_eglGetCurrentDisplay();
+ dpy = _orig_fastpath_eglGetCurrentDisplay();
AST(dpy != EGL_NO_DISPLAY);
- fpgl_eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
- ret = _sym_eglReleaseThread();
+ fastpath_eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ ret = _orig_fastpath_eglReleaseThread();
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
EGLBoolean
-fpgl_eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
+fastpath_eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
{
EGLBoolean ret = EGL_FALSE;
EGLBoolean need_mc = EGL_FALSE;
GLGlueContext *gctx = NULL;
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
GLContextState *cstate = NULL;
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
// Special eject condition for binding API
if (tstate != NULL && tstate->binded_api != EGL_OPENGL_ES_API)
{
- return _sym_eglMakeCurrent(dpy, draw, read, ctx);
+ return _orig_fastpath_eglMakeCurrent(dpy, draw, read, ctx);
}
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
gctx = (GLGlueContext *)ctx;
{
AST(init_new_thread_state() == 1);
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
AST(tstate != NULL);
}
_bind_context_state(NULL, tstate->cstate, &ctx_list_access_mutex);
tstate->cstate = NULL;
}
- if (_sym_eglMakeCurrent(dpy, draw, read, ctx) != EGL_TRUE)
+ if (_orig_fastpath_eglMakeCurrent(dpy, draw, read, ctx) != EGL_TRUE)
{
ERR("WARNING : Error making context [%p] current. (invalid EGL display [%p] or EGL surface [D:%p/R:%p])\n", ctx, dpy, draw, read);
ret = EGL_FALSE;
// If it's a first time or drawable changed, do a make current
if (cstate == NULL)
{
- cstate = get_context_state_from_list(gctx->real_ctx_option, gctx->real_ctx_option_len, &ctx_list_access_mutex);
+ cstate = fastpath_get_context_state_from_list(gctx->real_ctx_option, gctx->real_ctx_option_len, &ctx_list_access_mutex);
if (cstate == NULL)
{
if (need_mc == EGL_TRUE)
{
// BB : full makecurrent
- if (_sym_eglMakeCurrent(dpy, draw, read, gctx->cstate->rctx) != EGL_TRUE)
+ if (_orig_fastpath_eglMakeCurrent(dpy, draw, read, gctx->cstate->rctx) != EGL_TRUE)
{
ERR("Error making context current with the drawable.\n");
ret = EGL_FALSE;
// Initialize context states
if (gctx->initialized == 0)
{
- if (init_context_states(gctx) != 1)
+ if (fastpath_init_context_states(gctx) != 1)
{
ERR("Error intializing context\n");
goto finish;
EGLint width = 0;
EGLint height = 0;
- _sym_glGetIntegerv(GL_VIEWPORT, box_buffer);
+ _orig_fastpath_glGetIntegerv(GL_VIEWPORT, box_buffer);
width = box_buffer[2];
height = box_buffer[3];
gctx->gl_viewport[2] = width;
gctx->gl_viewport[3] = height;
- _sym_glGetIntegerv(GL_SCISSOR_BOX, box_buffer);
+ _orig_fastpath_glGetIntegerv(GL_SCISSOR_BOX, box_buffer);
width = box_buffer[2];
height = box_buffer[3];
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
-#ifdef COREGL_TRACE_CONTEXT_INFO
+#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
{
char ment[256];
sprintf(ment, "eglMakeCurrent finished (GlueCTX=[%12p] Surf=[D:%12p R:%12p])", ctx, draw, read);
_dump_context_info(ment, 0);
}
-#endif // COREGL_TRACE_CONTEXT_INFO
+#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
return ret;
}
EGLContext
-fpgl_eglGetCurrentContext(void)
+fastpath_eglGetCurrentContext(void)
{
GLGlueContext *ret = NULL;
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
// Special eject condition for binding API
if (tstate != NULL && tstate->binded_api != EGL_OPENGL_ES_API)
{
- return _sym_eglGetCurrentContext();
+ return _orig_fastpath_eglGetCurrentContext();
}
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
if (tstate != NULL)
{
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return (EGLContext)ret;
}
EGLSurface
-fpgl_eglGetCurrentSurface(EGLint readdraw)
+fastpath_eglGetCurrentSurface(EGLint readdraw)
{
EGLSurface ret = EGL_NO_SURFACE;
- GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate = NULL;
- tstate = get_current_thread_state();
+ GET_MY_TSTATE(tstate, get_current_thread_state());
// Special eject condition for binding API
if (tstate != NULL && tstate->binded_api != EGL_OPENGL_ES_API)
{
- return _sym_eglGetCurrentSurface(readdraw);
+ return _orig_fastpath_eglGetCurrentSurface(readdraw);
}
- _COREGL_FAST_FUNC_BEGIN();
-
- tstate = get_current_thread_state();
+ _COREGL_FASTPATH_FUNC_BEGIN();
if (tstate != NULL)
{
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
EGLImageKHR
-fpgl_eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
+fastpath_eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
{
void *ret = NULL;
EGLContext real_ctx = EGL_NO_CONTEXT;
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
if (ctx != NULL && ctx != EGL_NO_CONTEXT)
{
real_ctx = gctx->cstate->rctx;
}
}
- ret = _sym_eglCreateImageKHR(dpy, real_ctx, target, buffer, attrib_list);
+ ret = _orig_fastpath_eglCreateImageKHR(dpy, real_ctx, target, buffer, attrib_list);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
_eng_fn
-fpgl_eglGetProcAddress(const char* procname)
+fastpath_eglGetProcAddress(const char* procname)
{
_eng_fn ret = NULL;
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) \
if (strcmp(procname, #FUNC_NAME) == 0) \
ret = (_eng_fn)FUNC_NAME; \
goto finish; \
}
-#include "headers/sym_egl.h"
-#include "headers/sym_gl.h"
+#include "../../headers/sym_egl.h"
+#include "../../headers/sym_gl.h"
#undef _COREGL_SYMBOL
- ret = _sym_eglGetProcAddress(procname);
+ ret = _orig_fastpath_eglGetProcAddress(procname);
if (ret != NULL)
{
LOG("\E[40;31;1mWARNING : COREGL can't support '%s' (unmanaged situation may occur)\E[0m\n", procname);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
EGLBoolean
-fpgl_eglTerminate(EGLDisplay dpy)
+fastpath_eglTerminate(EGLDisplay dpy)
{
EGLBoolean ret = EGL_FALSE;
GLGlueContext_List *current = NULL;
GLGlueContext_List *remove_list = NULL;
- _COREGL_FAST_FUNC_BEGIN();
+ _COREGL_FASTPATH_FUNC_BEGIN();
AST(mutex_lock(&ctx_list_access_mutex) == 1);
current = gctx_list;
current = remove_list;
while (current != NULL)
{
- fpgl_eglDestroyContext(dpy, current->gctx);
+ fastpath_eglDestroyContext(dpy, current->gctx);
remove_list = current->next;
free(current);
current = remove_list;
}
- ret = _sym_eglTerminate(dpy);
+ ret = _orig_fastpath_eglTerminate(dpy);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
#include <stdlib.h>
-//----------------------------------------------------------------//
-// //
-// Fastpath GL Functions //
-// The functions have prefix 'fpgl_' for (fastpath gl) //
-// //
-//----------------------------------------------------------------//
-
#define CURR_STATE_COMPARE(curr_state, state ) \
if ((current_ctx->curr_state[0]) != (state))
-#define DEFINE_FAST_GL_FUNC() \
- GLThreadState *tstate = NULL; \
+#define DEFINE_FASTPAH_GL_FUNC() \
+ MY_MODULE_TSTATE *tstate = NULL; \
GLGlueContext *current_ctx = NULL;
-#define INIT_FAST_GL_FUNC() \
- tstate = get_current_thread_state(); \
+#define INIT_FASTPATH_GL_FUNC() \
+ GET_MY_TSTATE(tstate, get_current_thread_state()); \
if (tstate == NULL || tstate->cstate == NULL) \
{ \
ERR("\E[0;31;1mWARNING : '%s' called when GLES2 context is not binded (Check MakeCurrent)!\E[0m\n", __func__); \
else
{
AST(sostate != NULL);
- *real_handle = sostate_get_object(sostate, type, glue_handle);
+ *real_handle = fastpath_sostate_get_object(sostate, type, glue_handle);
if (*real_handle == 0)
return 0;
}
else
{
AST(sostate != NULL);
- *glue_handle = sostate_find_object(sostate, type, real_handle);
+ *glue_handle = fastpath_sostate_find_object(sostate, type, real_handle);
if (*glue_handle == 0)
return 0;
}
_set_gl_error(GLenum error)
{
GLenum glerror = GL_NONE;
- DEFINE_FAST_GL_FUNC();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ INIT_FASTPATH_GL_FUNC();
- glerror = _sym_glGetError();
+ glerror = _orig_fastpath_glGetError();
if (current_ctx->gl_error == GL_NO_ERROR &&
glerror == GL_NO_ERROR &&
}
GLenum
-fpgl_glGetError(void)
+fastpath_glGetError(void)
{
GLenum ret = GL_NONE;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (current_ctx->gl_error != GL_NO_ERROR)
{
}
else
{
- ret = _sym_glGetError();
+ ret = _orig_fastpath_glGetError();
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
////////////////////////////////////////////////////////////////////////
void
-fpgl_glActiveTexture(GLenum texture)
+fastpath_glActiveTexture(GLenum texture)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_active_texture, texture)
{
- _sym_glActiveTexture(texture);
+ _orig_fastpath_glActiveTexture(texture);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGenTextures(GLsizei n, GLuint* textures)
+fastpath_glGenTextures(GLsizei n, GLuint* textures)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (textures == NULL) goto finish;
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- _sym_glGenTextures(n, objid_array);
+ _orig_fastpath_glGenTextures(n, objid_array);
for (i = 0; i < n; i++)
{
- textures[i] = sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_TEXTURE, objid_array[i]);
+ textures[i] = fastpath_sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_TEXTURE, objid_array[i]);
}
goto finish;
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glBindTexture(GLenum target, GLuint texture)
+fastpath_glBindTexture(GLenum target, GLuint texture)
{
int active_idx;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
active_idx = current_ctx->gl_active_texture[0] - GL_TEXTURE0;
{
if (current_ctx->gl_tex_2d_state[active_idx] != real_obj)
{
- _sym_glBindTexture(target, real_obj);
+ _orig_fastpath_glBindTexture(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
{
if (current_ctx->gl_tex_cube_state[active_idx] != real_obj)
{
- _sym_glBindTexture(target, real_obj);
+ _orig_fastpath_glBindTexture(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+fastpath_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1)
{
goto finish;
}
- _sym_glFramebufferTexture2D(target, attachment, textarget, real_obj, level);
+ _orig_fastpath_glFramebufferTexture2D(target, attachment, textarget, real_obj, level);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+fastpath_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1)
{
goto finish;
}
- _sym_glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, real_obj, level, samples);
+ _orig_fastpath_glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, real_obj, level, samples);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
GLboolean
-fpgl_glIsTexture(GLuint texture)
+fastpath_glIsTexture(GLuint texture)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glIsTexture(real_obj);
+ ret = _orig_fastpath_glIsTexture(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glDeleteTextures(GLsizei n, const GLuint* textures)
+fastpath_glDeleteTextures(GLsizei n, const GLuint* textures)
{
int i, j;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (textures == NULL) goto finish;
int real_objid = _COREGL_INT_INIT_VALUE;
if (textures[i] == 0) continue;
- real_objid = sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_TEXTURE, textures[i]);
+ real_objid = fastpath_sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_TEXTURE, textures[i]);
if (real_objid == 0) continue;
- sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_TEXTURE, textures[i]);
+ fastpath_sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_TEXTURE, textures[i]);
objid_array[real_n++] = real_objid;
}
- _sym_glDeleteTextures(real_n, objid_array);
+ _orig_fastpath_glDeleteTextures(real_n, objid_array);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
for (i = 0; i < real_n; i++)
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
////////////////////////////////////////////////////////////////////////
void
-fpgl_glGenBuffers(GLsizei n, GLuint* buffers)
+fastpath_glGenBuffers(GLsizei n, GLuint* buffers)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (buffers == NULL) goto finish;
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- _sym_glGenBuffers(n, objid_array);
+ _orig_fastpath_glGenBuffers(n, objid_array);
for (i = 0; i < n; i++)
{
- buffers[i] = sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_BUFFER, objid_array[i]);
+ buffers[i] = fastpath_sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_BUFFER, objid_array[i]);
}
goto finish;
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glBindBuffer(GLenum target, GLuint buffer)
+fastpath_glBindBuffer(GLenum target, GLuint buffer)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1)
{
{
CURR_STATE_COMPARE(gl_array_buffer_binding, real_obj)
{
- _sym_glBindBuffer(target, real_obj);
+ _orig_fastpath_glBindBuffer(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
{
CURR_STATE_COMPARE(gl_element_array_buffer_binding, real_obj)
{
- _sym_glBindBuffer(target, real_obj);
+ _orig_fastpath_glBindBuffer(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
if (real_obj == 0)
else
{
// For error recording
- _sym_glBindBuffer(target, real_obj);
+ _orig_fastpath_glBindBuffer(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
GLboolean
-fpgl_glIsBuffer(GLuint buffer)
+fastpath_glIsBuffer(GLuint buffer)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glIsBuffer(real_obj);
+ ret = _orig_fastpath_glIsBuffer(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glDeleteBuffers(GLsizei n, const GLuint* buffers)
+fastpath_glDeleteBuffers(GLsizei n, const GLuint* buffers)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (buffers == NULL) goto finish;
int real_objid = _COREGL_INT_INIT_VALUE;
if (buffers[i] == 0) continue;
- real_objid = sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_BUFFER, buffers[i]);
+ real_objid = fastpath_sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_BUFFER, buffers[i]);
if (real_objid == 0) continue;
- sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_BUFFER, buffers[i]);
+ fastpath_sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_BUFFER, buffers[i]);
objid_array[real_n++] = real_objid;
}
- _sym_glDeleteBuffers(real_n, objid_array);
+ _orig_fastpath_glDeleteBuffers(real_n, objid_array);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
for (i = 0; i < real_n; i++)
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
//////////////////////////////////////////////////////////////////////////////////
void
-fpgl_glGenFramebuffers(GLsizei n, GLuint* framebuffers)
+fastpath_glGenFramebuffers(GLsizei n, GLuint* framebuffers)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (framebuffers == NULL) goto finish;
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- _sym_glGenFramebuffers(n, objid_array);
+ _orig_fastpath_glGenFramebuffers(n, objid_array);
for (i = 0; i < n; i++)
{
- framebuffers[i] = sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_FRAMEBUFFER, objid_array[i]);
+ framebuffers[i] = fastpath_sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_FRAMEBUFFER, objid_array[i]);
}
goto finish;
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glBindFramebuffer(GLenum target, GLuint framebuffer)
+fastpath_glBindFramebuffer(GLenum target, GLuint framebuffer)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1)
{
{
CURR_STATE_COMPARE(gl_framebuffer_binding, real_obj)
{
- _sym_glBindFramebuffer(target, real_obj);
+ _orig_fastpath_glBindFramebuffer(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
if (real_obj == 0)
else
{
// For error recording
- _sym_glBindFramebuffer(target, real_obj);
+ _orig_fastpath_glBindFramebuffer(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
GLboolean
-fpgl_glIsFramebuffer(GLuint framebuffer)
+fastpath_glIsFramebuffer(GLuint framebuffer)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glIsFramebuffer(real_obj);
+ ret = _orig_fastpath_glIsFramebuffer(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
+fastpath_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (framebuffers == NULL) goto finish;
int real_objid = _COREGL_INT_INIT_VALUE;
if (framebuffers[i] == 0) continue;
- real_objid = sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_FRAMEBUFFER, framebuffers[i]);
+ real_objid = fastpath_sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_FRAMEBUFFER, framebuffers[i]);
if (real_objid == 0) continue;
- sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_FRAMEBUFFER, framebuffers[i]);
+ fastpath_sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_FRAMEBUFFER, framebuffers[i]);
objid_array[real_n++] = real_objid;
}
- _sym_glDeleteFramebuffers(real_n, objid_array);
+ _orig_fastpath_glDeleteFramebuffers(real_n, objid_array);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
for (i = 0; i < real_n; i++)
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
//////////////////////////////////////////////////////////////////////////////////
void
-fpgl_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
+fastpath_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (renderbuffers == NULL) goto finish;
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- _sym_glGenRenderbuffers(n, objid_array);
+ _orig_fastpath_glGenRenderbuffers(n, objid_array);
for (i = 0; i < n; i++)
{
- renderbuffers[i] = sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_RENDERBUFFER, objid_array[i]);
+ renderbuffers[i] = fastpath_sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_RENDERBUFFER, objid_array[i]);
}
goto finish;
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
+fastpath_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1)
{
{
CURR_STATE_COMPARE(gl_renderbuffer_binding, real_obj)
{
- _sym_glBindRenderbuffer(target, real_obj);
+ _orig_fastpath_glBindRenderbuffer(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
if (real_obj == 0)
else
{
// For error recording
- _sym_glBindRenderbuffer(target, real_obj);
+ _orig_fastpath_glBindRenderbuffer(target, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+fastpath_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1)
{
goto finish;
}
- _sym_glFramebufferRenderbuffer(target, attachment, renderbuffertarget, real_obj);
+ _orig_fastpath_glFramebufferRenderbuffer(target, attachment, renderbuffertarget, real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
GLboolean
-fpgl_glIsRenderbuffer(GLuint renderbuffer)
+fastpath_glIsRenderbuffer(GLuint renderbuffer)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glIsRenderbuffer(real_obj);
+ ret = _orig_fastpath_glIsRenderbuffer(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
+fastpath_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (renderbuffers == NULL) goto finish;
int real_objid = _COREGL_INT_INIT_VALUE;
if (renderbuffers[i] == 0) continue;
- real_objid = sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_RENDERBUFFER, renderbuffers[i]);
+ real_objid = fastpath_sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_RENDERBUFFER, renderbuffers[i]);
if (real_objid == 0) continue;
- sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_RENDERBUFFER, renderbuffers[i]);
+ fastpath_sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_RENDERBUFFER, renderbuffers[i]);
objid_array[real_n++] = real_objid;
}
- _sym_glDeleteRenderbuffers(real_n, objid_array);
+ _orig_fastpath_glDeleteRenderbuffers(real_n, objid_array);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
for (i = 0; i < real_n; i++)
free(objid_array);
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
//////////////////////////////////////////////////////////////////////////////////
GLuint
-fpgl_glCreateProgram(void)
+fastpath_glCreateProgram(void)
{
GLuint ret = _COREGL_INT_INIT_VALUE;
GLuint real_obj = _COREGL_INT_INIT_VALUE;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
AST(current_ctx->sostate != NULL);
- real_obj = _sym_glCreateProgram();
+ real_obj = _orig_fastpath_glCreateProgram();
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- ret = sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, real_obj);
+ ret = fastpath_sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, real_obj);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
GLuint
-fpgl_glCreateShader(GLenum type)
+fastpath_glCreateShader(GLenum type)
{
GLuint ret = _COREGL_INT_INIT_VALUE;
GLuint real_obj = _COREGL_INT_INIT_VALUE;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
AST(current_ctx->sostate != NULL);
- real_obj = _sym_glCreateShader(type);
+ real_obj = _orig_fastpath_glCreateShader(type);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
- ret = sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, real_obj);
+ ret = fastpath_sostate_create_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, real_obj);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
+fastpath_glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj) != 1)
{
_set_gl_error(GL_INVALID_VALUE);
goto finish;
}
- _sym_glShaderSource(real_obj, count, string, length);
+ _orig_fastpath_glShaderSource(real_obj, count, string, length);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length)
+fastpath_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length)
{
int i;
GLuint *objid_array = NULL;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (shaders == NULL) goto finish;
for (i = 0; i < n; i++)
{
if (shaders[i] == 0) continue;
- objid_array[i] = sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, shaders[i]);
+ objid_array[i] = fastpath_sostate_get_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, shaders[i]);
}
-#ifndef _COREGL_DESKTOP_GL
- _sym_glShaderBinary(n, objid_array, binaryformat, binary, length);
+ _orig_fastpath_glShaderBinary(n, objid_array, binaryformat, binary, length);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
-#else
-// FIXME: need to dlsym/getprocaddress for this
- /*
- n = binaryformat = length = 0;
- shaders = binary = 0;
- */
-#endif
goto finish;
finish:
objid_array = NULL;
}
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glCompileShader(GLuint shader)
+fastpath_glCompileShader(GLuint shader)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj) != 1)
{
goto finish;
}
- _sym_glCompileShader(real_obj);
+ _orig_fastpath_glCompileShader(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glBindAttribLocation(GLuint program, GLuint index, const char* name)
+fastpath_glBindAttribLocation(GLuint program, GLuint index, const char* name)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glBindAttribLocation(real_obj, index, name);
+ _orig_fastpath_glBindAttribLocation(real_obj, index, name);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glAttachShader(GLuint program, GLuint shader)
+fastpath_glAttachShader(GLuint program, GLuint shader)
{
GLuint real_obj_program;
GLuint real_obj_shader;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj_program) != 1 ||
GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj_shader) != 1)
goto finish;
}
- _sym_glAttachShader(real_obj_program, real_obj_shader);
+ _orig_fastpath_glAttachShader(real_obj_program, real_obj_shader);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDetachShader(GLuint program, GLuint shader)
+fastpath_glDetachShader(GLuint program, GLuint shader)
{
GLuint real_obj_program;
GLuint real_obj_shader;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj_program) != 1 ||
GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj_shader) != 1)
goto finish;
}
- _sym_glDetachShader(real_obj_program, real_obj_shader);
+ _orig_fastpath_glDetachShader(real_obj_program, real_obj_shader);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
GLboolean
-fpgl_glIsShader(GLuint shader)
+fastpath_glIsShader(GLuint shader)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glIsShader(real_obj);
+ ret = _orig_fastpath_glIsShader(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
GLboolean
-fpgl_glIsProgram(GLuint program)
+fastpath_glIsProgram(GLuint program)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glIsProgram(real_obj);
+ ret = _orig_fastpath_glIsProgram(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glLinkProgram(GLuint program)
+fastpath_glLinkProgram(GLuint program)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glLinkProgram(real_obj);
+ _orig_fastpath_glLinkProgram(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glValidateProgram(GLuint program)
+fastpath_glValidateProgram(GLuint program)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glValidateProgram(real_obj);
+ _orig_fastpath_glValidateProgram(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glUseProgram(GLuint program)
+fastpath_glUseProgram(GLuint program)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
CURR_STATE_COMPARE(gl_current_program, real_obj)
{
- _sym_glUseProgram(real_obj);
+ _orig_fastpath_glUseProgram(real_obj);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
+fastpath_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetActiveAttrib(real_obj, index, bufsize, length, size, type, name);
+ _orig_fastpath_glGetActiveAttrib(real_obj, index, bufsize, length, size, type, name);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
+fastpath_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetActiveUniform(real_obj, index, bufsize, length, size, type, name);
+ _orig_fastpath_glGetActiveUniform(real_obj, index, bufsize, length, size, type, name);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
+fastpath_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
{
int i;
GLsizei real_count = _COREGL_INT_INIT_VALUE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetAttachedShaders(real_obj, maxcount, &real_count, shaders);
+ _orig_fastpath_glGetAttachedShaders(real_obj, maxcount, &real_count, shaders);
for (i = 0; i < real_count; i++)
{
if (shaders[i] != 0)
- shaders[i] = sostate_find_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, shaders[i]);
+ shaders[i] = fastpath_sostate_find_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, shaders[i]);
}
if (count != NULL) *count = real_count;
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
int
-fpgl_glGetAttribLocation(GLuint program, const char* name)
+fastpath_glGetAttribLocation(GLuint program, const char* name)
{
int ret = _COREGL_INT_INIT_VALUE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glGetAttribLocation(real_obj, name);
+ ret = _orig_fastpath_glGetAttribLocation(real_obj, name);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
+fastpath_glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetShaderiv(real_obj, pname, params);
+ _orig_fastpath_glGetShaderiv(real_obj, pname, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
+fastpath_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetShaderInfoLog(real_obj, bufsize, length, infolog);
+ _orig_fastpath_glGetShaderInfoLog(real_obj, bufsize, length, infolog);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetProgramiv(GLuint program, GLenum pname, GLint* params)
+fastpath_glGetProgramiv(GLuint program, GLenum pname, GLint* params)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetProgramiv(real_obj, pname, params);
+ _orig_fastpath_glGetProgramiv(real_obj, pname, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
+fastpath_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetProgramInfoLog(real_obj, bufsize, length, infolog);
+ _orig_fastpath_glGetProgramInfoLog(real_obj, bufsize, length, infolog);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
+fastpath_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetShaderSource(real_obj, bufsize, length, source);
+ _orig_fastpath_glGetShaderSource(real_obj, bufsize, length, source);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetUniformfv(GLuint program, GLint location, GLfloat* params)
+fastpath_glGetUniformfv(GLuint program, GLint location, GLfloat* params)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetUniformfv(real_obj, location, params);
+ _orig_fastpath_glGetUniformfv(real_obj, location, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetUniformiv(GLuint program, GLint location, GLint* params)
+fastpath_glGetUniformiv(GLuint program, GLint location, GLint* params)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetUniformiv(real_obj, location, params);
+ _orig_fastpath_glGetUniformiv(real_obj, location, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
+fastpath_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glGetProgramBinary(real_obj, bufsize, length, binaryFormat, binary);
+ _orig_fastpath_glGetProgramBinary(real_obj, bufsize, length, binaryFormat, binary);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
+fastpath_glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glProgramBinary(real_obj, binaryFormat, binary, length);
+ _orig_fastpath_glProgramBinary(real_obj, binaryFormat, binary, length);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glProgramParameteri(GLuint program, GLuint pname, GLint value)
+fastpath_glProgramParameteri(GLuint program, GLuint pname, GLint value)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glProgramParameteri(real_obj, pname, value);
+ _orig_fastpath_glProgramParameteri(real_obj, pname, value);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
int
-fpgl_glGetUniformLocation(GLuint program, const char* name)
+fastpath_glGetUniformLocation(GLuint program, const char* name)
{
int ret = _COREGL_INT_INIT_VALUE;
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- ret = _sym_glGetUniformLocation(real_obj, name);
+ ret = _orig_fastpath_glGetUniformLocation(real_obj, name);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
return ret;
}
void
-fpgl_glDeleteShader(GLuint shader)
+fastpath_glDeleteShader(GLuint shader)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, shader, &real_obj) != 1)
{
goto finish;
}
- _sym_glDeleteShader(real_obj);
+ _orig_fastpath_glDeleteShader(real_obj);
if (real_obj != 0)
{
- AST(sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, shader) == 1);
+ AST(fastpath_sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, shader) == 1);
}
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDeleteProgram(GLuint program)
+fastpath_glDeleteProgram(GLuint program)
{
GLuint real_obj;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1)
{
goto finish;
}
- _sym_glDeleteProgram(real_obj);
+ _orig_fastpath_glDeleteProgram(real_obj);
if (real_obj != 0)
{
- AST(sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, program) == 1);
+ AST(fastpath_sostate_remove_object(current_ctx->sostate, GL_OBJECT_TYPE_PROGRAM, program) == 1);
}
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
//////////////////////////////////////////////////////////////////////////////////
void
-fpgl_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+fastpath_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_blend_color[0] != red) ||
(current_ctx->gl_blend_color[1] != green) ||
(current_ctx->gl_blend_color[2] != blue) ||
(current_ctx->gl_blend_color[3] != alpha))
{
- _sym_glBlendColor(red, green, blue, alpha);
+ _orig_fastpath_glBlendColor(red, green, blue, alpha);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
//!!! Optimze?
void
-fpgl_glBlendEquation(GLenum mode)
+fastpath_glBlendEquation(GLenum mode)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glBlendEquation(mode);
+ _orig_fastpath_glBlendEquation(mode);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_blend_flag |= (FLAG_BIT_5 | FLAG_BIT_6);
- _sym_glGetIntegerv(GL_BLEND_EQUATION_RGB, (GLint*) & (current_ctx->gl_blend_equation_rgb));
- _sym_glGetIntegerv(GL_BLEND_EQUATION_ALPHA, (GLint*) & (current_ctx->gl_blend_equation_alpha));
+ _orig_fastpath_glGetIntegerv(GL_BLEND_EQUATION_RGB, (GLint*) & (current_ctx->gl_blend_equation_rgb));
+ _orig_fastpath_glGetIntegerv(GL_BLEND_EQUATION_ALPHA, (GLint*) & (current_ctx->gl_blend_equation_alpha));
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
+fastpath_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_blend_equation_rgb[0] != modeRGB) ||
(current_ctx->gl_blend_equation_alpha[0] != modeAlpha))
{
- _sym_glBlendEquationSeparate(modeRGB, modeAlpha);
+ _orig_fastpath_glBlendEquationSeparate(modeRGB, modeAlpha);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
//!!! Optimze?
void
-fpgl_glBlendFunc(GLenum sfactor, GLenum dfactor)
+fastpath_glBlendFunc(GLenum sfactor, GLenum dfactor)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glBlendFunc(sfactor, dfactor);
+ _orig_fastpath_glBlendFunc(sfactor, dfactor);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_blend_flag |= (FLAG_BIT_1 | FLAG_BIT_2 | FLAG_BIT_3 | FLAG_BIT_4);
- _sym_glGetIntegerv(GL_BLEND_SRC_RGB, (GLint*) & (current_ctx->gl_blend_src_rgb));
- _sym_glGetIntegerv(GL_BLEND_SRC_ALPHA, (GLint*) & (current_ctx->gl_blend_src_alpha));
- _sym_glGetIntegerv(GL_BLEND_DST_RGB, (GLint*) & (current_ctx->gl_blend_dst_rgb));
- _sym_glGetIntegerv(GL_BLEND_DST_ALPHA, (GLint*) & (current_ctx->gl_blend_dst_alpha));
+ _orig_fastpath_glGetIntegerv(GL_BLEND_SRC_RGB, (GLint*) & (current_ctx->gl_blend_src_rgb));
+ _orig_fastpath_glGetIntegerv(GL_BLEND_SRC_ALPHA, (GLint*) & (current_ctx->gl_blend_src_alpha));
+ _orig_fastpath_glGetIntegerv(GL_BLEND_DST_RGB, (GLint*) & (current_ctx->gl_blend_dst_rgb));
+ _orig_fastpath_glGetIntegerv(GL_BLEND_DST_ALPHA, (GLint*) & (current_ctx->gl_blend_dst_alpha));
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+fastpath_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_blend_src_rgb[0] != srcRGB) ||
(current_ctx->gl_blend_dst_rgb[0] != dstRGB) ||
(current_ctx->gl_blend_src_alpha[0] != srcAlpha) ||
(current_ctx->gl_blend_dst_alpha[0] != dstAlpha))
{
- _sym_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
+ _orig_fastpath_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+fastpath_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_color_clear_value[0] != red) ||
(current_ctx->gl_color_clear_value[1] != green) ||
(current_ctx->gl_color_clear_value[2] != blue) ||
(current_ctx->gl_color_clear_value[3] != alpha))
{
- _sym_glClearColor(red, green, blue, alpha);
+ _orig_fastpath_glClearColor(red, green, blue, alpha);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glClearDepthf(GLclampf depth)
+fastpath_glClearDepthf(GLclampf depth)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_depth_clear_value, depth)
{
- _sym_glClearDepthf(depth);
+ _orig_fastpath_glClearDepthf(depth);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glClearStencil(GLint s)
+fastpath_glClearStencil(GLint s)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_stencil_clear_value, s)
{
- _sym_glClearStencil(s);
+ _orig_fastpath_glClearStencil(s);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+fastpath_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_color_writemask[0] != red) ||
(current_ctx->gl_color_writemask[1] != green) ||
(current_ctx->gl_color_writemask[2] != blue) ||
(current_ctx->gl_color_writemask[3] != alpha))
{
- _sym_glColorMask(red, green, blue, alpha);
+ _orig_fastpath_glColorMask(red, green, blue, alpha);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glCullFace(GLenum mode)
+fastpath_glCullFace(GLenum mode)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_cull_face_mode, mode)
{
- _sym_glCullFace(mode);
+ _orig_fastpath_glCullFace(mode);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDepthFunc(GLenum func)
+fastpath_glDepthFunc(GLenum func)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_depth_func, func)
{
- _sym_glDepthFunc(func);
+ _orig_fastpath_glDepthFunc(func);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDepthMask(GLboolean flag)
+fastpath_glDepthMask(GLboolean flag)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_depth_writemask, flag)
{
- _sym_glDepthMask(flag);
+ _orig_fastpath_glDepthMask(flag);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDepthRangef(GLclampf zNear, GLclampf zFar)
+fastpath_glDepthRangef(GLclampf zNear, GLclampf zFar)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_depth_range[0] != zNear) ||
(current_ctx->gl_depth_range[1] != zFar))
{
- _sym_glDepthRangef(zNear, zFar);
+ _orig_fastpath_glDepthRangef(zNear, zFar);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDisable(GLenum cap)
+fastpath_glDisable(GLenum cap)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
switch (cap)
{
case GL_BLEND:
CURR_STATE_COMPARE(gl_blend, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag1 &= (~FLAG_BIT_0);
current_ctx->gl_blend[0] = GL_FALSE;
case GL_CULL_FACE:
CURR_STATE_COMPARE(gl_cull_face, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag1 &= (~FLAG_BIT_1);
current_ctx->gl_cull_face[0] = GL_FALSE;
case GL_DEPTH_TEST:
CURR_STATE_COMPARE(gl_depth_test, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag1 &= (~FLAG_BIT_2);
current_ctx->gl_depth_test[0] = GL_FALSE;
case GL_DITHER:
CURR_STATE_COMPARE(gl_dither, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag1 &= (~FLAG_BIT_3);
current_ctx->gl_dither[0] = GL_FALSE;
case GL_POLYGON_OFFSET_FILL:
CURR_STATE_COMPARE(gl_polygon_offset_fill, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag2 &= (~FLAG_BIT_0);
current_ctx->gl_polygon_offset_fill[0] = GL_FALSE;
case GL_SAMPLE_ALPHA_TO_COVERAGE:
CURR_STATE_COMPARE(gl_sample_alpha_to_coverage, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag2 &= (~FLAG_BIT_1);
current_ctx->gl_sample_alpha_to_coverage[0] = GL_FALSE;
case GL_SAMPLE_COVERAGE:
CURR_STATE_COMPARE(gl_sample_coverage, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag2 &= (~FLAG_BIT_2);
current_ctx->gl_sample_coverage[0] = GL_FALSE;
case GL_SCISSOR_TEST:
CURR_STATE_COMPARE(gl_scissor_test, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag2 &= (~FLAG_BIT_3);
current_ctx->gl_scissor_test[0] = GL_FALSE;
case GL_STENCIL_TEST:
CURR_STATE_COMPARE(gl_stencil_test, GL_FALSE)
{
- _sym_glDisable(cap);
+ _orig_fastpath_glDisable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag2 &= (~FLAG_BIT_4);
current_ctx->gl_stencil_test[0] = GL_FALSE;
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDisableVertexAttribArray(GLuint index)
+fastpath_glDisableVertexAttribArray(GLuint index)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glDisableVertexAttribArray(index);
+ _orig_fastpath_glDisableVertexAttribArray(index);
current_ctx->_vattrib_flag |= FLAG_BIT_1;
current_ctx->gl_vertex_array_enabled[index] = GL_FALSE;
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDrawArrays(GLenum mode, GLint first, GLsizei count)
+fastpath_glDrawArrays(GLenum mode, GLint first, GLsizei count)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glDrawArrays(mode, first, count);
+ _orig_fastpath_glDrawArrays(mode, first, count);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glDrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices)
+fastpath_glDrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glDrawElements(mode, count, type, indices);
+ _orig_fastpath_glDrawElements(mode, count, type, indices);
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glEnable(GLenum cap)
+fastpath_glEnable(GLenum cap)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
switch (cap)
{
case GL_BLEND:
CURR_STATE_COMPARE(gl_blend, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_enable_flag1 |= FLAG_BIT_0;
case GL_CULL_FACE:
CURR_STATE_COMPARE(gl_cull_face, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
case GL_DEPTH_TEST:
CURR_STATE_COMPARE(gl_depth_test, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
case GL_DITHER:
CURR_STATE_COMPARE(gl_dither, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
case GL_POLYGON_OFFSET_FILL:
CURR_STATE_COMPARE(gl_polygon_offset_fill, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
case GL_SAMPLE_ALPHA_TO_COVERAGE:
CURR_STATE_COMPARE(gl_sample_alpha_to_coverage, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
case GL_SAMPLE_COVERAGE:
CURR_STATE_COMPARE(gl_sample_coverage, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
case GL_SCISSOR_TEST:
CURR_STATE_COMPARE(gl_scissor_test, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
case GL_STENCIL_TEST:
CURR_STATE_COMPARE(gl_stencil_test, GL_TRUE)
{
- _sym_glEnable(cap);
+ _orig_fastpath_glEnable(cap);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optimze?
void
-fpgl_glEnableVertexAttribArray(GLuint index)
+fastpath_glEnableVertexAttribArray(GLuint index)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glEnableVertexAttribArray(index);
+ _orig_fastpath_glEnableVertexAttribArray(index);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glFrontFace(GLenum mode)
+fastpath_glFrontFace(GLenum mode)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_front_face, mode)
{
- _sym_glFrontFace(mode);
+ _orig_fastpath_glFrontFace(mode);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
+fastpath_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glGetVertexAttribfv(index, pname, params);
+ _orig_fastpath_glGetVertexAttribfv(index, pname, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
+fastpath_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glGetVertexAttribiv(index, pname, params);
+ _orig_fastpath_glGetVertexAttribiv(index, pname, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
+fastpath_glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glGetVertexAttribPointerv(index, pname, pointer);
+ _orig_fastpath_glGetVertexAttribPointerv(index, pname, pointer);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Fix Maybe?
void
-fpgl_glHint(GLenum target, GLenum mode)
+fastpath_glHint(GLenum target, GLenum mode)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (target == GL_GENERATE_MIPMAP_HINT)
{
CURR_STATE_COMPARE(gl_generate_mipmap_hint, mode)
{
- _sym_glHint(target, mode);
+ _orig_fastpath_glHint(target, mode);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
else
{
// For GL Error to be picked up
- _sym_glHint(target, mode);
+ _orig_fastpath_glHint(target, mode);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glLineWidth(GLfloat width)
+fastpath_glLineWidth(GLfloat width)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
CURR_STATE_COMPARE(gl_line_width, width)
{
- _sym_glLineWidth(width);
+ _orig_fastpath_glLineWidth(width);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glPixelStorei(GLenum pname, GLint param)
+fastpath_glPixelStorei(GLenum pname, GLint param)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (pname == GL_PACK_ALIGNMENT)
{
CURR_STATE_COMPARE(gl_pack_alignment, param)
{
- _sym_glPixelStorei(pname, param);
+ _orig_fastpath_glPixelStorei(pname, param);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
{
CURR_STATE_COMPARE(gl_unpack_alignment, param)
{
- _sym_glPixelStorei(pname, param);
+ _orig_fastpath_glPixelStorei(pname, param);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
else
{
// For GL Error to be picked up
- _sym_glPixelStorei(pname, param);
+ _orig_fastpath_glPixelStorei(pname, param);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glPolygonOffset(GLfloat factor, GLfloat units)
+fastpath_glPolygonOffset(GLfloat factor, GLfloat units)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_polygon_offset_factor[0] != factor) ||
(current_ctx->gl_polygon_offset_units[0] != units))
{
- _sym_glPolygonOffset(factor, units);
+ _orig_fastpath_glPolygonOffset(factor, units);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glSampleCoverage(GLclampf value, GLboolean invert)
+fastpath_glSampleCoverage(GLclampf value, GLboolean invert)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_sample_coverage_value[0] != value) ||
(current_ctx->gl_sample_coverage_invert[0] != invert))
{
- _sym_glSampleCoverage(value, invert);
+ _orig_fastpath_glSampleCoverage(value, invert);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
+fastpath_glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_scissor_box[0] != x) ||
(current_ctx->gl_scissor_box[1] != y) ||
(current_ctx->gl_scissor_box[2] != width) ||
(current_ctx->gl_scissor_box[3] != height))
{
- _sym_glScissor(x, y, width, height);
+ _orig_fastpath_glScissor(x, y, width, height);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glStencilFunc(GLenum func, GLint ref, GLuint mask)
+fastpath_glStencilFunc(GLenum func, GLint ref, GLuint mask)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_stencil_func[0] != func) ||
(current_ctx->gl_stencil_ref[0] != ref) ||
(current_ctx->gl_stencil_back_ref[0] != ref) ||
(current_ctx->gl_stencil_back_value_mask[0] != mask))
{
- _sym_glStencilFunc(func, ref, mask);
+ _orig_fastpath_glStencilFunc(func, ref, mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
+fastpath_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((face == GL_FRONT) || (face == GL_FRONT_AND_BACK))
{
(current_ctx->gl_stencil_ref[0] != ref) ||
(current_ctx->gl_stencil_value_mask[0] != mask))
{
- _sym_glStencilFuncSeparate(face, func, ref, mask);
+ _orig_fastpath_glStencilFuncSeparate(face, func, ref, mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
(current_ctx->gl_stencil_back_ref[0] != ref) ||
(current_ctx->gl_stencil_back_value_mask[0] != mask))
{
- _sym_glStencilFuncSeparate(face, func, ref, mask);
+ _orig_fastpath_glStencilFuncSeparate(face, func, ref, mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
else
{
// Have GL pick up the error
- _sym_glStencilFuncSeparate(face, func, ref, mask);
+ _orig_fastpath_glStencilFuncSeparate(face, func, ref, mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glStencilMask(GLuint mask)
+fastpath_glStencilMask(GLuint mask)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_stencil_writemask[0] != mask) ||
(current_ctx->gl_stencil_back_writemask[0] != mask))
{
- _sym_glStencilMask(mask);
+ _orig_fastpath_glStencilMask(mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glStencilMaskSeparate(GLenum face, GLuint mask)
+fastpath_glStencilMaskSeparate(GLenum face, GLuint mask)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((face == GL_FRONT) || (face == GL_FRONT_AND_BACK))
{
if (current_ctx->gl_stencil_writemask[0] != mask)
{
- _sym_glStencilMaskSeparate(face, mask);
+ _orig_fastpath_glStencilMaskSeparate(face, mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
{
if (current_ctx->gl_stencil_back_writemask[0] != mask)
{
- _sym_glStencilMaskSeparate(face, mask);
+ _orig_fastpath_glStencilMaskSeparate(face, mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
else
{
// Have GL pick up the error
- _sym_glStencilMaskSeparate(face, mask);
+ _orig_fastpath_glStencilMaskSeparate(face, mask);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
+fastpath_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_stencil_fail[0] != fail) ||
(current_ctx->gl_stencil_pass_depth_fail[0] != zfail) ||
(current_ctx->gl_stencil_back_pass_depth_fail[0] != zfail) ||
(current_ctx->gl_stencil_back_pass_depth_pass[0] != zpass))
{
- _sym_glStencilOp(fail, zfail, zpass);
+ _orig_fastpath_glStencilOp(fail, zfail, zpass);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+fastpath_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((face == GL_FRONT) || (face == GL_FRONT_AND_BACK))
{
(current_ctx->gl_stencil_pass_depth_fail[0] != zfail) ||
(current_ctx->gl_stencil_pass_depth_pass[0] != zpass))
{
- _sym_glStencilOpSeparate(face, fail, zfail, zpass);
+ _orig_fastpath_glStencilOpSeparate(face, fail, zfail, zpass);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_stencil_flag1 |= (FLAG_BIT_3 | FLAG_BIT_4 | FLAG_BIT_5);
(current_ctx->gl_stencil_back_pass_depth_fail[0] != zfail) ||
(current_ctx->gl_stencil_back_pass_depth_pass[0] != zpass))
{
- _sym_glStencilOpSeparate(face, fail, zfail, zpass);
+ _orig_fastpath_glStencilOpSeparate(face, fail, zfail, zpass);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
current_ctx->_stencil_flag2 |= (FLAG_BIT_3 | FLAG_BIT_4 | FLAG_BIT_5);
else
{
// For picking up error purpose
- _sym_glStencilOpSeparate(face, fail, zfail, zpass);
+ _orig_fastpath_glStencilOpSeparate(face, fail, zfail, zpass);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib1f(GLuint indx, GLfloat x)
+fastpath_glVertexAttrib1f(GLuint indx, GLfloat x)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib1f(indx, x);
+ _orig_fastpath_glVertexAttrib1f(indx, x);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib1fv(GLuint indx, const GLfloat* values)
+fastpath_glVertexAttrib1fv(GLuint indx, const GLfloat* values)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib1fv(indx, values);
+ _orig_fastpath_glVertexAttrib1fv(indx, values);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
+fastpath_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib2f(indx, x, y);
+ _orig_fastpath_glVertexAttrib2f(indx, x, y);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib2fv(GLuint indx, const GLfloat* values)
+fastpath_glVertexAttrib2fv(GLuint indx, const GLfloat* values)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib2fv(indx, values);
+ _orig_fastpath_glVertexAttrib2fv(indx, values);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
+fastpath_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib3f(indx, x, y, z);
+ _orig_fastpath_glVertexAttrib3f(indx, x, y, z);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib3fv(GLuint indx, const GLfloat* values)
+fastpath_glVertexAttrib3fv(GLuint indx, const GLfloat* values)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib3fv(indx, values);
+ _orig_fastpath_glVertexAttrib3fv(indx, values);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+fastpath_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib4f(indx, x, y, z, w);
+ _orig_fastpath_glVertexAttrib4f(indx, x, y, z, w);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttrib4fv(GLuint indx, const GLfloat* values)
+fastpath_glVertexAttrib4fv(GLuint indx, const GLfloat* values)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttrib4fv(indx, values);
+ _orig_fastpath_glVertexAttrib4fv(indx, values);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
// Optmize?
void
-fpgl_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
+fastpath_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
- _sym_glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
+ _orig_fastpath_glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
+fastpath_glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if ((current_ctx->gl_viewport[0] != x) ||
(current_ctx->gl_viewport[1] != y) ||
(current_ctx->gl_viewport[2] != width) ||
(current_ctx->gl_viewport[3] != height))
{
- _sym_glViewport(x, y, width, height);
+ _orig_fastpath_glViewport(x, y, width, height);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
+fastpath_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
{
int tex_idx;
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
tex_idx = current_ctx->gl_active_texture[0] - GL_TEXTURE0;
break;
}
- _sym_glEGLImageTargetTexture2DOES(target, image);
+ _orig_fastpath_glEGLImageTargetTexture2DOES(target, image);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
#define TRANS_VALUE(index, value) \
{
GLboolean ret = GL_FALSE;
- DEFINE_FAST_GL_FUNC();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ INIT_FASTPATH_GL_FUNC();
switch (pname)
{
GLint real_obj_id = _COREGL_INT_INIT_VALUE;
GLuint glue_obj_id = _COREGL_INT_INIT_VALUE;
GL_Object_Type obj_type = GL_OBJECT_TYPE_UNKNOWN;
- _sym_glGetIntegerv(pname, (GLint *)&real_obj_id);
+ _orig_fastpath_glGetIntegerv(pname, (GLint *)&real_obj_id);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
void
-fpgl_glGetBooleanv(GLenum pname, GLboolean* params)
+fastpath_glGetBooleanv(GLenum pname, GLboolean* params)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (_process_getfunc(pname, params, GL_BOOL) != GL_TRUE)
{
- _sym_glGetBooleanv(pname, params);
+ _orig_fastpath_glGetBooleanv(pname, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetFloatv(GLenum pname, GLfloat* params)
+fastpath_glGetFloatv(GLenum pname, GLfloat* params)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (_process_getfunc(pname, params, GL_FLOAT) != GL_TRUE)
{
- _sym_glGetFloatv(pname, params);
+ _orig_fastpath_glGetFloatv(pname, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
void
-fpgl_glGetIntegerv(GLenum pname, GLint* params)
+fastpath_glGetIntegerv(GLenum pname, GLint* params)
{
- DEFINE_FAST_GL_FUNC();
- _COREGL_FAST_FUNC_BEGIN();
- INIT_FAST_GL_FUNC();
+ DEFINE_FASTPAH_GL_FUNC();
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ INIT_FASTPATH_GL_FUNC();
if (_process_getfunc(pname, params, GL_INT) != GL_TRUE)
{
- _sym_glGetIntegerv(pname, params);
+ _orig_fastpath_glGetIntegerv(pname, params);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
}
goto finish;
finish:
- _COREGL_FAST_FUNC_END();
+ _COREGL_FASTPATH_FUNC_END();
}
--- /dev/null
+#include "coregl_tracepath.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) RET_TYPE (*_orig_tracepath_##FUNC_NAME) PARAM_LIST = NULL;
+#include "../../headers/sym.h"
+#undef _COREGL_SYMBOL
+
+#define TIMEVAL_INIT { 0, 0 }
+
+#define MAX_TRACE_NAME_LENGTH 256
+#define MAX_TRACE_TABLE_SIZE 65536
+
+struct _Trace_Data
+{
+ char name[MAX_TRACE_NAME_LENGTH];
+ int call_count;
+ int last_call_count;
+ struct timeval elapsed_time;
+ struct timeval last_elapsed_time;
+ struct timeval total_elapsed_time;
+ struct timeval last_total_elapsed_time;
+ struct timeval last_time;
+
+ int traced;
+
+ struct _Trace_Data *next;
+};
+
+typedef struct _GLGlueFakeContext
+{
+ GLuint gl_num_tex_units[1];
+ GLuint gl_num_vertex_attribs[1];
+} GLGlueFakeContext;
+
+GLGlueFakeContext initial_fake_ctx_real;
+GLGlueFakeContext *initial_fake_ctx = &initial_fake_ctx_real;
+
+struct timeval initial_time = TIMEVAL_INIT;
+struct timeval last_initial_time = TIMEVAL_INIT;
+
+struct timeval last_trace_time = TIMEVAL_INIT;
+struct timeval other_elapsed_time = TIMEVAL_INIT;
+struct timeval traced_other_elapsed_time = TIMEVAL_INIT;
+
+static void
+_get_texture_states(GLenum pname, GLint *params)
+{
+ GLuint cur_active_tex = 0;
+
+ AST(initial_fake_ctx != NULL);
+
+ _sym_glGetIntegerv(GL_ACTIVE_TEXTURE, (GLint *)&cur_active_tex);
+ int i;
+ for (i = 0; i < initial_fake_ctx->gl_num_tex_units[0]; i++)
+ {
+ _sym_glActiveTexture(GL_TEXTURE0 + i);
+ _sym_glGetIntegerv(pname, &(((GLint *)params)[i]));
+ }
+ _sym_glActiveTexture(cur_active_tex);
+}
+
+void
+init_modules_tracepath()
+{
+ {
+ const char *output_file = NULL;
+ output_file = get_env_setting("COREGL_LOG_FILE");
+ if (strlen(output_file) > 0)
+ {
+ trace_fp = fopen(output_file, "w");
+ }
+ if (trace_fp == NULL)
+ trace_fp = stderr;
+ }
+
+#ifdef COREGL_TRACEPATH_TRACE_APICALL_INFO
+ trace_api_flag = atoi(get_env_setting("COREGL_TRACE_API"));
+ trace_api_all_flag = atoi(get_env_setting("COREGL_TRACE_API_ALL"));
+#endif
+#ifdef COREGL_TRACEPATH_TRACE_CONTEXT_INFO
+ trace_ctx_flag = atoi(get_env_setting("COREGL_TRACE_CTX"));
+ trace_ctx_force_flag = atoi(get_env_setting("COREGL_TRACE_CTX_FORCE"));
+#endif
+#ifdef COREGL_TRACEPATH_TRACE_STATE_INFO
+ trace_state_flag = atoi(get_env_setting("COREGL_TRACE_STATE"));
+#endif
+
+ if (USE_TRACEPATH)
+ {
+ LOG("[CoreGL] <Trace> : ");
+
+ if (trace_api_flag == 1)
+ {
+ LOG("(API) ");
+ if (trace_api_all_flag == 1) LOG("(API-ALL) ");
+ }
+ if (trace_ctx_flag == 1) {
+ LOG("(CONTEXT) ");
+ if (trace_ctx_force_flag == 1) LOG("(CONTEXT-FORCE) ");
+ }
+ if (trace_state_flag == 1) LOG("(STATE) ");
+
+ LOG("enabled\n");
+ }
+
+ tracepath_apply_overrides();
+
+}
+
+void
+deinit_modules_tracepath()
+{
+}
+
+void
+init_modules_tstate_tracepath(GLThreadState *tstate)
+{
+ MY_MODULE_TSTATE *tstate_mt = NULL;
+
+ tstate_mt = (MY_MODULE_TSTATE *)calloc(1, sizeof(MY_MODULE_TSTATE));
+
+
+ tstate->module_data[MY_MODULE_ID] = tstate_mt;
+}
+
+void
+deinit_modules_tstate_tracepath(GLThreadState *tstate)
+{
+ if (tstate->module_data[MY_MODULE_ID] != NULL)
+ {
+ free(tstate->module_data[MY_MODULE_ID]);
+ tstate->module_data[MY_MODULE_ID] = NULL;
+ }
+}
+
+void
+tracepath_apply_overrides()
+{
+ if (USE_TRACEPATH)
+ {
+ tracepath_apply_overrides_egl(1);
+ tracepath_apply_overrides_gl(1);
+ }
+}
+
+#define OVERRIDE(f) \
+ if (enable == 1) \
+ { \
+ COREGL_OVERRIDE_API(_orig_tracepath_, f, ovr_); \
+ COREGL_OVERRIDE_API(ovr_, f, tracepath_); \
+ } \
+ else \
+ { \
+ AST(ovr_##f != NULL); \
+ COREGL_OVERRIDE_API(ovr_, f, _orig_tracepath_); \
+ _orig_tracepath_##f = NULL; \
+ }
+
+void
+tracepath_apply_overrides_egl(int enable)
+{
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) OVERRIDE(FUNC_NAME);
+# include "../../headers/sym_egl.h"
+#undef _COREGL_SYMBOL
+}
+
+void
+tracepath_apply_overrides_gl(int enable)
+{
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) OVERRIDE(FUNC_NAME);
+# include "../../headers/sym_gl.h"
+#undef _COREGL_SYMBOL
+
+}
+
+#undef OVERRIDE
+
+void
+tracepath_dump_context_states(int force_output)
+{
+ static struct timeval tv_last = { 0, 0 };
+
+ if (unlikely(trace_state_flag != 1)) return;
+
+ _sym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, (GLint *)initial_fake_ctx->gl_num_tex_units);
+ _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, (GLint *)initial_fake_ctx->gl_num_vertex_attribs);
+
+ if (!force_output)
+ {
+ struct timeval tv_now = { 0, 0 };
+ AST(gettimeofday(&tv_now, NULL) == 0);
+ if (tv_now.tv_sec - tv_last.tv_sec < _COREGL_TRACE_OUTPUT_INTERVAL_SEC)
+ {
+ goto finish;
+ }
+ tv_last = tv_now;
+ }
+
+ TRACE("\n");
+ TRACE("\E[0;40;34m===================================================================================================================\E[0m\n");
+ TRACE("\E[0;32;1m State info \E[1;37;1m: (CURRENT BINDED CONTEXT)\E[0m\n");
+ TRACE("\E[0;40;34m===================================================================================================================\E[0m\n");
+
+#define PRINTF_CHAR_GLenum "%10d"
+#define PRINTF_CHAR_GLboolean "%10d"
+#define PRINTF_CHAR_GLint "%10d"
+#define PRINTF_CHAR_GLsizei "%10u"
+#define PRINTF_CHAR_GLuint "%10u"
+#define PRINTF_CHAR_GLuintmask "0x%8X"
+
+#define PRINTF_CHAR_GLclampf "%10.6f"
+#define PRINTF_CHAR_GLfloat "%10.6f"
+
+#define PRINTF_CHAR_GLvoidptr "%10p"
+
+#define PRINTF_CHAR(type) PRINTF_CHAR_##type
+
+#define INITIAL_CTX initial_fake_ctx
+
+#define GLUE_STATE(TYPE, NAME, SIZE, ARRAY_SIZE, DEFAULT_STMT, GET_STMT) \
+ { \
+ TYPE valuedata[SIZE]; \
+ TYPE *value = NULL; \
+ value = valuedata; GET_STMT; value = valuedata; \
+ TRACE("\E[0;37;1m %-30.30s : (\E[0m ", #NAME); \
+ for (int i = 0; i < SIZE; i++) \
+ { \
+ if (i > 0) { \
+ if (i % 4 == 0) \
+ TRACE("\n %-30.30s ", "");\
+ else \
+ TRACE(", "); \
+ } \
+ TRACE("["PRINTF_CHAR(TYPE)"]", value[i]); \
+ } \
+ TRACE(" \E[0;37;1m)\E[0m\n"); \
+ }
+# include "../fastpath/coregl_fastpath_state.h"
+#undef GLUE_STATE
+
+ TRACE("\E[0;40;34m===================================================================================================================\E[0m\n");
+ TRACE("\n");
+
+ TRACE_END();
+
+finish:
+ return;
+}
+
+
+static inline void
+_add_timeval_period(struct timeval *tv_dst, struct timeval tv_now, struct timeval tv_old)
+{
+ tv_dst->tv_sec += tv_now.tv_sec - tv_old.tv_sec;
+ tv_dst->tv_usec += 1000000 + (tv_now.tv_usec - tv_old.tv_usec);
+ tv_dst->tv_sec += (tv_dst->tv_usec / 1000000) - 1;
+ tv_dst->tv_usec = tv_dst->tv_usec % 1000000;
+}
+
+static inline void
+_add_timeval(struct timeval *tv_dst, struct timeval tv_src)
+{
+ tv_dst->tv_sec += tv_src.tv_sec;
+ tv_dst->tv_usec += tv_src.tv_usec;
+ if (tv_dst->tv_usec > 1000000)
+ {
+ tv_dst->tv_usec -= 1000000;
+ tv_dst->tv_sec++;
+ }
+ else if (tv_dst->tv_usec < 0)
+ {
+ tv_dst->tv_usec += 1000000;
+ tv_dst->tv_sec--;
+ }
+}
+
+static inline double
+_get_timeval_period(struct timeval time_now, struct timeval time_old)
+{
+ return ((time_now.tv_sec - time_old.tv_sec) * 1000) + ((time_now.tv_usec - time_old.tv_usec) / 1000.0);
+}
+
+static inline double
+_get_timeval(struct timeval time)
+{
+ return (time.tv_sec * 1000) + (time.tv_usec / 1000.0);
+}
+
+static unsigned short
+_generate_hash_short(const char *string)
+{
+ unsigned short hash = 0;
+ int i;
+
+ for (i = 0; i < strlen(string); i++)
+ {
+ hash = 253 * hash + string[i];
+ }
+ return (hash ^ (hash >> 8)) % MAX_TRACE_TABLE_SIZE;
+}
+
+static Trace_Data *
+_get_trace_data(Trace_Data **ftd_table, const char *name)
+{
+ Trace_Data *ret = NULL;
+ Trace_Data *current = NULL;
+ Trace_Data *prev = NULL;
+ unsigned short hash = 0;
+
+ AST(strlen(name) < MAX_TRACE_NAME_LENGTH);
+
+ hash = _generate_hash_short(name);
+
+ current = ftd_table[hash];
+
+ while (current != NULL && current->next != NULL)
+ {
+ if (strcmp(current->name, name) == 0)
+ break;
+ prev = current;
+ current = current->next;
+ }
+
+ if (current != NULL)
+ {
+ ret = current;
+ }
+ else
+ {
+ Trace_Data *newitm = NULL;
+ newitm = (Trace_Data *)calloc(1, sizeof(Trace_Data));
+ strcpy(newitm->name, name);
+ newitm->next = NULL;
+
+ if (prev != NULL)
+ {
+ prev->next = newitm;
+ }
+ else
+ {
+ ftd_table[hash] = newitm;
+ }
+ ret = newitm;
+ }
+
+ goto finish;
+
+finish:
+ return ret;
+}
+
+void *
+tracepath_api_trace_begin(const char *funcname, void *hint, int trace_total_time)
+{
+ Trace_Data *ftd = NULL;
+ struct timeval t = TIMEVAL_INIT;
+
+ if (trace_api_flag == 1)
+ {
+ AST(gettimeofday(&t, NULL) == 0);
+
+ ftd = (Trace_Data *)hint;
+
+ if (ftd == NULL)
+ {
+ MY_MODULE_TSTATE *tstate = NULL;
+ GET_MY_TSTATE(tstate, get_current_thread_state());
+
+ if (tstate == NULL)
+ {
+ init_new_thread_state();
+
+ GET_MY_TSTATE(tstate, get_current_thread_state());
+ AST(tstate != NULL);
+ }
+
+ if (tstate->ftd_table == NULL)
+ {
+ tstate->ftd_table = (Trace_Data **)calloc(1, sizeof(Trace_Data *) * MAX_TRACE_TABLE_SIZE);
+ }
+
+ ftd = _get_trace_data(tstate->ftd_table, funcname);
+ }
+
+ AST(ftd != NULL);
+
+ ftd->call_count++;
+ AST(ftd->last_time.tv_sec == 0);
+
+ AST(gettimeofday(&ftd->last_time, NULL) == 0);
+
+ if (initial_time.tv_sec == 0)
+ {
+ initial_time = ftd->last_time;
+ last_initial_time = ftd->last_time;
+ }
+
+ if (trace_total_time == 1)
+ {
+ if (last_trace_time.tv_sec != 0)
+ {
+ _add_timeval_period(&other_elapsed_time, t, last_trace_time);
+ last_trace_time.tv_sec = 0;
+ }
+ }
+
+ }
+
+ return ftd;
+}
+
+void *
+tracepath_api_trace_end(const char *funcname, void *hint, int trace_total_time)
+{
+ Trace_Data *ftd = NULL;
+ struct timeval t = TIMEVAL_INIT;
+
+ if (trace_api_flag == 1)
+ {
+ MY_MODULE_TSTATE *tstate = NULL;
+ struct timeval elapsed_time = TIMEVAL_INIT;
+
+ AST(gettimeofday(&t, NULL) == 0);
+
+ ftd = (Trace_Data *)hint;
+
+ if (ftd == NULL)
+ {
+ GET_MY_TSTATE(tstate, get_current_thread_state());
+
+ if (tstate == NULL)
+ {
+ init_new_thread_state();
+
+ GET_MY_TSTATE(tstate, get_current_thread_state());
+ AST(tstate != NULL);
+ }
+
+ AST(tstate != NULL);
+ AST(tstate->ftd_table != NULL);
+
+ ftd = _get_trace_data(tstate->ftd_table, funcname);
+ }
+
+ AST(ftd != NULL);
+
+ _add_timeval_period(&elapsed_time, t, ftd->last_time);
+
+ _add_timeval(&ftd->elapsed_time, elapsed_time);
+
+
+ ftd->last_time.tv_sec = 0;
+
+ if (trace_total_time == 1)
+ {
+ _add_timeval(&ftd->total_elapsed_time, elapsed_time);
+
+ AST(gettimeofday(&last_trace_time, NULL) == 0);
+
+ if (initial_time.tv_sec == 0)
+ {
+ initial_time = t;
+ last_initial_time = t;
+ }
+ }
+
+ }
+
+
+ return ftd;
+}
+
+void
+tracepath_api_trace_output(int force_output)
+{
+ static struct timeval tv_last = TIMEVAL_INIT;
+ struct timeval total_now = TIMEVAL_INIT;
+ GLThreadState *tstate = NULL;
+ MY_MODULE_TSTATE *tstate_tm = NULL;
+ Trace_Data **ftd_table = NULL;
+
+ double total_elapsed_time = 0.0;
+ double total_elapsed_time_period = 0.0;
+ double total_opengl_elapsed_time = 0.0;
+ double total_opengl_elapsed_time_period = 0.0;
+ double total_other_elapsed_time = 0.0;
+ double total_other_elapsed_time_period = 0.0;
+
+ double swaps_per_sec = 0.0;
+
+ int i;
+
+ if (trace_api_flag != 1)
+ {
+ goto finish;
+ }
+
+ if (!force_output)
+ {
+ struct timeval tv_now = TIMEVAL_INIT;
+ AST(gettimeofday(&tv_now, NULL) == 0);
+ if (tv_now.tv_sec - tv_last.tv_sec < _COREGL_TRACE_OUTPUT_INTERVAL_SEC)
+ {
+ goto finish;
+ }
+ tv_last = tv_now;
+ }
+
+ AST(gettimeofday(&total_now, NULL) == 0);
+
+ total_elapsed_time = _get_timeval_period(total_now, initial_time);
+ total_elapsed_time_period = _get_timeval_period(total_now, last_initial_time);
+ last_initial_time = total_now;
+
+ total_other_elapsed_time = _get_timeval(other_elapsed_time);
+ total_other_elapsed_time_period = _get_timeval_period(other_elapsed_time, traced_other_elapsed_time);
+ traced_other_elapsed_time = other_elapsed_time;
+
+ tstate = get_current_thread_state();
+
+ if (tstate == NULL)
+ {
+ init_new_thread_state();
+
+ tstate = get_current_thread_state();
+ AST(tstate != NULL);
+ }
+
+ GET_MY_TSTATE(tstate_tm, tstate);
+ if (tstate_tm == NULL) return;
+
+ ftd_table = tstate_tm->ftd_table;
+ if (ftd_table == NULL) return;
+
+ {
+ static Trace_Data *trace_hint_swap = NULL;
+ if (trace_hint_swap == NULL)
+ trace_hint_swap = _get_trace_data(ftd_table, "eglSwapBuffers");
+
+ if (trace_hint_swap != NULL && total_elapsed_time_period > 0)
+ {
+ swaps_per_sec = (trace_hint_swap->call_count - trace_hint_swap->last_call_count) / (total_elapsed_time_period / 1000);
+ }
+ }
+
+
+ TRACE("\n");
+ TRACE("\E[40;34m========================================================================================================================\E[0m\n");
+ TRACE("\E[40;32;1m API call info \E[1;37;1m: Thread ID = %d [Swaps per Second(P) = %7.2f]\E[0m\n", tstate->thread_id, swaps_per_sec);
+ TRACE("\E[40;34m========================================================================================================================\E[0m\n");
+
+ // highlighted
+ for (i = 0; i < MAX_TRACE_TABLE_SIZE; i++)
+ {
+ if (ftd_table[i] != NULL)
+ {
+ Trace_Data *current = ftd_table[i];
+
+ while (current != NULL)
+ {
+ double elapsed_time = _get_timeval(current->elapsed_time);
+ double elapsed_time_per_call = elapsed_time / current->call_count;
+
+ total_opengl_elapsed_time += _get_timeval(current->total_elapsed_time);
+ total_opengl_elapsed_time_period += _get_timeval(current->total_elapsed_time) - _get_timeval(current->last_total_elapsed_time);
+
+ current->traced = 0;
+
+ if (current->call_count > current->last_call_count)
+ {
+ double elapsed_time_period = _get_timeval_period(current->elapsed_time, current->last_elapsed_time);
+ double elapsed_time_per_call_period = elapsed_time_period / (current->call_count - current->last_call_count);
+ char *fname = current->name;
+
+ if (!strncmp(fname, "tracepath_", 10))
+ fname = ¤t->name[10];
+
+ if (elapsed_time_per_call_period >= 0.01 || current->call_count - current->last_call_count > 1000)
+ {
+ TRACE("\E[40;37;1m %-42.42s : %10d call(s), %10.2f ms, %9.3f ms/API, %9.3f ms/API(P) \E[0m\n",
+ fname, current->call_count, elapsed_time, elapsed_time_per_call, elapsed_time_per_call_period);
+ current->traced = 1;
+ }
+ }
+ current = current->next;
+ }
+ }
+ }
+
+ {
+ int fp_env = 0;
+ fp_env = atoi(get_env_setting("COREGL_TRACE_API_ALL"));
+ if (fp_env == 1)
+ {
+ // other
+ for (i = 0; i < MAX_TRACE_TABLE_SIZE; i++)
+ {
+ if (ftd_table[i] != NULL)
+ {
+ Trace_Data *current = ftd_table[i];
+
+ while (current != NULL)
+ {
+ if (current->traced == 0)
+ {
+ double elapsed_time = _get_timeval(current->elapsed_time);
+ double elapsed_time_per_call = elapsed_time / current->call_count;
+ char *fname = current->name;
+
+ if (!strncmp(fname, "tracepath_", 10))
+ fname = ¤t->name[10];
+
+ TRACE(" %-42.42s : %10d call(s), %10.2f ms, %9.3f ms/API\n",
+ fname, current->call_count, elapsed_time, elapsed_time_per_call);
+ }
+ current = current->next;
+ }
+ }
+ }
+ }
+ }
+
+ TRACE("\E[40;34m========================================================================================================================\E[0m\n");
+
+ TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
+ "TOTAL elapsed Time",
+ total_elapsed_time,
+ 100.0,
+ total_elapsed_time_period,
+ 100.0);
+
+
+ TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
+ "OpenGL elapsed Time",
+ total_opengl_elapsed_time,
+ total_opengl_elapsed_time * 100.0 / total_elapsed_time,
+ total_opengl_elapsed_time_period,
+ total_opengl_elapsed_time_period * 100.0 / total_elapsed_time_period);
+
+ TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
+ "Out of OpenGL elapsed time",
+ total_other_elapsed_time,
+ total_other_elapsed_time * 100.0 / total_elapsed_time,
+ total_other_elapsed_time_period,
+ total_other_elapsed_time_period * 100.0 / total_elapsed_time_period);
+
+ TRACE("\E[40;36;1m %-42.42s : %13.2f ms[%6.2f%%], %13.2f ms(P)[%6.2f%%]\E[0m\n",
+ "CoreGL API tracing overhead",
+ total_elapsed_time - total_opengl_elapsed_time - total_other_elapsed_time,
+ (total_elapsed_time - total_opengl_elapsed_time - total_other_elapsed_time) * 100.0 / total_elapsed_time,
+ total_elapsed_time_period - total_opengl_elapsed_time_period - total_other_elapsed_time_period,
+ (total_elapsed_time_period - total_opengl_elapsed_time_period - total_other_elapsed_time_period) * 100.0 / total_elapsed_time_period);
+
+ TRACE("\E[40;34m========================================================================================================================\E[0m\n");
+ TRACE("\n");
+
+ for (i = 0; i < MAX_TRACE_TABLE_SIZE; i++)
+ {
+ if (ftd_table[i] != NULL)
+ {
+ Trace_Data *current = ftd_table[i];
+
+ while (current != NULL)
+ {
+ current->last_call_count = current->call_count;
+ current->last_elapsed_time = current->elapsed_time;
+ current->last_total_elapsed_time = current->total_elapsed_time;
+ current = current->next;
+ }
+ }
+ }
+
+ TRACE_END();
+
+ goto finish;
+
+finish:
+ return;
+}
+
--- /dev/null
+#ifndef COREGL_TRACEPATH_H\r
+#define COREGL_TRACEPATH_H\r
+\r
+#include "../coregl_module.h"\r
+\r
+#ifndef COREGL_USE_MODULE_TRACEPATH\r
+#error "COREGL_USE_MODULE_TRACEPATH must defined!!!"\r
+#endif\r
+\r
+#define MY_MODULE_ID COREGL_MODULE_TRACEPATH\r
+#define MY_MODULE_TSTATE Tracepath_ThreadState\r
+\r
+#include "../../coregl_internal.h"\r
+#include "../../coregl_export.h"\r
+\r
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (*_orig_tracepath_##FUNC_NAME) PARAM_LIST;\r
+# include "../../headers/sym.h"\r
+#undef _COREGL_SYMBOL\r
+\r
+// Symbol definition for tracepath\r
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (tracepath_##FUNC_NAME) PARAM_LIST;\r
+# include "../../headers/sym.h"\r
+#undef _COREGL_SYMBOL\r
+\r
+#define COREGL_TRACEPATH_TRACE_ALL\r
+
+#ifdef COREGL_TRACEPATH_TRACE_ALL\r
+#define COREGL_TRACEPATH_TRACE_CONTEXT_INFO // Context state & thread state & Glue-context info\r
+#define COREGL_TRACEPATH_TRACE_STATE_INFO // Glue-context state info\r
+#define COREGL_TRACEPATH_TRACE_APICALL_INFO // API call frequency info\r
+#endif
+
+#ifdef COREGL_TRACEPATH_TRACE_APICALL_INFO\r
+# define _COREGL_TRACE_API_BEGIN(api, hint, trace_total_time) \
+ tracepath_api_trace_begin(api, hint, trace_total_time);\r
+# define _COREGL_TRACE_API_END(api, hint, trace_total_time) \
+ tracepath_api_trace_end(api, hint, trace_total_time);\r
+# define _COREGL_TRACE_API_OUTPUT(force_output) \
+ tracepath_api_trace_output(force_output);\r
+#else
+# define _COREGL_TRACE_API_BEGIN(api, hint, trace_total_time) NULL;
+# define _COREGL_TRACE_API_END(api, hint, trace_total_time)
+# define _COREGL_TRACE_API_OUTPUT(force_output)
+#endif
+\r
+#define _COREGL_TRACEPATH_FUNC_BEGIN() \\r
+ if (unlikely(trace_api_flag == 1)) \
+ _COREGL_TRACE_API_BEGIN(__func__, NULL, 1);
+
+#define _COREGL_TRACEPATH_FUNC_END() \\r
+ if (unlikely(trace_api_flag == 1)) \
+ _COREGL_TRACE_API_END(__func__, NULL, 1);
+\r
+typedef struct _Tracepath_ThreadState\r
+{
+ Trace_Data **ftd_table;
+} Tracepath_ThreadState;\r
+\r
+extern void init_modules_tracepath();\r
+extern void deinit_modules_tracepath();\r
+extern void init_modules_tstate_tracepath(GLThreadState *tstate);\r
+extern void deinit_modules_tstate_tracepath(GLThreadState *tstate);\r
+\r
+\r
+extern void tracepath_apply_overrides();\r
+extern void tracepath_apply_overrides_egl();\r
+extern void tracepath_apply_overrides_gl();\r
+\r
+extern void tracepath_dump_context_states(int force_output);\r
+\r
+extern void *tracepath_api_trace_begin(const char *name, void *hint, int trace_total_time);\r
+extern void *tracepath_api_trace_end(const char *name, void *hint, int trace_total_time);\r
+extern void tracepath_api_trace_output(int force_output);\r
+\r
+#endif // COREGL_TRACEPATH_H\r
+\r
--- /dev/null
+#include "coregl_tracepath.h"
+
+EGLint
+tracepath_eglGetError(void)
+{
+ EGLint ret = _COREGL_INT_INIT_VALUE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetError();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLDisplay
+tracepath_eglGetDisplay(EGLNativeDisplayType display_id)
+{
+ EGLDisplay ret = EGL_NO_DISPLAY;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetDisplay(display_id);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor)
+{
+ EGLBoolean ret = EGL_FALSE;
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglInitialize(dpy, major, minor);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglTerminate(EGLDisplay dpy)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglTerminate(dpy);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetConfigs(dpy, configs, config_size, num_config);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglChooseConfig(EGLDisplay dpy, const EGLint* attrib_list, EGLConfig* configs, EGLint config_size, EGLint* num_config)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglChooseConfig(dpy, attrib_list, configs, config_size, num_config);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetConfigAttrib(dpy, config, attribute, value);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+
+EGLSurface
+tracepath_eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint* attrib_list)
+{
+ EGLSurface ret = EGL_NO_SURFACE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglCreateWindowSurface(dpy, config, win, attrib_list);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLSurface
+tracepath_eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
+{
+ EGLSurface ret = EGL_NO_SURFACE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglCreatePbufferSurface(dpy, config, attrib_list);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLSurface
+tracepath_eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint* attrib_list)
+{
+ EGLSurface ret = EGL_NO_SURFACE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglCreatePixmapSurface(dpy, config, pixmap, attrib_list);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglDestroySurface(dpy, surface);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglQuerySurface(dpy, surface, attribute, value);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglBindAPI(EGLenum api)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglBindAPI(api);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLenum
+tracepath_eglQueryAPI(void)
+{
+ EGLenum ret = 0;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglQueryAPI();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglWaitClient(void)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglWaitClient();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglReleaseThread(void)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglReleaseThread();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLSurface
+tracepath_eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
+{
+ EGLSurface ret = EGL_NO_SURFACE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglCreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglSurfaceAttrib(dpy, surface, attribute, value);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglBindTexImage(dpy, surface, buffer);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglReleaseTexImage(dpy, surface, buffer);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglSwapInterval(EGLDisplay dpy, EGLint interval)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglSwapInterval(dpy, interval);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLContext
+tracepath_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)
+{
+ EGLContext ret = EGL_NO_CONTEXT;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglCreateContext(dpy, config, share_context, attrib_list);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglDestroyContext(dpy, ctx);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglMakeCurrent(dpy, draw, read, ctx);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+#ifdef COREGL_TRACE_STATE_INFO
+ if (unlikely(trace_state_flag == 1))
+ {
+ if (_orig_tracepath_eglMakeCurrent == _sym_eglMakeCurrent)
+ tracepath_dump_context_states(0);
+ }
+#endif // COREGL_TRACE_STATE_INFO
+ return ret;
+}
+
+EGLContext
+tracepath_eglGetCurrentContext(void)
+{
+ EGLContext ret = EGL_NO_CONTEXT;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetCurrentContext();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLSurface
+tracepath_eglGetCurrentSurface(EGLint readdraw)
+{
+ EGLSurface ret = EGL_NO_SURFACE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetCurrentSurface(readdraw);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLDisplay
+tracepath_eglGetCurrentDisplay(void)
+{
+ EGLDisplay ret = EGL_NO_DISPLAY;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetCurrentDisplay();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglQueryContext(dpy, ctx, attribute, value);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglWaitGL(void)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglWaitGL();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglWaitNative(EGLint engine)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglWaitNative(engine);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglSwapBuffers(dpy, surface);
+
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ _COREGL_TRACE_API_OUTPUT(0);
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglCopyBuffers(dpy, surface, target);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+_eng_fn
+tracepath_eglGetProcAddress(const char* procname)
+{
+ _eng_fn ret = NULL;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetProcAddress(procname);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+const char *
+tracepath_eglQueryString(EGLDisplay dpy, EGLint name)
+{
+ const char *ret = NULL;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglQueryString(dpy, name);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLImageKHR
+tracepath_eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
+{
+ void *ret = NULL;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglCreateImageKHR(dpy, ctx, target, buffer, attrib_list);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglDestroyImageKHR(dpy, image);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+void *
+tracepath_eglMapImageSEC(EGLDisplay dpy, EGLImageKHR image)
+{
+ void *ret = NULL;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglMapImageSEC(dpy, image);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglUnmapImageSEC(EGLDisplay dpy, EGLImageKHR image)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglUnmapImageSEC(dpy, image);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglGetImageAttribSEC(EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglGetImageAttribSEC(dpy, image, attribute, value);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglLockSurfaceKHR(display, surface, attrib_list);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+EGLBoolean
+tracepath_eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface)
+{
+ EGLBoolean ret = EGL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_eglUnlockSurfaceKHR(display, surface);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
--- /dev/null
+#include "coregl_tracepath.h"
+
+void
+tracepath_glActiveTexture(GLenum texture)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glActiveTexture(texture);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glAttachShader(GLuint program, GLuint shader)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glAttachShader(program, shader);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBindAttribLocation(GLuint program, GLuint index, const char* name)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBindAttribLocation(program, index, name);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBindBuffer(GLenum target, GLuint buffer)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBindBuffer(target, buffer);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBindFramebuffer(GLenum target, GLuint framebuffer)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBindFramebuffer(target, framebuffer);
+
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBindRenderbuffer(target, renderbuffer);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBindTexture(GLenum target, GLuint texture)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBindTexture(target, texture);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBlendColor(red, green, blue, alpha);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBlendEquation(GLenum mode)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBlendEquation(mode);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBlendEquationSeparate(modeRGB, modeAlpha);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBlendFunc(GLenum sfactor, GLenum dfactor)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBlendFunc(sfactor, dfactor);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBufferData(target, size, data, usage);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void* data)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glBufferSubData(target, offset, size, data);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+GLenum
+tracepath_glCheckFramebufferStatus(GLenum target)
+{
+ GLenum ret = GL_NONE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glCheckFramebufferStatus(target);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+void
+tracepath_glClear(GLbitfield mask)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glClear(mask);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glClearColor(red, green, blue, alpha);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glClearDepthf(GLclampf depth)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glClearDepthf(depth);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glClearStencil(GLint s)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glClearStencil(s);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glColorMask(red, green, blue, alpha);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glCompileShader(GLuint shader)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glCompileShader(shader);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+GLuint
+tracepath_glCreateProgram(void)
+{
+ GLuint ret = _COREGL_INT_INIT_VALUE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glCreateProgram();
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLuint
+tracepath_glCreateShader(GLenum type)
+{
+ GLuint ret = _COREGL_INT_INIT_VALUE;
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glCreateShader(type);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+void
+tracepath_glCullFace(GLenum mode)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glCullFace(mode);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDeleteBuffers(GLsizei n, const GLuint* buffers)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDeleteBuffers(n, buffers);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDeleteFramebuffers(n, framebuffers);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDeleteProgram(GLuint program)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDeleteProgram(program);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDeleteRenderbuffers(n, renderbuffers);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDeleteShader(GLuint shader)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDeleteShader(shader);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDeleteTextures(GLsizei n, const GLuint* textures)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDeleteTextures(n, textures);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDepthFunc(GLenum func)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDepthFunc(func);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDepthMask(GLboolean flag)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDepthMask(flag);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDepthRangef(GLclampf zNear, GLclampf zFar)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDepthRangef(zNear, zFar);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDetachShader(GLuint program, GLuint shader)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDetachShader(program, shader);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDisable(GLenum cap)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDisable(cap);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDisableVertexAttribArray(GLuint index)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDisableVertexAttribArray(index);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDrawArrays(GLenum mode, GLint first, GLsizei count)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDrawArrays(mode, first, count);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDrawElements(mode, count, type, indices);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glEnable(GLenum cap)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glEnable(cap);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glEnableVertexAttribArray(GLuint index)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glEnableVertexAttribArray(index);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glFinish(void)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glFinish();
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ _COREGL_TRACE_API_OUTPUT(0);
+}
+
+void
+tracepath_glFlush(void)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glFlush();
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ _COREGL_TRACE_API_OUTPUT(0);
+}
+
+void
+tracepath_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glFramebufferTexture2D(target, attachment, textarget, texture, level);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glFrontFace(GLenum mode)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glFrontFace(mode);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetVertexAttribfv(index, pname, params);
+
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetVertexAttribiv(index, pname, params);
+
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetVertexAttribPointerv(index, pname, pointer);
+
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glHint(GLenum target, GLenum mode)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glHint(target, mode);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGenBuffers(GLsizei n, GLuint* buffers)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGenBuffers(n, buffers);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGenerateMipmap(GLenum target)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGenerateMipmap(target);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGenFramebuffers(GLsizei n, GLuint* framebuffers)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGenFramebuffers(n, framebuffers);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGenRenderbuffers(n, renderbuffers);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGenTextures(GLsizei n, GLuint* textures)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGenTextures(n, textures);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetActiveAttrib(program, index, bufsize, length, size, type, name);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetActiveUniform(program, index, bufsize, length, size, type, name);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetAttachedShaders(program, maxcount, count, shaders);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+int
+tracepath_glGetAttribLocation(GLuint program, const char* name)
+{
+ int ret = _COREGL_INT_INIT_VALUE;
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glGetAttribLocation(program, name);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+void
+tracepath_glGetBooleanv(GLenum pname, GLboolean* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetBooleanv(pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetBufferParameteriv(target, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+GLenum
+tracepath_glGetError(void)
+{
+ GLenum ret = GL_NONE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glGetError();
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+void
+tracepath_glGetFloatv(GLenum pname, GLfloat* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetFloatv(pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetIntegerv(GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetIntegerv(pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetProgramiv(GLuint program, GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetProgramiv(program, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetProgramInfoLog(program, bufsize, length, infolog);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetRenderbufferParameteriv(target, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetShaderiv(shader, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetShaderInfoLog(shader, bufsize, length, infolog);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetShaderSource(shader, bufsize, length, source);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+const GLubyte *
+tracepath_glGetString(GLenum name)
+{
+ const GLubyte *ret = NULL;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glGetString(name);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+void
+tracepath_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetTexParameterfv(target, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetTexParameteriv(target, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetUniformfv(GLuint program, GLint location, GLfloat* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetUniformfv(program, location, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetUniformiv(GLuint program, GLint location, GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetUniformiv(program, location, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+int
+tracepath_glGetUniformLocation(GLuint program, const char* name)
+{
+ int ret = _COREGL_INT_INIT_VALUE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glGetUniformLocation(program, name);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLboolean
+tracepath_glIsBuffer(GLuint buffer)
+{
+ GLboolean ret = GL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glIsBuffer(buffer);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLboolean
+tracepath_glIsEnabled(GLenum cap)
+{
+ GLboolean ret = GL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glIsEnabled(cap);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLboolean
+tracepath_glIsFramebuffer(GLuint framebuffer)
+{
+ GLboolean ret = GL_FALSE;
+
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glIsFramebuffer(framebuffer);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLboolean
+tracepath_glIsProgram(GLuint program)
+{
+ GLboolean ret;
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glIsProgram(program);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLboolean
+tracepath_glIsRenderbuffer(GLuint renderbuffer)
+{
+ GLboolean ret;
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glIsRenderbuffer(renderbuffer);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLboolean
+tracepath_glIsShader(GLuint shader)
+{
+ GLboolean ret;
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glIsShader(shader);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+GLboolean
+tracepath_glIsTexture(GLuint texture)
+{
+ GLboolean ret;
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ ret = _orig_tracepath_glIsTexture(texture);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+ return ret;
+}
+
+void
+tracepath_glLineWidth(GLfloat width)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glLineWidth(width);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glLinkProgram(GLuint program)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glLinkProgram(program);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glPixelStorei(GLenum pname, GLint param)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glPixelStorei(pname, param);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glPolygonOffset(GLfloat factor, GLfloat units)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glPolygonOffset(factor, units);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glReadPixels(x, y, width, height, format, type, pixels);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glReleaseShaderCompiler(void)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glReleaseShaderCompiler();
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glRenderbufferStorage(target, internalformat, width, height);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glSampleCoverage(GLclampf value, GLboolean invert)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glSampleCoverage(value, invert);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glScissor(x, y, width, height);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glShaderBinary(n, shaders, binaryformat, binary, length);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glShaderSource(shader, count, string, length);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glStencilFunc(GLenum func, GLint ref, GLuint mask)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glStencilFunc(func, ref, mask);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glStencilFuncSeparate(face, func, ref, mask);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glStencilMask(GLuint mask)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glStencilMask(mask);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glStencilMaskSeparate(GLenum face, GLuint mask)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glStencilMaskSeparate(face, mask);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glStencilOp(fail, zfail, zpass);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glStencilOpSeparate(face, fail, zfail, zpass);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glTexParameterf(GLenum target, GLenum pname, GLfloat param)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glTexParameterf(target, pname, param);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glTexParameterfv(target, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glTexParameteri(GLenum target, GLenum pname, GLint param)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glTexParameteri(target, pname, param);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glTexParameteriv(GLenum target, GLenum pname, const GLint* params)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glTexParameteriv(target, pname, params);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform1f(GLint location, GLfloat x)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform1f(location, x);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform1fv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform1i(GLint location, GLint x)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform1i(location, x);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform1iv(GLint location, GLsizei count, const GLint* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform1iv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform2f(GLint location, GLfloat x, GLfloat y)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform2f(location, x, y);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform2fv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform2i(GLint location, GLint x, GLint y)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform2i(location, x, y);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform2iv(GLint location, GLsizei count, const GLint* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform2iv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform3f(location, x, y, z);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform3fv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform3i(GLint location, GLint x, GLint y, GLint z)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform3i(location, x, y, z);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform3iv(GLint location, GLsizei count, const GLint* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform3iv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform4f(location, x, y, z, w);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform4fv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform4i(location, x, y, z, w);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniform4iv(GLint location, GLsizei count, const GLint* v)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniform4iv(location, count, v);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniformMatrix2fv(location, count, transpose, value);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniformMatrix3fv(location, count, transpose, value);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUniformMatrix4fv(location, count, transpose, value);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glUseProgram(GLuint program)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glUseProgram(program);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glValidateProgram(GLuint program)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glValidateProgram(program);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib1f(GLuint indx, GLfloat x)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib1f(indx, x);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib1fv(GLuint indx, const GLfloat* values)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib1fv(indx, values);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib2f(indx, x, y);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib2fv(GLuint indx, const GLfloat* values)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib2fv(indx, values);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib3f(indx, x, y, z);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib3fv(GLuint indx, const GLfloat* values)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib3fv(indx, values);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib4f(indx, x, y, z, w);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttrib4fv(GLuint indx, const GLfloat* values)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttrib4fv(indx, values);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glViewport(x, y, width, height);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+
+// GLES Extensions...
+void
+tracepath_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glEGLImageTargetTexture2DOES(target, image);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glEGLImageTargetRenderbufferStorageOES(target, image);
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glGetProgramBinary(program, bufsize, length, binaryFormat, binary);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glProgramBinary(program, binaryFormat, binary, length);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+
+void
+tracepath_glProgramParameteri(GLuint program, GLuint pname, GLint value)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glProgramParameteri(program, pname, value);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+
+void
+tracepath_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
+{
+ _COREGL_TRACEPATH_FUNC_BEGIN();
+ _orig_tracepath_glDiscardFramebufferEXT(target, numAttachments, attachments);
+ GLERR(__FUNCTION__, __FILE__, __LINE__, "");
+ goto finish;
+
+finish:
+ _COREGL_TRACEPATH_FUNC_END();
+}
+