steamvr poc works
This commit is contained in:
@@ -39,11 +39,11 @@ where
|
||||
get_screens_x11()
|
||||
};
|
||||
|
||||
let watch = create_watch::<T>(&app, &screens);
|
||||
overlays.insert(watch.state.id, watch);
|
||||
//let watch = create_watch::<T>(&app, &screens);
|
||||
//overlays.insert(watch.state.id, watch);
|
||||
|
||||
let keyboard = create_keyboard(&app);
|
||||
overlays.insert(keyboard.state.id, keyboard);
|
||||
//let keyboard = create_keyboard(&app);
|
||||
//overlays.insert(keyboard.state.id, keyboard);
|
||||
|
||||
let mut first = true;
|
||||
for mut screen in screens {
|
||||
|
||||
@@ -8,7 +8,7 @@ use ovr_overlay::overlay::OverlayManager;
|
||||
use vulkano::command_buffer::CommandBufferUsage;
|
||||
use vulkano::format::Format;
|
||||
use vulkano::image::view::ImageView;
|
||||
use vulkano::image::{ImageAccess, ImageLayout, ImageViewAbstract, ImmutableImage};
|
||||
use vulkano::image::ImageLayout;
|
||||
|
||||
use crate::backend::overlay::{OverlayData, OverlayRenderer, OverlayState, SplitOverlayBackend};
|
||||
use crate::graphics::WlxGraphics;
|
||||
@@ -20,7 +20,7 @@ static AUTO_INCREMENT: AtomicUsize = AtomicUsize::new(1);
|
||||
|
||||
pub(super) struct LinePool {
|
||||
lines: IdMap<usize, OverlayData<OpenVrOverlayData>>,
|
||||
view: Arc<ImageView<ImmutableImage>>,
|
||||
view: Arc<ImageView>,
|
||||
}
|
||||
|
||||
impl LinePool {
|
||||
@@ -34,7 +34,7 @@ impl LinePool {
|
||||
|
||||
graphics
|
||||
.transition_layout(
|
||||
texture.inner().image.clone(),
|
||||
texture.clone(),
|
||||
ImageLayout::ShaderReadOnlyOptimal,
|
||||
ImageLayout::TransferSrcOptimal,
|
||||
)
|
||||
@@ -116,7 +116,7 @@ impl LinePool {
|
||||
}
|
||||
|
||||
struct StaticRenderer {
|
||||
view: Arc<ImageView<ImmutableImage>>,
|
||||
view: Arc<ImageView>,
|
||||
}
|
||||
|
||||
impl OverlayRenderer for StaticRenderer {
|
||||
@@ -124,7 +124,7 @@ impl OverlayRenderer for StaticRenderer {
|
||||
fn pause(&mut self, _app: &mut AppState) {}
|
||||
fn resume(&mut self, _app: &mut AppState) {}
|
||||
fn render(&mut self, _app: &mut AppState) {}
|
||||
fn view(&mut self) -> Option<Arc<dyn ImageViewAbstract>> {
|
||||
fn view(&mut self) -> Option<Arc<ImageView>> {
|
||||
Some(self.view.clone())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ use ovr_overlay::{
|
||||
pose::Matrix3x4,
|
||||
sys::{ETrackingUniverseOrigin, VRVulkanTextureData_t},
|
||||
};
|
||||
use vulkano::{image::ImageAccess, Handle, VulkanObject};
|
||||
use vulkano::{Handle, VulkanObject};
|
||||
|
||||
use crate::{
|
||||
backend::overlay::{OverlayData, RelativeTo},
|
||||
@@ -195,7 +195,7 @@ impl OverlayData<OpenVrOverlayData> {
|
||||
return;
|
||||
};
|
||||
|
||||
let image = view.image().inner().image.clone();
|
||||
let image = view.image().clone();
|
||||
|
||||
let raw_image = image.handle().as_raw();
|
||||
|
||||
@@ -205,17 +205,14 @@ impl OverlayData<OpenVrOverlayData> {
|
||||
}
|
||||
}
|
||||
|
||||
let Some(format) = image.format() else {
|
||||
panic!("{}: Image format is None", self.state.name);
|
||||
};
|
||||
|
||||
let dimensions = image.dimensions();
|
||||
let dimensions = image.extent();
|
||||
let format = image.format();
|
||||
|
||||
let mut texture = VRVulkanTextureData_t {
|
||||
m_nImage: raw_image,
|
||||
m_nFormat: format as _,
|
||||
m_nWidth: dimensions.width(),
|
||||
m_nHeight: dimensions.height(),
|
||||
m_nWidth: dimensions[0],
|
||||
m_nHeight: dimensions[1],
|
||||
m_nSampleCount: image.samples() as u32,
|
||||
m_pDevice: graphics.device.handle().as_raw() as *mut _,
|
||||
m_pPhysicalDevice: graphics.device.physical_device().handle().as_raw() as *mut _,
|
||||
@@ -224,8 +221,9 @@ impl OverlayData<OpenVrOverlayData> {
|
||||
m_nQueueFamilyIndex: graphics.queue.queue_family_index(),
|
||||
};
|
||||
|
||||
log::debug!(
|
||||
"UploadTex: {:?}, {}x{}, {:?}",
|
||||
log::info!(
|
||||
"{}: UploadTex {:?}, {}x{}, {:?}",
|
||||
self.state.name,
|
||||
format,
|
||||
texture.m_nWidth,
|
||||
texture.m_nHeight,
|
||||
@@ -234,5 +232,6 @@ impl OverlayData<OpenVrOverlayData> {
|
||||
if let Err(e) = overlay.set_image_vulkan(handle, &mut texture) {
|
||||
panic!("Failed to set overlay texture: {}", e);
|
||||
}
|
||||
log::info!("{}: Uploaded texture", self.state.name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ use std::{
|
||||
};
|
||||
|
||||
use glam::{Affine2, Affine3A, Mat3A, Quat, Vec3, Vec3A};
|
||||
use vulkano::image::ImageViewAbstract;
|
||||
use vulkano::image::view::ImageView;
|
||||
|
||||
use crate::state::AppState;
|
||||
|
||||
@@ -134,7 +134,7 @@ where
|
||||
pub fn render(&mut self, app: &mut AppState) {
|
||||
self.backend.render(app);
|
||||
}
|
||||
pub fn view(&mut self) -> Option<Arc<dyn ImageViewAbstract>> {
|
||||
pub fn view(&mut self) -> Option<Arc<ImageView>> {
|
||||
self.backend.view()
|
||||
}
|
||||
}
|
||||
@@ -144,7 +144,7 @@ pub trait OverlayRenderer {
|
||||
fn pause(&mut self, app: &mut AppState);
|
||||
fn resume(&mut self, app: &mut AppState);
|
||||
fn render(&mut self, app: &mut AppState);
|
||||
fn view(&mut self) -> Option<Arc<dyn ImageViewAbstract>>;
|
||||
fn view(&mut self) -> Option<Arc<ImageView>>;
|
||||
}
|
||||
|
||||
pub struct FallbackRenderer;
|
||||
@@ -154,7 +154,7 @@ impl OverlayRenderer for FallbackRenderer {
|
||||
fn pause(&mut self, _app: &mut AppState) {}
|
||||
fn resume(&mut self, _app: &mut AppState) {}
|
||||
fn render(&mut self, _app: &mut AppState) {}
|
||||
fn view(&mut self) -> Option<Arc<dyn ImageViewAbstract>> {
|
||||
fn view(&mut self) -> Option<Arc<ImageView>> {
|
||||
None
|
||||
}
|
||||
}
|
||||
@@ -196,7 +196,7 @@ impl OverlayRenderer for SplitOverlayBackend {
|
||||
fn render(&mut self, app: &mut AppState) {
|
||||
self.renderer.render(app);
|
||||
}
|
||||
fn view(&mut self) -> Option<Arc<dyn ImageViewAbstract>> {
|
||||
fn view(&mut self) -> Option<Arc<ImageView>> {
|
||||
self.renderer.view()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user