Mesa (master): st/mesa: always unconditionally revalidate main framebuffer after SwapBuffers

Marek Olšák mareko at kemper.freedesktop.org
Thu Jul 27 22:58:44 UTC 2017


Module: Mesa
Branch: master
Commit: 7257c171e9eadc05903140cffa26a253f0d0178a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7257c171e9eadc05903140cffa26a253f0d0178a

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Jul 25 17:34:52 2017 +0200

st/mesa: always unconditionally revalidate main framebuffer after SwapBuffers

This fixes the black Feral launcher window.

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

Cc: 17.2 <mesa-stable at lists.freedesktop.org>
Tested-by: Edmondo Tommasina <edmondo.tommasina at gmail.com>

---

 src/mesa/state_tracker/st_manager.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index 97bf89fc65..62924b099e 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -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




More information about the mesa-commit mailing list