1
0
Fork 0

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)
This commit is contained in:
Jasper St. Pierre 2013-11-29 16:16:37 -05:00 committed by Neil Roberts
parent 24412798dc
commit 1b0d0f3892
3 changed files with 11 additions and 1 deletions

View file

@ -647,6 +647,7 @@ _cogl_flush_attributes_state (CoglFramebuffer *framebuffer,
* in the journal. For this optimization to work we need to track * in the journal. For this optimization to work we need to track
* when the framebuffer really does get drawn to. */ * when the framebuffer really does get drawn to. */
_cogl_framebuffer_mark_mid_scene (framebuffer); _cogl_framebuffer_mark_mid_scene (framebuffer);
_cogl_framebuffer_mark_clear_clip_dirty (framebuffer);
if (G_UNLIKELY (!(flags & COGL_DRAW_SKIP_LEGACY_STATE)) && if (G_UNLIKELY (!(flags & COGL_DRAW_SKIP_LEGACY_STATE)) &&
G_UNLIKELY (ctx->legacy_state_set) && G_UNLIKELY (ctx->legacy_state_set) &&

View file

@ -239,6 +239,9 @@ _cogl_framebuffer_clear_without_flush4f (CoglFramebuffer *framebuffer,
float blue, float blue,
float alpha); float alpha);
void
_cogl_framebuffer_mark_clear_clip_dirty (CoglFramebuffer *framebuffer);
void void
_cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer); _cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer);

View file

@ -232,9 +232,14 @@ _cogl_framebuffer_clear_without_flush4f (CoglFramebuffer *framebuffer,
} }
void void
_cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer) _cogl_framebuffer_mark_clear_clip_dirty (CoglFramebuffer *framebuffer)
{ {
framebuffer->clear_clip_dirty = TRUE; framebuffer->clear_clip_dirty = TRUE;
}
void
_cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer)
{
framebuffer->mid_scene = TRUE; framebuffer->mid_scene = TRUE;
} }
@ -399,6 +404,7 @@ cogl_framebuffer_clear4f (CoglFramebuffer *framebuffer,
cleared: cleared:
_cogl_framebuffer_mark_mid_scene (framebuffer); _cogl_framebuffer_mark_mid_scene (framebuffer);
_cogl_framebuffer_mark_clear_clip_dirty (framebuffer);
if (buffers & COGL_BUFFER_BIT_COLOR && buffers & COGL_BUFFER_BIT_DEPTH) if (buffers & COGL_BUFFER_BIT_COLOR && buffers & COGL_BUFFER_BIT_DEPTH)
{ {