mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-18 04:40:26 +01:00
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:
parent
8103be7faa
commit
b4d052e4cb
3 changed files with 6 additions and 6 deletions
|
|
@ -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()?;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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> {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue