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



commit 550bae22d20c8d6d7cf1d090faa9c91619594077
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>

 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 7a9765b..379cc82 100644
--- a/cogl/cogl-attribute.c
+++ b/cogl/cogl-attribute.c
@@ -646,6 +646,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);
 
   ctx->driver_vtable->flush_attributes_state (framebuffer,
                                               pipeline,
diff --git a/cogl/cogl-framebuffer-private.h b/cogl/cogl-framebuffer-private.h
index 507c62d..58e95b8 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 90cc382..4753b1a 100644
--- a/cogl/cogl-framebuffer.c
+++ b/cogl/cogl-framebuffer.c
@@ -224,9 +224,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;
 }
 
@@ -354,6 +359,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]