rusticl/kernel: get rid of Arcs in KernelDevStateVariant
authorKarol Herbst <kherbst@redhat.com>
Wed, 4 Oct 2023 23:24:28 +0000 (01:24 +0200)
committerMarge Bot <emma+marge@anholt.net>
Sat, 14 Oct 2023 09:34:56 +0000 (09:34 +0000)
We only used Arcs as we wanted to deal with either getting a reference or
having an owned temporary. But we can also just use a local variable for
temporary storage.

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: @LingMan <18294-LingMan@users.noreply.gitlab.freedesktop.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24062>

src/gallium/frontends/rusticl/core/kernel.rs
src/gallium/frontends/rusticl/core/program.rs

index 8ef491e..09ab0bd 100644 (file)
@@ -267,15 +267,15 @@ pub struct CSOWrapper {
 }
 
 impl CSOWrapper {
-    pub fn new(dev: &'static Device, nir: &NirShader) -> Arc<Self> {
+    pub fn new(dev: &'static Device, nir: &NirShader) -> Self {
         let cso_ptr = dev
             .helper_ctx()
             .create_compute_state(nir, nir.shared_size());
 
-        Arc::new(Self {
+        Self {
             cso_ptr: cso_ptr,
             dev: dev,
-        })
+        }
     }
 
     pub fn get_cso_info(&self) -> pipe_compute_state_object_info {
@@ -290,8 +290,8 @@ impl Drop for CSOWrapper {
 }
 
 pub enum KernelDevStateVariant {
-    Cso(Arc<CSOWrapper>),
-    Nir(Arc<NirShader>),
+    Cso(CSOWrapper),
+    Nir(NirShader),
 }
 
 pub struct Kernel {
@@ -1054,9 +1054,13 @@ impl Kernel {
                 );
             }
 
+            let temp_cso;
             let cso = match &nir_kernel_build.nir_or_cso {
-                KernelDevStateVariant::Cso(cso) => cso.clone(),
-                KernelDevStateVariant::Nir(nir) => CSOWrapper::new(q.device, nir),
+                KernelDevStateVariant::Cso(cso) => cso,
+                KernelDevStateVariant::Nir(nir) => {
+                    temp_cso = CSOWrapper::new(q.device, nir);
+                    &temp_cso
+                }
             };
 
             ctx.bind_compute_state(cso.cso_ptr);
index 5d838de..0a3703c 100644 (file)
@@ -93,7 +93,7 @@ impl NirKernelBuild {
         let printf_info = nir.take_printf_info();
 
         let nir_or_cso = if !dev.shareable_shaders() {
-            KernelDevStateVariant::Nir(Arc::new(nir))
+            KernelDevStateVariant::Nir(nir)
         } else {
             KernelDevStateVariant::Cso(cso)
         };