st/mesa: always unconditionally revalidate main framebuffer after SwapBuffers
authorMarek Olšák <marek.olsak@amd.com>
Tue, 25 Jul 2017 15:34:52 +0000 (17:34 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 27 Jul 2017 22:24:39 +0000 (00:24 +0200)
This fixes the black Feral launcher window.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101867

Cc: 17.2 <mesa-stable@lists.freedesktop.org>
Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
src/mesa/state_tracker/st_manager.c

index 97bf89fc6555680942b3c317a92becc4840650dc..62924b099e93eb8efffd909c7bdefdcee4ac57f3 100644 (file)
@@ -642,6 +642,16 @@ st_context_flush(struct st_context_iface *stctxi, unsigned flags,
 
    if (flags & ST_FLUSH_FRONT)
       st_manager_flush_frontbuffer(st);
+
+   /* DRI3 changes the framebuffer after SwapBuffers, but we need to invoke
+    * st_manager_validate_framebuffers to notice that.
+    *
+    * Set gfx_shaders_may_be_dirty to invoke st_validate_state in the next
+    * draw call, which will invoke st_manager_validate_framebuffers, but it
+    * won't dirty states if there is no change.
+    */
+   if (flags & ST_FLUSH_END_OF_FRAME)
+      st->gfx_shaders_may_be_dirty = true;
 }
 
 static boolean