Added unlikely hint of trace branch (Need to check performance)
authorHaegeun Park <haegeun.park@samsung.com>
Wed, 9 May 2012 08:14:45 +0000 (01:14 -0700)
committerHaegeun Park <haegeun.park@samsung.com>
Wed, 9 May 2012 08:14:45 +0000 (01:14 -0700)
src/coregl_fastpath.c
src/coregl_fastpath_egl.c
src/coregl_internal.h
src/coregl_wrappath.c
src/coregl_wrappath_egl.c

index 97d0292..0dc6d27 100644 (file)
@@ -175,7 +175,7 @@ dump_context_states(GLGlueContext *ctx, int force_output)
 {
        static struct timeval tv_last = { 0, 0 };
 
-       if (trace_state_flag != 1) return;
+       if (unlikely(trace_state_flag != 1)) return;
 
        if (!force_output)
        {
@@ -821,7 +821,7 @@ make_context_current(GLGlueContext *oldctx, GLGlueContext *newctx)
 finish:
 
 #ifdef COREGL_TRACE_STATE_INFO
-       if (trace_state_flag == 1)
+       if (unlikely(trace_state_flag == 1)) return;
                dump_context_states(newctx, 0);
 #endif // COREGL_TRACE_STATE_INFO
        return;
index 1988d20..ecc1e9a 100644 (file)
@@ -374,7 +374,7 @@ _unlink_context_state(GLGlueContext *gctx, Mutex *ctx_list_mtx)
                AST(cstate->data == NULL || cstate->data == initial_ctx);
 
 #ifdef COREGL_TRACE_CONTEXT_INFO
-               if (trace_ctx_flag == 1)
+               if (unlikely(trace_ctx_flag == 1))
                        remove_from_general_trace_list(&context_state_trace_list, cstate);
 #endif // COREGL_TRACE_CONTEXT_INFO
 
@@ -432,7 +432,7 @@ _remove_context_ref(GLGlueContext *gctx, Mutex *ctx_list_mtx)
        if (gctx->ref_count == 0)
        {
 #ifdef COREGL_TRACE_CONTEXT_INFO
-               if (trace_ctx_flag == 1)
+               if (unlikely(trace_ctx_flag == 1))
                        remove_from_general_trace_list(&glue_ctx_trace_list, gctx);
 #endif // COREGL_TRACE_CONTEXT_INFO
 
@@ -555,7 +555,7 @@ _egl_create_context(EGL_packed_option *real_ctx_option, GLContextState **cstate_
                AST(add_context_state_to_list(real_ctx_option, sizeof(EGL_packed_option), *cstate_new, &ctx_list_access_mutex) == 1);
 
 #ifdef COREGL_TRACE_CONTEXT_INFO
-               if (trace_ctx_flag == 1)
+               if (unlikely(trace_ctx_flag == 1))
                        add_to_general_trace_list(&context_state_trace_list, *cstate_new);
 #endif // COREGL_TRACE_CONTEXT_INFO
 
@@ -741,7 +741,7 @@ fpgl_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context
        gctx->cstate = cstate;
 
 #ifdef COREGL_TRACE_CONTEXT_INFO
-       if (trace_ctx_flag == 1)
+       if (unlikely(trace_ctx_flag == 1))
        {
                char ment[256];
                add_to_general_trace_list(&glue_ctx_trace_list, gctx);
@@ -779,7 +779,7 @@ finish:
                if (cstate_new != NULL)
                {
 #ifdef COREGL_TRACE_CONTEXT_INFO
-                       if (trace_ctx_flag == 1)
+                       if (unlikely(trace_ctx_flag == 1))
                                remove_from_general_trace_list(&context_state_trace_list, cstate_new);
 #endif // COREGL_TRACE_CONTEXT_INFO
 
@@ -840,7 +840,7 @@ finish:
        _COREGL_FAST_FUNC_END();
 
 #ifdef COREGL_TRACE_CONTEXT_INFO
-       if (trace_ctx_flag == 1)
+       if (unlikely(trace_ctx_flag == 1))
        {
                char ment[256];
                sprintf(ment, "eglDestroyContext completed (GlueCTX=[%12p])", ctx);
@@ -1119,7 +1119,7 @@ finish:
        _COREGL_FAST_FUNC_END();
 
 #ifdef COREGL_TRACE_CONTEXT_INFO
-       if (trace_ctx_flag == 1)
+       if (unlikely(trace_ctx_flag == 1))
        {
                char ment[256];
                sprintf(ment, "eglMakeCurrent finished (GlueCTX=[%12p] Surf=[D:%12p R:%12p])", ctx, draw, read);
index 0e2fbcc..b973b50 100644 (file)
@@ -5,6 +5,8 @@
 
 #include "coregl.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;
 # include "headers/sym.h"
@@ -90,11 +92,11 @@ typedef struct _Trace_Data Trace_Data;
 
 #define _COREGL_WRAP_FUNC_BEGIN() \
        static void *trace_hint = NULL; \
-       if (trace_api_flag == 1) \
+       if (unlikely(trace_api_flag == 1)) \
                trace_hint = _COREGL_TRACE_API_BEGIN(__func__, trace_hint, 1);
 
 #define _COREGL_WRAP_FUNC_END() \
-       if (trace_api_flag == 1) \
+       if (unlikely(trace_api_flag == 1)) \
                _COREGL_TRACE_API_END(__func__, trace_hint, 1);
 
 typedef enum _CoreGL_Opt_Flag
index 5e79357..1900578 100644 (file)
@@ -51,7 +51,7 @@ dump_wrap_context_states(int force_output)
 {
        static struct timeval tv_last = { 0, 0 };
 
-       if (trace_state_flag != 1) return;
+       if (unlikely(trace_state_flag != 1)) return;
 
        _sym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, (GLint *)initial_fake_ctx->gl_num_tex_units);
        _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, (GLint *)initial_fake_ctx->gl_num_vertex_attribs);
index 126fd0f..9d82a77 100644 (file)
@@ -334,7 +334,7 @@ eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
 finish:
        _COREGL_WRAP_FUNC_END();
 #ifdef COREGL_TRACE_STATE_INFO
-       if (trace_state_flag == 1)
+       if (unlikely(trace_state_flag == 1))
        {
                if (ovr_eglMakeCurrent == _sym_eglMakeCurrent)
                        dump_wrap_context_states(0);