mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
xa: don't leak fences
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.dechesne@linaro.org>
Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
(cherry picked from commit 0a8af6361e)
This commit is contained in:
parent
4a3d6d04e1
commit
9e62e1a1d3
3 changed files with 7 additions and 3 deletions
|
|
@ -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 *
|
||||
|
|
|
|||
|
|
@ -461,7 +461,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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue