Module: Mesa Branch: main Commit: b4d052e4cbdfc5eeb59276239e8b6d5223ffc6df URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4d052e4cbdfc5eeb59276239e8b6d5223ffc6df
Author: LingMan <[email protected]> Date: Sun Nov 5 01:54:29 2023 +0100 rusticl: Only put an Arc around PipeScreen where needed This only delays moving the PipeSceen into the Arc, but makes is clearer where the Arc's properties are needed. Reviewed-by: Karol Herbst <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26050> --- src/gallium/frontends/rusticl/core/device.rs | 3 ++- src/gallium/frontends/rusticl/mesa/pipe/device.rs | 5 ++--- src/gallium/frontends/rusticl/mesa/pipe/screen.rs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gallium/frontends/rusticl/core/device.rs b/src/gallium/frontends/rusticl/core/device.rs index 537de45f2ee..abfec04d82a 100644 --- a/src/gallium/frontends/rusticl/core/device.rs +++ b/src/gallium/frontends/rusticl/core/device.rs @@ -215,11 +215,12 @@ impl<'a> HelperContextWrapper for HelperContext<'a> { impl_cl_type_trait!(cl_device_id, Device, CL_INVALID_DEVICE); impl Device { - fn new(screen: Arc<PipeScreen>) -> Option<Arc<Device>> { + fn new(screen: PipeScreen) -> Option<Arc<Device>> { if !Self::check_valid(&screen) { return None; } + let screen = Arc::new(screen); // Create before loading libclc as llvmpipe only creates the shader cache with the first // context being created. let helper_ctx = screen.create_context()?; diff --git a/src/gallium/frontends/rusticl/mesa/pipe/device.rs b/src/gallium/frontends/rusticl/mesa/pipe/device.rs index 83046aed60d..301042c4e3e 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/device.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/device.rs @@ -4,7 +4,6 @@ use mesa_rust_gen::*; use mesa_rust_util::string::c_string_to_string; use std::collections::HashMap; -use std::sync::Arc; use std::{env, ptr}; #[derive(PartialEq)] @@ -20,7 +19,7 @@ impl PipeLoaderDevice { Some(Self { ldev }) } - fn load_screen(self) -> Option<Arc<PipeScreen>> { + fn load_screen(self) -> Option<PipeScreen> { let s = unsafe { pipe_loader_create_screen(self.ldev) }; PipeScreen::new(self, s) } @@ -91,7 +90,7 @@ fn get_enabled_devs() -> HashMap<String, u32> { res } -pub fn load_screens() -> Vec<Arc<PipeScreen>> { +pub fn load_screens() -> Vec<PipeScreen> { let devs = load_devs(); let mut enabled_devs = get_enabled_devs(); diff --git a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs index 427ecc982f9..28dc85d0f13 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs @@ -89,12 +89,12 @@ impl ResourceType { } impl PipeScreen { - pub(super) fn new(ldev: PipeLoaderDevice, screen: *mut pipe_screen) -> Option<Arc<Self>> { + pub(super) fn new(ldev: PipeLoaderDevice, screen: *mut pipe_screen) -> Option<Self> { if screen.is_null() || !has_required_cbs(screen) { return None; } - Some(Arc::new(Self { ldev, screen })) + Some(Self { ldev, screen }) } pub fn create_context(self: &Arc<Self>) -> Option<PipeContext> {
