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

Author: Rob Clark <[email protected]>
Date:   Fri May  8 15:56:23 2015 -0400

freedreno: fence fix

A fence can outlive the ctx, so we shouldn't deref the ctx to get at the
screen.  We need some updates in libdrm_freedreno API to completely
handle fences properly, but this is at least an improvement.

Signed-off-by: Rob Clark <[email protected]>

---

 src/gallium/drivers/freedreno/freedreno_fence.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_fence.c 
b/src/gallium/drivers/freedreno/freedreno_fence.c
index 46b057d..375e58f 100644
--- a/src/gallium/drivers/freedreno/freedreno_fence.c
+++ b/src/gallium/drivers/freedreno/freedreno_fence.c
@@ -35,6 +35,7 @@
 struct pipe_fence_handle {
        struct pipe_reference reference;
        struct fd_context *ctx;
+       struct fd_screen *screen;
        uint32_t timestamp;
 };
 
@@ -68,7 +69,7 @@ boolean fd_screen_fence_finish(struct pipe_screen *screen,
                struct pipe_fence_handle *fence,
                uint64_t timeout)
 {
-       if (fd_pipe_wait(fence->ctx->screen->pipe, fence->timestamp))
+       if (fd_pipe_wait(fence->screen->pipe, fence->timestamp))
                return false;
 
        return true;
@@ -86,6 +87,7 @@ struct pipe_fence_handle * fd_fence_create(struct 
pipe_context *pctx)
        pipe_reference_init(&fence->reference, 1);
 
        fence->ctx = ctx;
+       fence->screen = ctx->screen;
        fence->timestamp = fd_ringbuffer_timestamp(ctx->ring);
 
        return fence;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to