[maemo-commits] [maemo-commits] r18506 - in projects/haf/trunk/clutter0.8: clutter clutter/cogl/gles debian
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed May 27 14:29:58 EEST 2009
- Previous message: [maemo-commits] r18505 - projects/haf/trunk/hildon-thumbnail/daemon/plugins
- Next message: [maemo-commits] r18507 - in projects/haf/trunk/hildon-thumbnail: . daemon thumbnailers/gst-video-thumbnailer
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: gw Date: 2009-05-27 14:29:45 +0300 (Wed, 27 May 2009) New Revision: 18506 Modified: projects/haf/trunk/clutter0.8/clutter/clutter-actor.c projects/haf/trunk/clutter0.8/clutter/clutter-fixed.h projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-gles2-wrapper.c projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-texture.c projects/haf/trunk/clutter0.8/debian/changelog Log: Speedups based on profiling * clutter/clutter-actor.c: Disable visibility detection by default - we must enable it explicitly for actors in hildon-desktop now * clutter/clutter-fixed.h: Now use macro rather than inline asm function - this produces much better assembler for cogl_util_mtx_transform * clutter/cogl/gles/cogl-gles2-wrapper.c: slight unroll + big speedup for cogl_gles2_wrapper_mult_matrix, also special case for cogl_translatex which accounted for most of the cogl_gles2_wrapper_mult_matrix calls. * clutter/cogl/gles/cogl-texture.c: changed 'if !cogl_is_texture' to g_return_if_fail, as we don't want these runtime checks, and cogl_is_texture is *very* slow (linear search) Modified: projects/haf/trunk/clutter0.8/clutter/clutter-actor.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-actor.c 2009-05-27 11:28:07 UTC (rev 18505) +++ projects/haf/trunk/clutter0.8/clutter/clutter-actor.c 2009-05-27 11:29:45 UTC (rev 18506) @@ -2978,7 +2978,7 @@ priv->scale_y = CFX_ONE; priv->shader_data = NULL; priv->show_on_set_parent = TRUE; - priv->visibility_detect = TRUE; + priv->visibility_detect = FALSE; priv->allow_redraw = TRUE; priv->needs_width_request = TRUE; Modified: projects/haf/trunk/clutter0.8/clutter/clutter-fixed.h =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-fixed.h 2009-05-27 11:28:07 UTC (rev 18505) +++ projects/haf/trunk/clutter0.8/clutter/clutter-fixed.h 2009-05-27 11:29:45 UTC (rev 18506) @@ -290,7 +290,12 @@ #define CFX_INT CLUTTER_FIXED_INT #define CFX_MUL CLUTTER_FIXED_MUL #define CFX_DIV CLUTTER_FIXED_DIV -#define CFX_QMUL(x,y) clutter_qmulx (x,y) +//#define CFX_QMUL(x,y) clutter_qmulx (x,y) +/* remove inline asm function as the overhead is greater than just inlining - + * and it doesn't include the possibility of evaluating as a constant + * expression */ +#define CFX_QMUL(x,y) \ + ((ClutterFixed)(((long long)(x) * (long long)(y)) >> CFX_Q)) #define CFX_QDIV(x,y) clutter_qdivx (x,y) /*< public >*/ Modified: projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-gles2-wrapper.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-gles2-wrapper.c 2009-05-27 11:28:07 UTC (rev 18505) +++ projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-gles2-wrapper.c 2009-05-27 11:29:45 UTC (rev 18506) @@ -664,15 +664,16 @@ static void cogl_gles2_wrapper_mult_matrix (float *dst, const float *a, const float *b) { - int i, j, k; + int i, j; - for (i = 0; i < 4; i++) + for (i = 0; i < 16; i+=4) for (j = 0; j < 4; j++) { - float sum = 0.0f; - for (k = 0; k < 4; k++) - sum += a[k * 4 + j] * b[i * 4 + k]; - dst[i * 4 + j] = sum; + dst[i + j] = + a[j] * b[i] + + a[4 + j] * b[i + 1] + + a[8 + j] * b[i + 2] + + a[12 + j] * b[i + 3]; } } @@ -767,12 +768,7 @@ void cogl_wrap_glTranslatex (GLfixed x, GLfixed y, GLfixed z) { - float matrix[16]; - - if (x==0 && y==0 && z==0) - return; - - memset (matrix, 0, sizeof (matrix)); + /*memset (matrix, 0, sizeof (matrix)); matrix[0] = 1.0f; matrix[5] = 1.0f; matrix[10] = 1.0f; @@ -781,7 +777,29 @@ matrix[14] = CLUTTER_FIXED_TO_FLOAT (z); matrix[15] = 1.0f; - cogl_wrap_glMultMatrix (matrix); + cogl_wrap_glMultMatrix (matrix);*/ + + + if (x!=0 || y!=0 || z!=0) + { + float *matrix; + float fx, fy, fz; + + _COGL_GET_GLES2_WRAPPER (w, NO_RETVAL); + + fx = CLUTTER_FIXED_TO_FLOAT (x); + fy = CLUTTER_FIXED_TO_FLOAT (y); + fz = CLUTTER_FIXED_TO_FLOAT (z); + + matrix = cogl_gles2_get_matrix_stack_top (w); + + matrix[12] += matrix[0]*fx + matrix[4]*fy + matrix[8]*fz; + matrix[13] += matrix[1]*fx + matrix[5]*fy + matrix[9]*fz; + matrix[14] += matrix[2]*fx + matrix[6]*fy + matrix[10]*fz; + matrix[15] += matrix[3]*fx + matrix[7]*fy + matrix[11]*fz; + + cogl_gles2_wrapper_update_matrix (w, w->matrix_mode); + } } void Modified: projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-texture.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-texture.c 2009-05-27 11:28:07 UTC (rev 18505) +++ projects/haf/trunk/clutter0.8/clutter/cogl/gles/cogl-texture.c 2009-05-27 11:29:45 UTC (rev 18506) @@ -1385,8 +1385,7 @@ CoglTexture *tex; /* Check if valid texture handle */ - if (!cogl_is_texture (handle)) - return; + g_return_if_fail( cogl_is_texture (handle) ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1412,8 +1411,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return 0; + g_return_val_if_fail( cogl_is_texture (handle), 0 ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1425,8 +1423,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return 0; + g_return_val_if_fail( cogl_is_texture (handle), 0 ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1438,8 +1435,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return COGL_PIXEL_FORMAT_ANY; + g_return_val_if_fail( cogl_is_texture (handle), COGL_PIXEL_FORMAT_ANY ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1451,8 +1447,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return 0; + g_return_val_if_fail( cogl_is_texture (handle), 0 ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1464,8 +1459,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return 0; + g_return_val_if_fail( cogl_is_texture (handle), 0 ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1477,8 +1471,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return FALSE; + g_return_val_if_fail( cogl_is_texture (handle), FALSE ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1498,8 +1491,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return FALSE; + g_return_val_if_fail( cogl_is_texture (handle), FALSE ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1523,8 +1515,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return 0; + g_return_val_if_fail( cogl_is_texture (handle), 0 ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1536,8 +1527,7 @@ { CoglTexture *tex; - if (!cogl_is_texture (handle)) - return 0; + g_return_val_if_fail( cogl_is_texture (handle), 0 ); tex = _cogl_texture_pointer_from_handle (handle); @@ -1995,8 +1985,7 @@ ClutterFixed tempx; /* Check if valid texture */ - if (!cogl_is_texture (handle)) - return; + g_return_if_fail( cogl_is_texture (handle) ); tex = _cogl_texture_pointer_from_handle (handle); @@ -2072,8 +2061,7 @@ _COGL_GET_CONTEXT (ctx, NO_RETVAL); /* Check if valid texture */ - if (!cogl_is_texture (handle)) - return; + g_return_if_fail( cogl_is_texture (handle) ); tex = _cogl_texture_pointer_from_handle (handle); Modified: projects/haf/trunk/clutter0.8/debian/changelog =================================================================== --- projects/haf/trunk/clutter0.8/debian/changelog 2009-05-27 11:28:07 UTC (rev 18505) +++ projects/haf/trunk/clutter0.8/debian/changelog 2009-05-27 11:29:45 UTC (rev 18506) @@ -1,7 +1,18 @@ clutter (0.8.2-0maemo33~unreleased) unstable; urgency=low - * foo + Speedups based on profiling + * clutter/clutter-actor.c: Disable visibility detection by default - we must + enable it explicitly for actors in hildon-desktop now + * clutter/clutter-fixed.h: Now use macro rather than inline asm function - + this produces much better assembler for cogl_util_mtx_transform + * clutter/cogl/gles/cogl-gles2-wrapper.c: slight unroll + big speedup for + cogl_gles2_wrapper_mult_matrix, also special case for cogl_translatex + which accounted for most of the cogl_gles2_wrapper_mult_matrix calls. + * clutter/cogl/gles/cogl-texture.c: changed 'if !cogl_is_texture' to + g_return_if_fail, as we don't want these runtime checks, and + cogl_is_texture is *very* slow (linear search) + -- Gordon Williams <gordon.williams at collabora.co.uk> Wed, 27 May 2009 13:26:16 +0300 clutter (0.8.2-0maemo32) unstable; urgency=low
- Previous message: [maemo-commits] r18505 - projects/haf/trunk/hildon-thumbnail/daemon/plugins
- Next message: [maemo-commits] r18507 - in projects/haf/trunk/hildon-thumbnail: . daemon thumbnailers/gst-video-thumbnailer
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]