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;
