1 #ifndef COREGL_INTERNAL_H
2 #define COREGL_INTERNAL_H
8 #include "modules/coregl_module.h"
10 #define unlikely(x) __builtin_expect(x, 0)
12 // Symbol definition for real
13 #define _COREGL_SYMBOL(RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (*_sym_##FUNC_NAME) PARAM_LIST;
14 # include "headers/sym.h"
19 ///////////////////////////////////////
20 // Disable dlog for debugging urgent issues //
22 //# define LOG_TAG "CoreGL"
24 # define LOGE(...) fprintf(stderr, __VA_ARGS__)
25 # define LOGW(...) fprintf(stderr, __VA_ARGS__)
26 # define LOGD(...) fprintf(stderr, __VA_ARGS__)
28 ///////////////////////////////////////
30 # define COREGL_ERR(...) \
32 # define COREGL_WRN(...) \
35 # define COREGL_DBG(...) \
38 # define COREGL_DBG(...)
41 # define COREGL_LOG(...) \
46 if (trace_fp != NULL) \
47 fprintf(trace_fp, __VA_ARGS__); \
51 # define TRACE_END() \
52 if (trace_fp != NULL) \
54 #define _COREGL_TRACE_OUTPUT_INTERVAL_SEC 5
56 static inline GLint GET_INT_FROM_FLOAT(GLfloat value) { return (GLint)value; }
57 static inline GLuint GET_UINT_FROM_FLOAT(GLfloat value) { return (GLuint)value; }
62 if (!(expr)) { LOGE("\E[40;31;1m%s(%d) error. '"#expr"'\E[0m\n", __func__, __LINE__); }
68 typedef GLvoid * GLvoidptr;
69 typedef GLuint GLuintmask;
71 #define COREGL_GLAPI_31 4
72 #define COREGL_GLAPI_3 3
73 #define COREGL_GLAPI_2 2
75 #define _COREGL_INT_INIT_VALUE -3
77 #define COREGL_OVERRIDE_API(mangle, func, prefix) \
78 mangle##func = prefix##func
80 typedef EGLSurface GLSurface;
81 typedef EGLDisplay GLDisplay;
82 typedef EGLContext GLContext;
84 #define COREGL_GL_NO_CONTEXT EGL_NO_CONTEXT
86 typedef struct _GLThreadState
89 void *module_data[COREGL_MAX_MODULES];
92 extern void *glue_lib_handle;
93 extern void *egl_lib_handle;
95 #include "coregl_thread_pthread.h"
97 typedef struct _General_Trace_List
100 struct _General_Trace_List *next;
101 } General_Trace_List;
103 extern General_Trace_List *thread_trace_list;
104 extern Mutex general_trace_lists_access_mutex;
106 extern FILE *trace_fp;
108 extern int trace_api_flag;
109 extern int trace_api_all_flag;
110 extern int trace_api_frame_flag;
111 extern int trace_mem_flag;
112 extern int trace_mem_all_flag;
113 extern int trace_ctx_flag;
114 extern int trace_ctx_force_flag;
115 extern int trace_state_flag;
116 extern int trace_surface_flag;
117 extern int trace_surface_sequence_sort_flag;
118 extern int trace_surface_filter_period_begin;
119 extern int trace_surface_filter_period_end;
120 extern int trace_surface_filter_type;
121 extern int trace_surface_filter_handle;
122 extern int trace_surface_filter_size_w;
123 extern int trace_surface_filter_size_h;
124 extern int trace_surface_print_only_flag;
126 #define USE_TRACEPATH (trace_api_flag == 1 || trace_ctx_flag == 1 || trace_state_flag == 1 || trace_mem_flag == 1 || trace_surface_flag == 1)
128 // Environment functions
129 extern const char *get_env_setting(const char *name);
131 // Main utility functions
132 extern int init_new_thread_state();
135 extern int mutex_init(Mutex *mt);
136 extern int mutex_lock(Mutex *mt);
137 extern int mutex_unlock(Mutex *mt);
138 extern int get_current_thread();
139 extern int set_current_thread_state(GLThreadState *tstate);
140 extern GLThreadState *get_current_thread_state();
143 // Override functions
144 extern void init_export();
145 extern void deinit_export();
148 extern void init_modules();
149 extern void deinit_modules();
150 extern void reset_modules_override();
151 extern void init_modules_tstate(GLThreadState *tstate);
152 extern void deinit_modules_tstate(GLThreadState *tstate);
155 // Debug & Trace functions
156 extern int add_to_general_trace_list(General_Trace_List **gtl, void *value);
157 extern int remove_from_general_trace_list(General_Trace_List **gtl, void *value);
159 #endif // COREGL_INTERNAL_H