Mesa (master): st/vdpau: really block until surface is idle

Christian König deathsimple at kemper.freedesktop.org
Wed Oct 9 11:56:33 UTC 2013


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

Author: Grigori Goronzy <greg at chown.ath.cx>
Date:   Wed Oct  9 02:23:52 2013 +0200

st/vdpau: really block until surface is idle

pipe_screen::fence_finish with zero timeout returns quickly and
doesn't wait at all. Fix that, and also delete the fence afterwards,
so that QuerySurfaceStatus returns the right state later.

Addresses:
https://trac.videolan.org/vlc/ticket/9281
https://bugs.freedesktop.org/show_bug.cgi?id=68792

Reviewed-by: Christian König <christian.koenig at amd.com>

---

 src/gallium/state_trackers/vdpau/presentation.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/state_trackers/vdpau/presentation.c b/src/gallium/state_trackers/vdpau/presentation.c
index c9f8ea7..81e0328 100644
--- a/src/gallium/state_trackers/vdpau/presentation.c
+++ b/src/gallium/state_trackers/vdpau/presentation.c
@@ -325,7 +325,8 @@ vlVdpPresentationQueueBlockUntilSurfaceIdle(VdpPresentationQueue presentation_qu
    pipe_mutex_lock(pq->device->mutex);
    if (surf->fence) {
       screen = pq->device->vscreen->pscreen;
-      screen->fence_finish(screen, surf->fence, 0);
+      screen->fence_finish(screen, surf->fence, PIPE_TIMEOUT_INFINITE);
+      screen->fence_reference(screen, &surf->fence, NULL);
    }
    pipe_mutex_unlock(pq->device->mutex);
 




More information about the mesa-commit mailing list