Add coding style guide.
[platform/core/uifw/coregl.git] / src / coregl_internal.h
index 2e93e5c..ffb366d 100644 (file)
 
 #include "coregl.h"
 
+#include "modules/coregl_module.h"
+
 #define unlikely(x) __builtin_expect(x, 0)
 
 // Symbol definition for real
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)     extern RET_TYPE (*_sym_##FUNC_NAME) PARAM_LIST;
+#define _COREGL_SYMBOL(RET_TYPE, FUNC_NAME, PARAM_LIST)     extern RET_TYPE (*_sym_##FUNC_NAME) PARAM_LIST;
 # include "headers/sym.h"
 #undef _COREGL_SYMBOL
 
 #define COREGL_DEBUG
 
-# define ERR(...) \
-     fprintf(stderr, __VA_ARGS__)
+///////////////////////////////////////
+// Disable dlog for debugging urgent issues //
+#ifdef COREGL_DEBUG
+//# define LOG_TAG "CoreGL"
+//# include <dlog.h>
+# define LOGE(...) fprintf(stderr, __VA_ARGS__)
+# define LOGW(...) fprintf(stderr, __VA_ARGS__)
+# define LOGD(...) fprintf(stderr, __VA_ARGS__)
+#endif
+///////////////////////////////////////
+
+# define COREGL_ERR(...) \
+     LOGE(" "__VA_ARGS__)
+# define COREGL_WRN(...) \
+     LOGW(" "__VA_ARGS__)
 # ifdef COREGL_DEBUG
-#  define DBG(...) \
-     fprintf(stderr, __VA_ARGS__)
+#  define COREGL_DBG(...) \
+     LOGD(" "__VA_ARGS__)
 # else
-#  define DBG(...)
+#  define COREGL_DBG(...)
 # endif
 
-# define LOG(...) \
-     fprintf(stderr, __VA_ARGS__)
+# define COREGL_LOG(...) \
+     LOGD(" "__VA_ARGS__)
+
 
 # define TRACE(...) \
-     fprintf(trace_fp, __VA_ARGS__)
+     if (trace_fp != NULL) \
+       fprintf(trace_fp, __VA_ARGS__); \
+     else \
+       LOGD(" "__VA_ARGS__)
 
 # define TRACE_END() \
-     fflush(trace_fp)
+     if (trace_fp != NULL) \
+       fflush(trace_fp)
+#define _COREGL_TRACE_OUTPUT_INTERVAL_SEC 5
+
+static inline GLint GET_INT_FROM_FLOAT(GLfloat value)
+{
+       return (GLint)value;
+}
+static inline GLuint GET_UINT_FROM_FLOAT(GLfloat value)
+{
+       return (GLuint)value;
+}
+
 
 #ifdef COREGL_DEBUG
 # define AST(expr) \
-     if (!(expr)) { fprintf(stderr, "\E[0;31;1m%s(%d) error. '"#expr"'\E[0m\n", __func__, __LINE__); }
+     if (!(expr)) { LOGE("\E[40;31;1m%s(%d) error. '"#expr"'\E[0m\n", __func__, __LINE__); }
 #else
 # define AST(expr) \
      if (expr)
 #endif
 
-typedef GLvoid *     GLvoidptr;
+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_GLAPI_31        4
+#define COREGL_GLAPI_3 3
+#define COREGL_GLAPI_2 2
 
 #define _COREGL_INT_INIT_VALUE -3
 
-#ifdef COREGL_ERRORS
-# define GLERR(fn, fl, ln, op)
-#else
-# define GLERR(fn, fl, ln, op)
-#endif
-
-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_OVERRIDE_API(mangle, func, prefix) \
+       mangle##func = prefix##func
 
-#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_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;
+#define COREGL_GL_NO_CONTEXT EGL_NO_CONTEXT
 
-typedef struct _GLThreadState
-{
+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
-{
+typedef struct _General_Trace_List {
        void                          *value;
        struct _General_Trace_List    *next;
 } General_Trace_List;
@@ -156,14 +107,27 @@ 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_api_frame_flag;
+extern int                 trace_mem_flag;
+extern int                 trace_mem_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)
+extern int                 trace_surface_flag;
+extern int                 trace_surface_sequence_sort_flag;
+extern int                 trace_surface_filter_period_begin;
+extern int                 trace_surface_filter_period_end;
+extern int                 trace_surface_filter_type;
+extern int                 trace_surface_filter_handle;
+extern int                 trace_surface_filter_size_w;
+extern int                 trace_surface_filter_size_h;
+extern int                 trace_surface_print_only_flag;
+
+#define USE_TRACEPATH          (trace_api_flag == 1 || trace_ctx_flag == 1 || trace_state_flag == 1 || trace_mem_flag == 1 || trace_surface_flag == 1)
 
 // Environment functions
 extern const char         *get_env_setting(const char *name);
@@ -172,34 +136,31 @@ extern const char         *get_env_setting(const char *name);
 extern int                 init_new_thread_state();
 
 // Thread functions
+extern int                 mutex_init(Mutex *mt);
 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                reset_modules_override();
+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);
+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);
 
 #endif // COREGL_INTERNAL_H