summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLepton Wu <lepton@chromium.org>2019-09-10 03:42:55 +0000
committerDylan Baker <dylan@pnwbakers.com>2019-09-10 09:51:57 -0700
commit637e02c1b195b0e11f5fea6e36b1fc14c359f748 (patch)
treead355abad95702d6dc83db967c3de7e26afb83bf
parente4bb2ceb789e92da5af63959219ea13d57c1e71d (diff)
virgl: Fix pipe_resource leaks under multi-sample.
Fixes: 900a80f9e4f ("virgl: virgl_transfer should own its virgl_resource") Signed-off-by: Lepton Wu <lepton@chromium.org> Reviewed-by: Chia-I Wu <olvaffe@gmail.com> (cherry picked from commit 263136fb5d2646bea718579de272729b2474d31a)
-rw-r--r--src/gallium/drivers/virgl/virgl_texture.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/virgl/virgl_texture.c b/src/gallium/drivers/virgl/virgl_texture.c
index 570f96fb14c..1b39c6382dc 100644
--- a/src/gallium/drivers/virgl/virgl_texture.c
+++ b/src/gallium/drivers/virgl/virgl_texture.c
@@ -169,6 +169,9 @@ static void *texture_transfer_map_resolve(struct pipe_context *ctx,
if (!ptr)
goto fail;
+ /* trans->resolve_transfer owns resolve_tmp now */
+ pipe_resource_reference(&resolve_tmp, NULL);
+
*transfer = &trans->base;
if (fmt == resource->format) {
trans->base.stride = trans->resolve_transfer->stride;
@@ -283,7 +286,6 @@ static void virgl_texture_transfer_unmap(struct pipe_context *ctx,
}
if (trans->resolve_transfer) {
- pipe_resource_reference(&trans->resolve_transfer->resource, NULL);
virgl_resource_destroy_transfer(vctx,
virgl_transfer(trans->resolve_transfer));
}