[cogl/wip/rib/cogl-1.12: 58/142] journal: avoiding some _cogl_matrix_entry_get()'s
- From: Robert Bragg <rbragg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl/wip/rib/cogl-1.12: 58/142] journal: avoiding some _cogl_matrix_entry_get()'s
- Date: Wed, 1 Aug 2012 07:07:07 +0000 (UTC)
commit 3ca5b3ae5798d6b268b122a6757441219c588dba
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]