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 <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26050>
This commit is contained in:
LingMan 2023-11-05 01:54:29 +01:00 committed by Marge Bot
parent 8103be7faa
commit b4d052e4cb
3 changed files with 6 additions and 6 deletions

View file

@ -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()?;

View file

@ -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();

View file

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