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

Author: Nicolai Hähnle <nicolai.haeh...@amd.com>
Date:   Wed Nov 22 17:52:43 2017 +0100

radeonsi: try flushing unflushed fences in si_fence_finish even when timeout == 0

Under certain conditions, waiting on a GL sync objects should act like
a flush, regardless of the timeout.

Portal 2, CS:GO, and presumably other Source engine games rely on this
behavior and hang during loading without this fix.

Fixes: bc65dcab3bc4 ("radeonsi: avoid syncing the driver thread in 
si_fence_finish")

Signed-off-by: Marek Olšák <marek.ol...@amd.com>
Tested-by: Kai Wasserbäch <k...@dev.carbon-project.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103902
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103904

---

 src/gallium/drivers/radeonsi/si_fence.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_fence.c 
b/src/gallium/drivers/radeonsi/si_fence.c
index 9d6bcfe102..b835ed649e 100644
--- a/src/gallium/drivers/radeonsi/si_fence.c
+++ b/src/gallium/drivers/radeonsi/si_fence.c
@@ -191,9 +191,6 @@ static boolean si_fence_finish(struct pipe_screen *screen,
        int64_t abs_timeout = os_time_get_absolute_timeout(timeout);
 
        if (!util_queue_fence_is_signalled(&rfence->ready)) {
-               if (!timeout)
-                       return false;
-
                if (rfence->tc_token) {
                        /* Ensure that si_flush_from_st will be called for
                         * this fence, but only if we're in the API thread
@@ -207,6 +204,9 @@ static boolean si_fence_finish(struct pipe_screen *screen,
                                               timeout == 0);
                }
 
+               if (!timeout)
+                       return false;
+
                if (timeout == PIPE_TIMEOUT_INFINITE) {
                        util_queue_fence_wait(&rfence->ready);
                } else {

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to