Module: Mesa
Branch: main
Commit: 536283555e3036933f78665ba6a54544de308203
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=536283555e3036933f78665ba6a54544de308203

Author: norablackcat <[email protected]>
Date:   Sat May 20 09:05:36 2023 -0600

rusticl/screen: implement uuid wrapper funcs

Reviewed-by: Karol Herbst <[email protected]>
Tested-by: Andrey Alekseenko <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23147>

---

 src/gallium/frontends/rusticl/mesa/pipe/screen.rs | 37 +++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs 
b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs
index 053d423af15..27ed706317a 100644
--- a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs
+++ b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs
@@ -11,6 +11,8 @@ use mesa_rust_util::string::*;
 use std::convert::TryInto;
 use std::ffi::CStr;
 use std::mem::size_of;
+use std::os::raw::c_char;
+use std::os::raw::c_uchar;
 use std::os::raw::c_void;
 use std::ptr;
 use std::sync::Arc;
@@ -21,6 +23,9 @@ pub struct PipeScreen {
     screen: *mut pipe_screen,
 }
 
+const UUID_SIZE: usize = PIPE_UUID_SIZE as usize;
+const LUID_SIZE: usize = PIPE_LUID_SIZE as usize;
+
 // until we have a better solution
 pub trait ComputeParam<T> {
     fn compute_param(&self, cap: pipe_compute_cap) -> T;
@@ -229,6 +234,28 @@ impl PipeScreen {
         }
     }
 
+    pub fn device_node_mask(&self) -> Option<u32> {
+        unsafe { Some((*self.screen).get_device_node_mask?(self.screen)) }
+    }
+
+    pub fn device_uuid(&self) -> Option<[c_uchar; UUID_SIZE]> {
+        let mut uuid = [0; UUID_SIZE];
+        let ptr = uuid.as_mut_ptr();
+        unsafe {
+            (*self.screen).get_device_uuid?(self.screen, ptr.cast());
+        }
+
+        Some(uuid)
+    }
+
+    pub fn device_luid(&self) -> Option<[c_uchar; LUID_SIZE]> {
+        let mut luid = [0; LUID_SIZE];
+        let ptr = luid.as_mut_ptr();
+        unsafe { (*self.screen).get_device_luid?(self.screen, ptr.cast()) }
+
+        Some(luid)
+    }
+
     pub fn device_vendor(&self) -> String {
         unsafe {
             let s = *self.screen;
@@ -240,6 +267,16 @@ impl PipeScreen {
         unsafe { *self.ldev.ldev }.type_
     }
 
+    pub fn driver_uuid(&self) -> Option<[c_char; UUID_SIZE]> {
+        let mut uuid = [0; UUID_SIZE];
+        let ptr = uuid.as_mut_ptr();
+        unsafe {
+            (*self.screen).get_driver_uuid?(self.screen, ptr.cast());
+        }
+
+        Some(uuid)
+    }
+
     pub fn cl_cts_version(&self) -> &CStr {
         unsafe {
             let s = *self.screen;

Reply via email to