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> {

Reply via email to