I wonder... do we still need XA considering that everybody can just use glamor instead?
Marek On Wed, Jul 8, 2015 at 7:39 PM, Rob Clark <robdcl...@gmail.com> wrote: > From: Rob Clark <robcl...@freedesktop.org> > > XA was never unref'ing last_fence in the various call paths to > pipe->flush(). Add this to xa_context_flush() and update the other > open-coded calls to pipe->flush() to use xa_context_flush() instead. > > This fixes a memory leak reported with xf86-video-freedreno. > > Reported-by: Nicolas Dechesne <nicolas.deche...@linaro.org> > Cc: "10.5 10.6" <mesa-sta...@lists.freedesktop.org> > Signed-off-by: Rob Clark <robcl...@freedesktop.org> > --- > src/gallium/state_trackers/xa/xa_context.c | 6 +++++- > src/gallium/state_trackers/xa/xa_tracker.c | 2 +- > src/gallium/state_trackers/xa/xa_yuv.c | 2 +- > 3 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/src/gallium/state_trackers/xa/xa_context.c > b/src/gallium/state_trackers/xa/xa_context.c > index fd49c82..ebfb290 100644 > --- a/src/gallium/state_trackers/xa/xa_context.c > +++ b/src/gallium/state_trackers/xa/xa_context.c > @@ -37,7 +37,11 @@ > XA_EXPORT void > xa_context_flush(struct xa_context *ctx) > { > - ctx->pipe->flush(ctx->pipe, &ctx->last_fence, 0); > + if (ctx->last_fence) { > + struct pipe_screen *screen = ctx->xa->screen; > + screen->fence_reference(screen, &ctx->last_fence, NULL); > + } > + ctx->pipe->flush(ctx->pipe, &ctx->last_fence, 0); > } > > XA_EXPORT struct xa_context * > diff --git a/src/gallium/state_trackers/xa/xa_tracker.c > b/src/gallium/state_trackers/xa/xa_tracker.c > index a384c1c..1df1da7 100644 > --- a/src/gallium/state_trackers/xa/xa_tracker.c > +++ b/src/gallium/state_trackers/xa/xa_tracker.c > @@ -464,7 +464,7 @@ xa_surface_redefine(struct xa_surface *srf, > xa_min(save_height, template->height0), &src_box); > pipe->resource_copy_region(pipe, texture, > 0, 0, 0, 0, srf->tex, 0, &src_box); > - pipe->flush(pipe, &xa->default_ctx->last_fence, 0); > + xa_context_flush(xa->default_ctx); > } > > pipe_resource_reference(&srf->tex, texture); > diff --git a/src/gallium/state_trackers/xa/xa_yuv.c > b/src/gallium/state_trackers/xa/xa_yuv.c > index 1519639..97a1833 100644 > --- a/src/gallium/state_trackers/xa/xa_yuv.c > +++ b/src/gallium/state_trackers/xa/xa_yuv.c > @@ -154,7 +154,7 @@ xa_yuv_planar_blit(struct xa_context *r, > box++; > } > > - r->pipe->flush(r->pipe, &r->last_fence, 0); > + xa_context_flush(r); > > xa_ctx_sampler_views_destroy(r); > xa_ctx_srf_destroy(r); > -- > 2.4.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev