[cogl/wip/rib/cogl-1.12: 17/101] journal: avoiding some _cogl_matrix_entry_get()'s



commit 265a77d5d58da3f8339d9bdbccb11cc49251b5d0
Author: Robert Bragg <robert linux intel com>
Date:   Tue Apr 3 13:32:47 2012 +0100

    journal: avoiding some _cogl_matrix_entry_get()'s
    
    When uploading the vertices the journal calls _cogl_matrix_entry_get()
    to get a CoglMatrix for each journal entry so that it can so a software
    transform. Since _cogl_matrix_entry_get() can be a performance hot-spot
    and since it's trivial to keep track of the last CoglMatrixEntry seen we
    now avoid repeatedly calling _cogl_matrix_entry_get() for sequential
    entries with the same transform.
    
    Reviewed-by: Neil Roberts <neil linux intel com>
    (cherry picked from commit 70cad61533316e2303b8e188f2f361701dfb0c61)

 cogl/cogl-journal.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/cogl/cogl-journal.c b/cogl/cogl-journal.c
index 5d2a09b..41ebabd 100644
--- a/cogl/cogl-journal.c
+++ b/cogl/cogl-journal.c
@@ -1070,6 +1070,8 @@ upload_vertices (CoglJournal *journal,
   float *vout;
   int entry_num;
   int i;
+  CoglMatrixEntry *last_modelview_entry = NULL;
+  CoglMatrix modelview;
 
   g_assert (needed_vbo_len);
 
@@ -1107,7 +1109,6 @@ upload_vertices (CoglJournal *journal,
       else
         {
           float v[8];
-          CoglMatrix modelview;
 
           v[0] = vin[0];
           v[1] = vin[1];
@@ -1118,7 +1119,8 @@ upload_vertices (CoglJournal *journal,
           v[6] = vin[array_stride];
           v[7] = vin[1];
 
-          _cogl_matrix_entry_get (entry->modelview_entry, &modelview);
+          if (entry->modelview_entry != last_modelview_entry)
+            _cogl_matrix_entry_get (entry->modelview_entry, &modelview);
           cogl_matrix_transform_points (&modelview,
                                         2, /* n_components */
                                         sizeof (float) * 2, /* stride_in */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]