From ad0aab939dd74592eef0a2882bd7457baed68151 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 18 May 2010 23:38:33 +0100 Subject: [PATCH] material: remove override options from _cogl_material_equal As a follow on to using cogl_material_copy instead of flush options this patch now removes the ability to pass flush options to _cogl_material_equal which is the final reference to the CoglMaterialFlushOptions mechanism. --- clutter/cogl/cogl/cogl-journal.c | 4 +- clutter/cogl/cogl/cogl-material-private.h | 2 - clutter/cogl/cogl/cogl-material.c | 60 +++++------------------ 3 files changed, 14 insertions(+), 52 deletions(-) diff --git a/clutter/cogl/cogl/cogl-journal.c b/clutter/cogl/cogl/cogl-journal.c index 085405f5f..01d61e44d 100644 --- a/clutter/cogl/cogl/cogl-journal.c +++ b/clutter/cogl/cogl/cogl-journal.c @@ -349,9 +349,7 @@ compare_entry_materials (CoglJournalEntry *entry0, CoglJournalEntry *entry1) * that we that we are able to batch the 90% common cases, but may not * look at less common differences. */ if (_cogl_material_equal (entry0->material, - NULL, entry1->material, - NULL, TRUE)) return TRUE; else @@ -797,7 +795,7 @@ _cogl_journal_log_quad (const float *position, _cogl_material_apply_legacy_state (source); } - flush_options.flags = COGL_MATERIAL_FLUSH_SKIP_GL_COLOR; + flush_options.flags = 0; if (G_UNLIKELY (cogl_material_get_n_layers (material) != n_layers)) { disable_layers = (1 << n_layers) - 1; diff --git a/clutter/cogl/cogl/cogl-material-private.h b/clutter/cogl/cogl/cogl-material-private.h index a272034d0..f66e3d1c3 100644 --- a/clutter/cogl/cogl/cogl-material-private.h +++ b/clutter/cogl/cogl/cogl-material-private.h @@ -688,9 +688,7 @@ _cogl_material_flush_gl_state (CoglHandle material, gboolean _cogl_material_equal (CoglHandle material0_handle, - CoglMaterialFlushOptions *material0_flush_options, CoglHandle material1_handle, - CoglMaterialFlushOptions *material1_flush_options, gboolean skip_gl_color); CoglHandle diff --git a/clutter/cogl/cogl/cogl-material.c b/clutter/cogl/cogl/cogl-material.c index d1d7cd9ff..5d6523a45 100644 --- a/clutter/cogl/cogl/cogl-material.c +++ b/clutter/cogl/cogl/cogl-material.c @@ -3005,46 +3005,21 @@ _cogl_material_compare_differences (CoglMaterial *material0, * False positives aren't allowed. */ gboolean -_cogl_material_equal (CoglHandle material0_handle, - CoglMaterialFlushOptions *material0_flush_options, - CoglHandle material1_handle, - CoglMaterialFlushOptions *material1_flush_options, +_cogl_material_equal (CoglHandle handle0, + CoglHandle handle1, gboolean skip_gl_color) { - CoglMaterial *material0; - CoglMaterial *material1; - gboolean material0_overridden = FALSE; - gboolean material1_overridden = FALSE; + CoglMaterial *material0 = COGL_MATERIAL (handle0); + CoglMaterial *material1 = COGL_MATERIAL (handle1); unsigned long materials_difference; - gboolean equal = FALSE; - - if (material0_flush_options->flags) - { - /* XXX: we really need to get rid of overrides! */ - material0 = cogl_material_copy (material0_handle); - _cogl_material_apply_overrides (material0, material0_flush_options); - material0_overridden = TRUE; - } - else - material0 = COGL_MATERIAL (material0_handle); - - if (material1_flush_options->flags) - { - /* XXX: we really need to get rid of overrides! */ - material1 = cogl_material_copy (material1_handle); - _cogl_material_apply_overrides (material1, material1_flush_options); - material1_overridden = TRUE; - } - else - material1 = COGL_MATERIAL (material1_handle); if (material0 == material1) - goto done; + return TRUE; /* First check non-sparse properties */ if (material0->real_blend_enable != material1->real_blend_enable) - goto done; + return FALSE; /* Then check sparse properties */ @@ -3062,7 +3037,7 @@ _cogl_material_equal (CoglHandle material0_handle, COGL_MATERIAL_STATE_COLOR); if (!cogl_color_equal (&authority0->color, &authority1->color)) - goto done; + return FALSE; } if (materials_difference & COGL_MATERIAL_STATE_LIGHTING) @@ -3075,7 +3050,7 @@ _cogl_material_equal (CoglHandle material0_handle, COGL_MATERIAL_STATE_LIGHTING); if (!_cogl_material_lighting_state_equal (authority0, authority1)) - goto done; + return FALSE; } if (materials_difference & COGL_MATERIAL_STATE_ALPHA_FUNC) @@ -3088,7 +3063,7 @@ _cogl_material_equal (CoglHandle material0_handle, COGL_MATERIAL_STATE_ALPHA_FUNC); if (!_cogl_material_alpha_state_equal (authority0, authority1)) - goto done; + return FALSE; } if (materials_difference & COGL_MATERIAL_STATE_BLEND) @@ -3101,7 +3076,7 @@ _cogl_material_equal (CoglHandle material0_handle, COGL_MATERIAL_STATE_BLEND); if (!_cogl_material_blend_state_equal (authority0, authority1)) - goto done; + return FALSE; } if (materials_difference & COGL_MATERIAL_STATE_BLEND_ENABLE) @@ -3114,7 +3089,7 @@ _cogl_material_equal (CoglHandle material0_handle, COGL_MATERIAL_STATE_BLEND_ENABLE); if (authority0->blend_enable != authority1->blend_enable) - goto done; + return FALSE; } if (materials_difference & COGL_MATERIAL_STATE_LAYERS) @@ -3127,19 +3102,10 @@ _cogl_material_equal (CoglHandle material0_handle, COGL_MATERIAL_STATE_LAYERS); if (!_cogl_material_layers_equal (authority0, authority1)) - goto done; + return FALSE; } - equal = TRUE; - -done: - - if (material0_overridden) - cogl_handle_unref (material0); - if (material1_overridden) - cogl_handle_unref (material1); - - return equal; + return TRUE; } void