diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2013-11-29 16:16:37 -0500 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2013-12-17 14:24:28 +0000 |
commit | 5bfc41c6fac044af662d2ce7aab34ed0caea43c0 (patch) | |
tree | f25e10fbef6c3a63f357cc52703c13e78e0b9d0a | |
parent | 83e31cdf179454994a5e26a0801f272794695eab (diff) | |
download | cogl-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.c | 1 | ||||
-rw-r--r-- | cogl/cogl-framebuffer-private.h | 3 | ||||
-rw-r--r-- | cogl/cogl-framebuffer.c | 8 |
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) { |