[mutter] cogl: Move some pre-layer-change-notify code into the driver
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] cogl: Move some pre-layer-change-notify code into the driver
- Date: Thu, 18 Jun 2020 18:19:46 +0000 (UTC)
commit 4ff58cc63f5383d1bf037376c0fcf64426fdb79a
Author: Adam Jackson <ajax redhat com>
Date: Thu Jan 16 16:42:16 2020 -0500
cogl: Move some pre-layer-change-notify code into the driver
A CoglTextureUnit is a GL-specific type, this should happen in the
driver not the core.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1194
cogl/cogl/cogl-pipeline-layer.c | 12 ------------
cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c | 10 ++++++++++
2 files changed, 10 insertions(+), 12 deletions(-)
---
diff --git a/cogl/cogl/cogl-pipeline-layer.c b/cogl/cogl/cogl-pipeline-layer.c
index c6f13696a8..3362c62204 100644
--- a/cogl/cogl/cogl-pipeline-layer.c
+++ b/cogl/cogl/cogl-pipeline-layer.c
@@ -44,7 +44,6 @@
#include "cogl-node-private.h"
#include "cogl-context-private.h"
#include "cogl-texture-private.h"
-#include "driver/gl/cogl-pipeline-opengl-private.h"
#include <string.h>
@@ -342,8 +341,6 @@ _cogl_pipeline_layer_pre_change_notify (CoglPipeline *required_owner,
CoglPipelineLayer *layer,
CoglPipelineLayerState change)
{
- CoglTextureUnit *unit;
-
/* Identify the case where the layer is new with no owner or
* dependants and so we don't need to do anything. */
if (_cogl_list_empty (&COGL_NODE (layer)->children) &&
@@ -403,15 +400,6 @@ _cogl_pipeline_layer_pre_change_notify (CoglPipeline *required_owner,
progend->layer_pre_change_notify (required_owner, layer, change);
}
- /* If the layer being changed is the same as the last layer we
- * flushed to the corresponding texture unit then we keep a track of
- * the changes so we can try to minimize redundant OpenGL calls if
- * the same layer is flushed again.
- */
- unit = _cogl_get_texture_unit (_cogl_pipeline_layer_get_unit_index (layer));
- if (unit->layer == layer)
- unit->layer_changes_since_flush |= change;
-
init_layer_state:
if (required_owner)
diff --git a/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c
b/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c
index 8b318deb59..083308cedc 100644
--- a/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c
+++ b/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c
@@ -953,6 +953,7 @@ _cogl_pipeline_progend_glsl_layer_pre_change_notify (
CoglPipelineLayerState change)
{
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
+ CoglTextureUnit *unit;
if ((change & (_cogl_pipeline_get_layer_state_for_fragment_codegen (ctx) |
COGL_PIPELINE_LAYER_STATE_AFFECTS_VERTEX_CODEGEN)))
@@ -977,6 +978,15 @@ _cogl_pipeline_progend_glsl_layer_pre_change_notify (
program_state->unit_state[unit_index].dirty_texture_matrix = TRUE;
}
}
+
+ /* If the layer being changed is the same as the last layer we
+ * flushed to the corresponding texture unit then we keep a track of
+ * the changes so we can try to minimize redundant OpenGL calls if
+ * the same layer is flushed again.
+ */
+ unit = _cogl_get_texture_unit (_cogl_pipeline_layer_get_unit_index (layer));
+ if (unit->layer == layer)
+ unit->layer_changes_since_flush |= change;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]