--- ./cogl/cogl/cogl-framebuffer.c 2018-07-14 20:49:25.000000000 +0200 +++ /home/gert/src_mut0_chg/mutter-3.30.0/./cogl/cogl/cogl-framebuffer.c 2018-12-18 00:08:18.146437040 +0100 @@ -523,7 +523,14 @@ float width, float height) { - CoglContext *context = framebuffer->context; + CoglContext *context; + if (x > 100000.0) + { + _cogl_journal_set_ff (framebuffer->journal); + return; + } + context = framebuffer->context; + _COGL_RETURN_IF_FAIL (width > 0 && height > 0); --- ./cogl/cogl/cogl-journal-private.h 2018-07-14 20:49:25.000000000 +0200 +++ /home/gert/src_mut0_chg/mutter-3.30.0/./cogl/cogl/cogl-journal-private.h 2018-12-17 22:49:24.497614984 +0100 @@ -68,6 +68,9 @@ CoglList pending_fences; + int first; + int flush_first; + } CoglJournal; /* To improve batching of geometry when submitting vertices to OpenGL we @@ -99,6 +102,9 @@ _cogl_journal_flush (CoglJournal *journal); void +_cogl_journal_set_ff (CoglJournal *journal); + +void _cogl_journal_discard (CoglJournal *journal); CoglBool --- ./cogl/cogl/cogl-journal.c 2018-07-14 20:49:25.000000000 +0200 +++ /home/gert/src_mut0_chg/mutter-3.30.0/./cogl/cogl/cogl-journal.c 2018-12-18 00:12:37.157458383 +0100 @@ -162,6 +162,8 @@ journal->vertices = g_array_new (FALSE, FALSE, sizeof (float)); _cogl_list_init (&journal->pending_fences); + journal->first = 1; + journal->flush_first = 0; return _cogl_journal_object_new (journal); } @@ -1314,6 +1316,7 @@ if (journal->entries->len == 0) { post_fences (journal); + journal->first = 1; return; } @@ -1414,6 +1417,7 @@ COGL_TIMER_STOP (_cogl_uprof_context, discard_timer); post_fences (journal); + journal->first = 1; COGL_TIMER_STOP (_cogl_uprof_context, flush_timer); } @@ -1566,8 +1570,9 @@ add_framebuffer_deps_cb, framebuffer); - if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_DISABLE_BATCHING))) + if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_DISABLE_BATCHING)) || (journal->first && journal->flush_first)) _cogl_journal_flush (journal); + journal->first = 0; COGL_TIMER_STOP (_cogl_uprof_context, log_timer); } @@ -1851,3 +1856,17 @@ journal->fast_read_pixel_count++; return TRUE; } + +void +_cogl_journal_set_ff (CoglJournal *journal) +{ + if (journal->flush_first) + { + journal->flush_first = 0; + } + else + { + journal->flush_first = 1; + } +} + --- ./clutter/clutter/cogl/clutter-stage-cogl.c 2018-07-14 20:49:25.000000000 +0200 +++ /home/gert/src_mut0_chg/mutter-3.30.0/./clutter/clutter/cogl/clutter-stage-cogl.c 2018-12-17 22:56:54.855241924 +0100 @@ -754,7 +754,11 @@ cogl_framebuffer_pop_clip (fb); } else + { + cogl_framebuffer_set_viewport (fb, 100006.0, 0,0,0); paint_stage (stage_cogl, view, &view_rect); + cogl_framebuffer_set_viewport (fb, 100007.0, 0,0,0); + } } cogl_pop_framebuffer ();