mirror of
https://gitlab.com/gabmus/envision.git
synced 2025-04-19 19:14:53 +00:00
parent
db45103d1b
commit
f38199601e
5 changed files with 9 additions and 73 deletions
1
dist/arch/PKGBUILD
vendored
1
dist/arch/PKGBUILD
vendored
|
@ -33,7 +33,6 @@ makedepends=(
|
||||||
)
|
)
|
||||||
optdepends=(
|
optdepends=(
|
||||||
'libudev0-shim: steamvr_lh lighthouse driver support'
|
'libudev0-shim: steamvr_lh lighthouse driver support'
|
||||||
'monado-vulkan-layers-git: Vulkan layers for NVIDIA users'
|
|
||||||
)
|
)
|
||||||
provides=(envision)
|
provides=(envision)
|
||||||
conflicts=(envision)
|
conflicts=(envision)
|
||||||
|
|
|
@ -81,12 +81,6 @@ pub fn populate_debug_info(dialog: &adw::AboutDialog, vkinfo: Option<&VulkanInfo
|
||||||
.map(|i| i.gpu_names.join(", "))
|
.map(|i| i.gpu_names.join(", "))
|
||||||
.unwrap_or(UNKNOWN.into())
|
.unwrap_or(UNKNOWN.into())
|
||||||
),
|
),
|
||||||
format!(
|
|
||||||
"Monado Vulkan Layers: {}",
|
|
||||||
vkinfo
|
|
||||||
.map(|i| i.has_monado_vulkan_layers.to_string())
|
|
||||||
.unwrap_or(UNKNOWN.into())
|
|
||||||
),
|
|
||||||
format!("Detected XR Devices: {}", {
|
format!("Detected XR Devices: {}", {
|
||||||
let devs = PhysicalXRDevice::from_usb();
|
let devs = PhysicalXRDevice::from_usb();
|
||||||
if devs.is_empty() {
|
if devs.is_empty() {
|
||||||
|
|
|
@ -998,7 +998,6 @@ impl AsyncComponent for App {
|
||||||
config: config.clone(),
|
config: config.clone(),
|
||||||
selected_profile: selected_profile.clone(),
|
selected_profile: selected_profile.clone(),
|
||||||
root_win: root.clone().into(),
|
root_win: root.clone().into(),
|
||||||
vkinfo: vkinfo.clone(),
|
|
||||||
})
|
})
|
||||||
.forward(sender.input_sender(), |message| match message {
|
.forward(sender.input_sender(), |message| match message {
|
||||||
MainViewOutMsg::DoStartStopXRService => Msg::DoStartStopXRService,
|
MainViewOutMsg::DoStartStopXRService => Msg::DoStartStopXRService,
|
||||||
|
|
|
@ -25,7 +25,6 @@ use crate::{
|
||||||
file_utils::{get_writer, mount_has_nosuid},
|
file_utils::{get_writer, mount_has_nosuid},
|
||||||
steamvr_utils::chaperone_info_exists,
|
steamvr_utils::chaperone_info_exists,
|
||||||
},
|
},
|
||||||
vulkaninfo::VulkanInfo,
|
|
||||||
wivrn_dbus,
|
wivrn_dbus,
|
||||||
xr_devices::XRDevice,
|
xr_devices::XRDevice,
|
||||||
};
|
};
|
||||||
|
@ -75,8 +74,6 @@ pub struct MainView {
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
profile_export_action: gtk::gio::SimpleAction,
|
profile_export_action: gtk::gio::SimpleAction,
|
||||||
xrservice_ready: bool,
|
xrservice_ready: bool,
|
||||||
#[tracker::do_not_track]
|
|
||||||
vkinfo: Option<VulkanInfo>,
|
|
||||||
wivrn_pairing_mode: bool,
|
wivrn_pairing_mode: bool,
|
||||||
wivrn_pin: Option<String>,
|
wivrn_pin: Option<String>,
|
||||||
wivrn_supports_pairing: bool,
|
wivrn_supports_pairing: bool,
|
||||||
|
@ -126,7 +123,6 @@ pub struct MainViewInit {
|
||||||
pub config: Config,
|
pub config: Config,
|
||||||
pub selected_profile: Profile,
|
pub selected_profile: Profile,
|
||||||
pub root_win: gtk::Window,
|
pub root_win: gtk::Window,
|
||||||
pub vkinfo: Option<VulkanInfo>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MainView {
|
impl MainView {
|
||||||
|
@ -461,34 +457,6 @@ impl AsyncComponent for MainView {
|
||||||
set_wrap_mode: gtk::pango::WrapMode::Word,
|
set_wrap_mode: gtk::pango::WrapMode::Word,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
gtk::Box {
|
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
|
||||||
set_hexpand: true,
|
|
||||||
set_vexpand: false,
|
|
||||||
set_spacing: 12,
|
|
||||||
add_css_class: "card",
|
|
||||||
add_css_class: "padded",
|
|
||||||
set_visible: model
|
|
||||||
.vkinfo
|
|
||||||
.as_ref()
|
|
||||||
.is_some_and(
|
|
||||||
|i| i.has_nvidia_gpu && !i.has_monado_vulkan_layers
|
|
||||||
),
|
|
||||||
warning_heading(),
|
|
||||||
gtk::Label {
|
|
||||||
set_label: concat!(
|
|
||||||
"An Nvidia GPU has been detected, but it ",
|
|
||||||
"seems you don't have the Monado Vulkan Layers ",
|
|
||||||
"installed on your system.\n\nInstall the ",
|
|
||||||
"Monado Vulkan Layers or your XR session will ",
|
|
||||||
"crash."
|
|
||||||
),
|
|
||||||
add_css_class: "warning",
|
|
||||||
set_xalign: 0.0,
|
|
||||||
set_wrap: true,
|
|
||||||
set_wrap_mode: gtk::pango::WrapMode::Word,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
gtk::Box {
|
gtk::Box {
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
set_orientation: gtk::Orientation::Vertical,
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
|
@ -1103,7 +1071,6 @@ impl AsyncComponent for MainView {
|
||||||
xrservice_ready: false,
|
xrservice_ready: false,
|
||||||
profile_delete_action,
|
profile_delete_action,
|
||||||
profile_export_action,
|
profile_export_action,
|
||||||
vkinfo: init.vkinfo,
|
|
||||||
wivrn_pairing_mode: false,
|
wivrn_pairing_mode: false,
|
||||||
wivrn_supports_pairing: false,
|
wivrn_supports_pairing: false,
|
||||||
wivrn_pin: None,
|
wivrn_pin: None,
|
||||||
|
|
|
@ -5,12 +5,10 @@ use ash::{
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct VulkanInfo {
|
pub struct VulkanInfo {
|
||||||
pub has_nvidia_gpu: bool,
|
|
||||||
pub has_monado_vulkan_layers: bool,
|
|
||||||
pub gpu_names: Vec<String>,
|
pub gpu_names: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
const NVIDIA_VENDOR_ID: u32 = 0x10de;
|
// const NVIDIA_VENDOR_ID: u32 = 0x10de;
|
||||||
|
|
||||||
impl VulkanInfo {
|
impl VulkanInfo {
|
||||||
/// # Safety
|
/// # Safety
|
||||||
|
@ -25,40 +23,19 @@ impl VulkanInfo {
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
}?;
|
}?;
|
||||||
let mut has_nvidia_gpu = false;
|
|
||||||
let mut has_monado_vulkan_layers = false;
|
|
||||||
let gpu_names = unsafe { instance.enumerate_physical_devices() }?
|
let gpu_names = unsafe { instance.enumerate_physical_devices() }?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|d| {
|
.filter_map(|d| {
|
||||||
let props = unsafe { instance.get_physical_device_properties(d) };
|
Some(
|
||||||
if props.vendor_id == NVIDIA_VENDOR_ID {
|
unsafe { instance.get_physical_device_properties(d) }
|
||||||
has_nvidia_gpu = true;
|
.device_name_as_c_str()
|
||||||
}
|
.ok()?
|
||||||
if !has_monado_vulkan_layers {
|
.to_string_lossy()
|
||||||
has_monado_vulkan_layers =
|
.to_string(),
|
||||||
unsafe { instance.enumerate_device_layer_properties(d) }
|
)
|
||||||
.ok()
|
|
||||||
.map(|layerprops| {
|
|
||||||
layerprops.iter().any(|lp| {
|
|
||||||
lp.layer_name_as_c_str().is_ok_and(|name| {
|
|
||||||
name.to_string_lossy()
|
|
||||||
== "VK_LAYER_MND_enable_timeline_semaphore"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
== Some(true);
|
|
||||||
}
|
|
||||||
props
|
|
||||||
.device_name_as_c_str()
|
|
||||||
.ok()
|
|
||||||
.map(|cs| cs.to_string_lossy().to_string())
|
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
unsafe { instance.destroy_instance(None) };
|
unsafe { instance.destroy_instance(None) };
|
||||||
Ok(Self {
|
Ok(Self { gpu_names })
|
||||||
gpu_names,
|
|
||||||
has_nvidia_gpu,
|
|
||||||
has_monado_vulkan_layers,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue