Add coding style guide.
[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(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 ///////////////////////////////////////
20 // Disable dlog for debugging urgent issues //
21 #ifdef COREGL_DEBUG
22 //# define LOG_TAG "CoreGL"
23 //# include <dlog.h>
24 # define LOGE(...) fprintf(stderr, __VA_ARGS__)
25 # define LOGW(...) fprintf(stderr, __VA_ARGS__)
26 # define LOGD(...) fprintf(stderr, __VA_ARGS__)
27 #endif
28 ///////////////////////////////////////
29
30 # define COREGL_ERR(...) \
31      LOGE(" "__VA_ARGS__)
32 # define COREGL_WRN(...) \
33      LOGW(" "__VA_ARGS__)
34 # ifdef COREGL_DEBUG
35 #  define COREGL_DBG(...) \
36      LOGD(" "__VA_ARGS__)
37 # else
38 #  define COREGL_DBG(...)
39 # endif
40
41 # define COREGL_LOG(...) \
42      LOGD(" "__VA_ARGS__)
43
44
45 # define TRACE(...) \
46      if (trace_fp != NULL) \
47        fprintf(trace_fp, __VA_ARGS__); \
48      else \
49        LOGD(" "__VA_ARGS__)
50
51 # define TRACE_END() \
52      if (trace_fp != NULL) \
53        fflush(trace_fp)
54 #define _COREGL_TRACE_OUTPUT_INTERVAL_SEC 5
55
56 static inline GLint GET_INT_FROM_FLOAT(GLfloat value)
57 {
58         return (GLint)value;
59 }
60 static inline GLuint GET_UINT_FROM_FLOAT(GLfloat value)
61 {
62         return (GLuint)value;
63 }
64
65
66 #ifdef COREGL_DEBUG
67 # define AST(expr) \
68      if (!(expr)) { LOGE("\E[40;31;1m%s(%d) error. '"#expr"'\E[0m\n", __func__, __LINE__); }
69 #else
70 # define AST(expr) \
71      if (expr)
72 #endif
73
74 typedef GLvoid      *GLvoidptr;
75 typedef GLuint       GLuintmask;
76
77 #define COREGL_GLAPI_31 4
78 #define COREGL_GLAPI_3  3
79 #define COREGL_GLAPI_2  2
80
81 #define _COREGL_INT_INIT_VALUE -3
82
83 #define COREGL_OVERRIDE_API(mangle, func, prefix) \
84         mangle##func = prefix##func
85
86 typedef EGLSurface     GLSurface;
87 typedef EGLDisplay     GLDisplay;
88 typedef EGLContext     GLContext;
89
90 #define COREGL_GL_NO_CONTEXT EGL_NO_CONTEXT
91
92 typedef struct _GLThreadState {
93         int                      thread_id;
94         void                    *module_data[COREGL_MAX_MODULES];
95 } GLThreadState;
96
97 extern void                *glue_lib_handle;
98 extern void                *egl_lib_handle;
99
100 #include "coregl_thread_pthread.h"
101
102 typedef struct _General_Trace_List {
103         void                          *value;
104         struct _General_Trace_List    *next;
105 } General_Trace_List;
106
107 extern General_Trace_List  *thread_trace_list;
108 extern Mutex                general_trace_lists_access_mutex;
109
110 extern FILE               *trace_fp;
111
112 extern int                 trace_api_flag;
113 extern int                 trace_api_all_flag;
114 extern int                 trace_api_frame_flag;
115 extern int                 trace_mem_flag;
116 extern int                 trace_mem_all_flag;
117 extern int                 trace_ctx_flag;
118 extern int                 trace_ctx_force_flag;
119 extern int                 trace_state_flag;
120 extern int                 trace_surface_flag;
121 extern int                 trace_surface_sequence_sort_flag;
122 extern int                 trace_surface_filter_period_begin;
123 extern int                 trace_surface_filter_period_end;
124 extern int                 trace_surface_filter_type;
125 extern int                 trace_surface_filter_handle;
126 extern int                 trace_surface_filter_size_w;
127 extern int                 trace_surface_filter_size_h;
128 extern int                 trace_surface_print_only_flag;
129
130 #define USE_TRACEPATH           (trace_api_flag == 1 || trace_ctx_flag == 1 || trace_state_flag == 1 || trace_mem_flag == 1 || trace_surface_flag == 1)
131
132 // Environment functions
133 extern const char         *get_env_setting(const char *name);
134
135 // Main utility functions
136 extern int                 init_new_thread_state();
137
138 // Thread functions
139 extern int                 mutex_init(Mutex *mt);
140 extern int                 mutex_lock(Mutex *mt);
141 extern int                 mutex_unlock(Mutex *mt);
142 extern int                 get_current_thread();
143 extern int                 set_current_thread_state(GLThreadState *tstate);
144 extern GLThreadState      *get_current_thread_state();
145
146
147 // Override functions
148 extern void                init_export();
149 extern void                deinit_export();
150
151 // Module interfaces
152 extern void                init_modules();
153 extern void                deinit_modules();
154 extern void                reset_modules_override();
155 extern void                init_modules_tstate(GLThreadState *tstate);
156 extern void                deinit_modules_tstate(GLThreadState *tstate);
157
158
159 // Debug & Trace functions
160 extern int                 add_to_general_trace_list(General_Trace_List **gtl,
161                 void *value);
162 extern int                 remove_from_general_trace_list(
163         General_Trace_List **gtl, void *value);
164
165 #endif // COREGL_INTERNAL_H
166