[cogl/cogl-1.18] cogl-framebuffer: Don't mark the clear clip dirty from the journal



commit 1b0d0f3892eec816f9dfd78736f5f33d6036b7ac
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Fri Nov 29 16:16:37 2013 -0500

    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)

 cogl/cogl-attribute.c           |    1 +
 cogl/cogl-framebuffer-private.h |    3 +++
 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 4992007..1bd6b42 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 52bd1cd..f7386e1 100644
--- a/cogl/cogl-framebuffer-private.h
+++ b/cogl/cogl-framebuffer-private.h
@@ -240,6 +240,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);
 
 /*
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
index 3e5796b..1e29bff 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)
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]