1 #ifndef COREGL_TRACEPATH_H
\r
2 #define COREGL_TRACEPATH_H
\r
4 #include "../coregl_module.h"
\r
6 #ifndef COREGL_USE_MODULE_TRACEPATH
\r
7 #error "COREGL_USE_MODULE_TRACEPATH must defined!!!"
\r
10 #define MY_MODULE_ID COREGL_MODULE_TRACEPATH
\r
11 #define MY_MODULE_TSTATE Tracepath_ThreadState
\r
13 #include "../../coregl_internal.h"
\r
14 #include "../../coregl_export.h"
\r
16 #define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (*_orig_tracepath_##FUNC_NAME) PARAM_LIST;
\r
17 # include "../../headers/sym.h"
\r
18 #undef _COREGL_SYMBOL
\r
20 // Symbol definition for tracepath
\r
21 #define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) extern RET_TYPE (tracepath_##FUNC_NAME) PARAM_LIST;
\r
22 # include "../../headers/sym.h"
\r
23 #undef _COREGL_SYMBOL
\r
25 #define COREGL_TRACEPATH_TRACE_ALL
\r
27 #ifdef COREGL_TRACEPATH_TRACE_ALL
\r
28 #define COREGL_TRACEPATH_TRACE_CONTEXT_INFO // Context state & thread state & Glue-context info
\r
29 #define COREGL_TRACEPATH_TRACE_STATE_INFO // Glue-context state info
\r
30 #define COREGL_TRACEPATH_TRACE_APICALL_INFO // API call frequency info
\r
33 #ifdef COREGL_TRACEPATH_TRACE_APICALL_INFO
\r
34 # define _COREGL_TRACE_API_BEGIN(api, hint, trace_total_time) \
35 tracepath_api_trace_begin(api, hint, trace_total_time);
\r
36 # define _COREGL_TRACE_API_END(api, hint, trace_total_time) \
37 tracepath_api_trace_end(api, hint, trace_total_time);
\r
38 # define _COREGL_TRACE_API_OUTPUT(force_output) \
39 tracepath_api_trace_output(force_output);
\r
41 # define _COREGL_TRACE_API_BEGIN(api, hint, trace_total_time) NULL;
42 # define _COREGL_TRACE_API_END(api, hint, trace_total_time)
43 # define _COREGL_TRACE_API_OUTPUT(force_output)
46 #define _COREGL_TRACEPATH_FUNC_BEGIN() \
\r
47 if (unlikely(trace_api_flag == 1)) \
48 _COREGL_TRACE_API_BEGIN(__func__, NULL, 1);
50 #define _COREGL_TRACEPATH_FUNC_END() \
\r
51 if (unlikely(trace_api_flag == 1)) \
52 _COREGL_TRACE_API_END(__func__, NULL, 1);
54 typedef struct _Tracepath_ThreadState
\r
56 Trace_Data **ftd_table;
57 } Tracepath_ThreadState;
\r
59 extern void init_modules_tracepath();
\r
60 extern void deinit_modules_tracepath();
\r
61 extern void init_modules_tstate_tracepath(GLThreadState *tstate);
\r
62 extern void deinit_modules_tstate_tracepath(GLThreadState *tstate);
\r
65 extern void tracepath_apply_overrides();
\r
66 extern void tracepath_apply_overrides_egl();
\r
67 extern void tracepath_apply_overrides_gl();
\r
69 extern void tracepath_dump_context_states(int force_output);
\r
71 extern void *tracepath_api_trace_begin(const char *name, void *hint, int trace_total_time);
\r
72 extern void *tracepath_api_trace_end(const char *name, void *hint, int trace_total_time);
\r
73 extern void tracepath_api_trace_output(int force_output);
\r
75 #endif // COREGL_TRACEPATH_H
\r