From: Jerome Glisse <jgli...@redhat.com> Some code calling the flush function gave a fence pointer that point to an old fence and should be unreference to avoid leaking fence.
Candidate for 9.1 Signed-off-by: Jerome Glisse <jgli...@redhat.com> --- src/gallium/drivers/r600/r600_pipe.c | 8 +++++--- src/gallium/drivers/radeonsi/radeonsi_pipe.c | 9 ++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 78002ae..4bcfc67 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -145,12 +145,14 @@ static void r600_flush_from_st(struct pipe_context *ctx, enum pipe_flush_flags flags) { struct r600_context *rctx = (struct r600_context *)ctx; - struct r600_fence **rfence = (struct r600_fence**)fence; + struct r600_fence *rfence; unsigned fflags; fflags = flags & PIPE_FLUSH_END_OF_FRAME ? RADEON_FLUSH_END_OF_FRAME : 0; - if (rfence) { - *rfence = r600_create_fence(rctx); + if (fence) { + rfence = r600_create_fence(rctx); + ctx->screen->fence_reference(ctx->screen, fence, + (struct pipe_fence_handle *)rfence); } /* flush gfx & dma ring, order does not matter as only one can be live */ if (rctx->rings.dma.cs) { diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c b/src/gallium/drivers/radeonsi/radeonsi_pipe.c index acf3e2d..3272fe2 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c +++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c @@ -135,12 +135,15 @@ void radeonsi_flush(struct pipe_context *ctx, struct pipe_fence_handle **fence, unsigned flags) { struct r600_context *rctx = (struct r600_context *)ctx; - struct r600_fence **rfence = (struct r600_fence**)fence; + struct r600_fence *rfence; struct pipe_query *render_cond = NULL; unsigned render_cond_mode = 0; - if (rfence) - *rfence = r600_create_fence(rctx); + if (fence) { + rfence = r600_create_fence(rctx); + ctx->screen->fence_reference(ctx->screen, fence, + (struct pipe_fence_handle *)rfence); + } /* Disable render condition. */ if (rctx->current_render_cond) { -- 1.7.11.7 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev