From 4cbd4bead75cef0514a2a9a28e458cd8f8435f96 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 9 Dec 2024 14:39:57 +0100 Subject: [PATCH] rusticl/mesa: remove PipeTransfer::res The pipe_transfer struct already stores a pointer to the pipe_resource, so no need to store it inside the Rust wrapper as well. Reviewed-by: Adam Jackson Part-of: --- src/gallium/frontends/rusticl/mesa/pipe/transfer.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/gallium/frontends/rusticl/mesa/pipe/transfer.rs b/src/gallium/frontends/rusticl/mesa/pipe/transfer.rs index c1f6fad0a5a..b37b0851da0 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/transfer.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/transfer.rs @@ -7,7 +7,6 @@ use std::ptr; pub struct PipeTransfer<'a> { pipe: *mut pipe_transfer, - res: *mut pipe_resource, ptr: *mut c_void, is_buffer: bool, ctx: &'a PipeContext, @@ -18,12 +17,14 @@ unsafe impl Send for PipeTransfer<'_> {} impl Drop for PipeTransfer<'_> { fn drop(&mut self) { + // we need to copy the pointer here as the driver frees the pipe_transfer object. + let mut res = unsafe { (*self.pipe).resource }; if self.is_buffer { self.ctx.buffer_unmap(self.pipe); } else { self.ctx.texture_unmap(self.pipe); } - unsafe { pipe_resource_reference(&mut self.res, ptr::null_mut()) }; + unsafe { pipe_resource_reference(&mut res, ptr::null_mut()) }; } } @@ -34,12 +35,10 @@ impl<'a> PipeTransfer<'a> { pipe: *mut pipe_transfer, ptr: *mut c_void, ) -> Self { - let mut res: *mut pipe_resource = ptr::null_mut(); - unsafe { pipe_resource_reference(&mut res, (*pipe).resource) } + unsafe { pipe_resource_reference(&mut ptr::null_mut(), (*pipe).resource) } Self { pipe: pipe, - res: res, ptr: ptr, is_buffer: is_buffer, ctx: ctx,