[Title] Added supports for Qualcomm chipsets
[platform/core/uifw/coregl.git] / src / coregl_internal.h
1 #ifndef COREGL_INTERNAL_H
2 #define COREGL_INTERNAL_H
3
4 #include <stdio.h>
5
6 #include "coregl.h"
7
8 #include "modules/coregl_module.h"
9
10 #define unlikely(x) __builtin_expect(x, 0)
11
12 // Symbol definition for real
13 #define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)     extern RET_TYPE (*_sym_##FUNC_NAME) PARAM_LIST;
14 # include "headers/sym.h"
15 #undef _COREGL_SYMBOL
16
17 #define COREGL_DEBUG
18
19 #define LOG_TAG "CoreGL"
20 #include <dlog.h>
21
22 # define COREGL_ERR(...) \
23      LOGE(" "__VA_ARGS__)
24 # define COREGL_WRN(...) \
25      LOGW(" "__VA_ARGS__)
26 # ifdef COREGL_DEBUG
27 #  define COREGL_DBG(...) \
28      LOGD(" "__VA_ARGS__)
29 # else
30 #  define COREGL_DBG(...)
31 # endif
32
33 # define COREGL_LOG(...) \
34      LOGD(" "__VA_ARGS__)
35
36
37 # define TRACE(...) \
38      if (trace_fp != NULL) \
39        fprintf(trace_fp, __VA_ARGS__); \
40      else \
41        LOGD(" "__VA_ARGS__)
42
43 # define TRACE_END() \
44      if (trace_fp != NULL) \
45        fflush(trace_fp)
46 #define _COREGL_TRACE_OUTPUT_INTERVAL_SEC 5
47
48
49 #ifdef COREGL_DEBUG
50 # define AST(expr) \
51      if (!(expr)) { LOGE("\E[40;31;1m%s(%d) error. '"#expr"'\E[0m\n", __func__, __LINE__); }
52 #else
53 # define AST(expr) \
54      if (expr)
55 #endif
56
57 typedef GLvoid *     GLvoidptr;
58 typedef GLuint       GLuintmask;
59
60 #define _COREGL_INT_INIT_VALUE -3
61
62 #define COREGL_OVERRIDE_API(mangle, func, prefix) \
63    mangle##func = prefix##func
64
65 typedef EGLSurface     GLSurface;
66 typedef EGLDisplay     GLDisplay;
67 typedef EGLContext     GLContext;
68
69 #define COREGL_GL_NO_CONTEXT EGL_NO_CONTEXT
70
71 typedef struct _GLThreadState
72 {
73         int                      thread_id;
74         void                    *module_data[COREGL_MAX_MODULES];
75 } GLThreadState;
76
77 extern void                *glue_lib_handle;
78 extern void                *egl_lib_handle;
79
80 #include "coregl_thread_pthread.h"
81
82 typedef struct _General_Trace_List
83 {
84         void                          *value;
85         struct _General_Trace_List    *next;
86 } General_Trace_List;
87
88 extern General_Trace_List  *thread_trace_list;
89 extern Mutex                general_trace_lists_access_mutex;
90
91 extern FILE               *trace_fp;
92
93 extern int                 trace_api_flag;
94 extern int                 trace_api_all_flag;
95 extern int                 trace_mem_flag;
96 extern int                 trace_mem_all_flag;
97 extern int                 trace_surface_flag;
98 extern int                 trace_surface_all_flag;
99 extern int                 trace_ctx_flag;
100 extern int                 trace_ctx_force_flag;
101 extern int                 trace_state_flag;
102
103 #define USE_TRACEPATH           (trace_api_flag == 1 || trace_ctx_flag == 1 || trace_state_flag == 1 || trace_mem_flag == 1 || trace_surface_flag == 1)
104
105 // Environment functions
106 extern const char         *get_env_setting(const char *name);
107
108 // Main utility functions
109 extern int                 init_new_thread_state();
110
111 // Thread functions
112 extern int                 mutex_lock(Mutex *mt);
113 extern int                 mutex_unlock(Mutex *mt);
114 extern int                 get_current_thread();
115 extern int                 set_current_thread_state(GLThreadState *tstate);
116 extern GLThreadState      *get_current_thread_state();
117
118
119 // Override functions
120 extern void                init_export();
121 extern void                deinit_export();
122
123 // Module interfaces
124 extern void                init_modules();
125 extern void                deinit_modules();
126 extern void                reset_modules_override();
127 extern void                init_modules_tstate(GLThreadState *tstate);
128 extern void                deinit_modules_tstate(GLThreadState *tstate);
129
130
131 // Debug & Trace functions
132 extern int                 add_to_general_trace_list(General_Trace_List **gtl, void *value);
133 extern int                 remove_from_general_trace_list(General_Trace_List **gtl, void *value);
134
135 #endif // COREGL_INTERNAL_H
136