summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-11-29 16:16:37 -0500
committerNeil Roberts <neil@linux.intel.com>2013-12-17 14:24:28 +0000
commit5bfc41c6fac044af662d2ce7aab34ed0caea43c0 (patch)
treef25e10fbef6c3a63f357cc52703c13e78e0b9d0a
parent83e31cdf179454994a5e26a0801f272794695eab (diff)
downloadcogl-5bfc41c6fac044af662d2ce7aab34ed0caea43c0.tar.gz
cogl-framebuffer: Don't mark the clear clip dirty from the journal
This means that we can't cache the journal read_pixels optimization. https://bugzilla.gnome.org/show_bug.cgi?id=719582 Reviewed-by: Neil Roberts <neil@linux.intel.com> Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 550bae22d20c8d6d7cf1d090faa9c91619594077)
-rw-r--r--cogl/cogl-attribute.c1
-rw-r--r--cogl/cogl-framebuffer-private.h3
-rw-r--r--cogl/cogl-framebuffer.c8
3 files changed, 11 insertions, 1 deletions
diff --git a/cogl/cogl-attribute.c b/cogl/cogl-attribute.c
index 49920071..1bd6b42e 100644
--- a/cogl/cogl-attribute.c
+++ b/cogl/cogl-attribute.c
@@ -647,6 +647,7 @@ _cogl_flush_attributes_state (CoglFramebuffer *framebuffer,
* in the journal. For this optimization to work we need to track
* when the framebuffer really does get drawn to. */
_cogl_framebuffer_mark_mid_scene (framebuffer);
+ _cogl_framebuffer_mark_clear_clip_dirty (framebuffer);
if (G_UNLIKELY (!(flags & COGL_DRAW_SKIP_LEGACY_STATE)) &&
G_UNLIKELY (ctx->legacy_state_set) &&
diff --git a/cogl/cogl-framebuffer-private.h b/cogl/cogl-framebuffer-private.h
index 233f1c52..dabd1e0b 100644
--- a/cogl/cogl-framebuffer-private.h
+++ b/cogl/cogl-framebuffer-private.h
@@ -237,6 +237,9 @@ _cogl_framebuffer_clear_without_flush4f (CoglFramebuffer *framebuffer,
float alpha);
void
+_cogl_framebuffer_mark_clear_clip_dirty (CoglFramebuffer *framebuffer);
+
+void
_cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer);
CoglClipState *
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
index 20863ffd..e7caefa8 100644
--- a/cogl/cogl-framebuffer.c
+++ b/cogl/cogl-framebuffer.c
@@ -232,9 +232,14 @@ _cogl_framebuffer_clear_without_flush4f (CoglFramebuffer *framebuffer,
}
void
-_cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer)
+_cogl_framebuffer_mark_clear_clip_dirty (CoglFramebuffer *framebuffer)
{
framebuffer->clear_clip_dirty = TRUE;
+}
+
+void
+_cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer)
+{
framebuffer->mid_scene = TRUE;
}
@@ -399,6 +404,7 @@ cogl_framebuffer_clear4f (CoglFramebuffer *framebuffer,
cleared:
_cogl_framebuffer_mark_mid_scene (framebuffer);
+ _cogl_framebuffer_mark_clear_clip_dirty (framebuffer);
if (buffers & COGL_BUFFER_BIT_COLOR && buffers & COGL_BUFFER_BIT_DEPTH)
{