rusticl: remove unecessary transmutes around uuids

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38807>
This commit is contained in:
Karol Herbst 2025-10-02 17:18:37 +02:00 committed by Eric Engestrom
parent 3a203b7019
commit 301afbc313
2 changed files with 6 additions and 5 deletions

View file

@ -17,7 +17,6 @@ use rusticl_proc_macros::cl_info_entrypoint;
use std::ffi::c_char; use std::ffi::c_char;
use std::ffi::c_void; use std::ffi::c_void;
use std::mem::transmute;
use std::ptr; use std::ptr;
use std::slice; use std::slice;
@ -191,8 +190,11 @@ fn create_context(
} }
// gl sharing is only supported on devices with an UUID, so we can simply unwrap it // gl sharing is only supported on devices with an UUID, so we can simply unwrap it
let dev_uuid: [c_char; UUID_SIZE] = let dev_uuid: [c_char; UUID_SIZE] = dev
unsafe { transmute(dev.screen().device_uuid().unwrap_or_default()) }; .screen()
.device_uuid()
.unwrap_or_default()
.map(|val| val as c_char);
if gl_ctx_manager.interop_dev_info.device_uuid != dev_uuid { if gl_ctx_manager.interop_dev_info.device_uuid != dev_uuid {
// we only support gl_sharing on the same device // we only support gl_sharing on the same device
return Err(CL_INVALID_OPERATION); return Err(CL_INVALID_OPERATION);

View file

@ -30,7 +30,6 @@ use std::convert::TryInto;
use std::env; use std::env;
use std::ffi::CStr; use std::ffi::CStr;
use std::fmt::Debug; use std::fmt::Debug;
use std::mem::transmute;
use std::num::NonZeroU64; use std::num::NonZeroU64;
use std::ops::Deref; use std::ops::Deref;
use std::os::raw::*; use std::os::raw::*;
@ -1421,7 +1420,7 @@ pub fn get_devs_for_type(device_type: cl_device_type) -> Vec<&'static Device> {
pub fn get_dev_for_uuid(uuid: [c_char; UUID_SIZE]) -> Option<&'static Device> { pub fn get_dev_for_uuid(uuid: [c_char; UUID_SIZE]) -> Option<&'static Device> {
devs().iter().find(|d| { devs().iter().find(|d| {
let uuid: [c_uchar; UUID_SIZE] = unsafe { transmute(uuid) }; let uuid: [c_uchar; UUID_SIZE] = uuid.map(|val| val as c_uchar);
uuid == d.screen().device_uuid().unwrap() uuid == d.screen().device_uuid().unwrap()
}) })
} }