From b4d052e4cbdfc5eeb59276239e8b6d5223ffc6df Mon Sep 17 00:00:00 2001 From: LingMan <18294-LingMan@users.noreply.gitlab.freedesktop.org> Date: Sun, 5 Nov 2023 01:54:29 +0100 Subject: [PATCH] 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 Part-of: --- 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) -> Option> { + fn new(screen: PipeScreen) -> Option> { 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> { + fn load_screen(self) -> Option { let s = unsafe { pipe_loader_create_screen(self.ldev) }; PipeScreen::new(self, s) } @@ -91,7 +90,7 @@ fn get_enabled_devs() -> HashMap { res } -pub fn load_screens() -> Vec> { +pub fn load_screens() -> Vec { 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> { + pub(super) fn new(ldev: PipeLoaderDevice, screen: *mut pipe_screen) -> Option { 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) -> Option {