idk wut im doin

This commit is contained in:
awtterpip
2023-08-23 18:58:49 -05:00
parent c30935a292
commit eaa244d247
3 changed files with 15 additions and 10 deletions

View File

@@ -5,8 +5,8 @@ use bevy::window::RawHandleWrapper;
use wgpu::Instance; use wgpu::Instance;
use crate::input::XrInput; use crate::input::XrInput;
use crate::resources::{XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrViews}; use crate::resources::{XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrViews, XrFrameState};
pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Result<(RenderDevice, RenderQueue, RenderAdapterInfo, RenderAdapter, Instance, XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrInput, XrViews)>{ pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Result<(RenderDevice, RenderQueue, RenderAdapterInfo, RenderAdapter, Instance, XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrInput, XrViews, XrFrameState)>{
vulkan::initialize_xr_graphics(window) vulkan::initialize_xr_graphics(window)
} }

View File

@@ -13,7 +13,7 @@ use wgpu::Instance;
use crate::input::XrInput; use crate::input::XrInput;
use crate::resources::{ use crate::resources::{
XrEnvironmentBlendMode, XrFrameWaiter, XrInstance, XrSession, XrSessionRunning, XrSwapchain, Swapchain, SwapchainInner, XrViews, XrEnvironmentBlendMode, XrFrameWaiter, XrInstance, XrSession, XrSessionRunning, XrSwapchain, Swapchain, SwapchainInner, XrViews, XrFrameState,
}; };
use crate::VIEW_TYPE; use crate::VIEW_TYPE;
@@ -31,6 +31,7 @@ pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Resul
XrSwapchain, XrSwapchain,
XrInput, XrInput,
XrViews, XrViews,
XrFrameState,
)> { )> {
use wgpu_hal::{api::Vulkan as V, Api}; use wgpu_hal::{api::Vulkan as V, Api};
@@ -371,6 +372,7 @@ pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Resul
})).into(), })).into(),
XrInput::new(xr_instance, session.into_any_graphics())?, XrInput::new(xr_instance, session.into_any_graphics())?,
Mutex::default().into(), Mutex::default().into(),
Mutex::default().into(),
)) ))
} }

View File

@@ -36,6 +36,7 @@ pub struct FutureXrResources(
XrSwapchain, XrSwapchain,
XrInput, XrInput,
XrViews, XrViews,
XrFrameState,
)>, )>,
>, >,
>, >,
@@ -59,7 +60,7 @@ impl Plugin for OpenXrPlugin {
bevy::tasks::IoTaskPool::get() bevy::tasks::IoTaskPool::get()
.spawn_local(async move { .spawn_local(async move {
let (device, queue, adapter_info, render_adapter, instance, xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views) = graphics::initialize_xr_graphics(primary_window).unwrap(); let (device, queue, adapter_info, render_adapter, instance, xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views, frame_state) = graphics::initialize_xr_graphics(primary_window).unwrap();
debug!("Configured wgpu adapter Limits: {:#?}", device.limits()); debug!("Configured wgpu adapter Limits: {:#?}", device.limits());
debug!("Configured wgpu adapter Features: {:#?}", device.features()); debug!("Configured wgpu adapter Features: {:#?}", device.features());
let mut future_renderer_resources_inner = let mut future_renderer_resources_inner =
@@ -68,11 +69,11 @@ impl Plugin for OpenXrPlugin {
Some((device, queue, adapter_info, render_adapter, instance)); Some((device, queue, adapter_info, render_adapter, instance));
let mut future_xr_resources_inner = future_xr_resources_wrapper.lock().unwrap(); let mut future_xr_resources_inner = future_xr_resources_wrapper.lock().unwrap();
*future_xr_resources_inner = *future_xr_resources_inner =
Some((xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views)); Some((xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views, frame_state));
}) })
.detach(); .detach();
app.add_systems(Last, pre_frame);
} }
fn ready(&self, app: &App) -> bool { fn ready(&self, app: &App) -> bool {
@@ -86,7 +87,7 @@ impl Plugin for OpenXrPlugin {
if let Some(future_renderer_resources) = if let Some(future_renderer_resources) =
app.world.remove_resource::<FutureXrResources>() app.world.remove_resource::<FutureXrResources>()
{ {
let (instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views) = let (instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views, frame_state) =
future_renderer_resources.0.lock().unwrap().take().unwrap(); future_renderer_resources.0.lock().unwrap().take().unwrap();
app.insert_resource(instance.clone()) app.insert_resource(instance.clone())
@@ -96,7 +97,8 @@ impl Plugin for OpenXrPlugin {
.insert_resource(frame_waiter.clone()) .insert_resource(frame_waiter.clone())
.insert_resource(swapchain.clone()) .insert_resource(swapchain.clone())
.insert_resource(input.clone()) .insert_resource(input.clone())
.insert_resource(views.clone()); .insert_resource(views.clone())
.insert_resource(frame_state.clone());
let render_app = app.sub_app_mut(RenderApp); let render_app = app.sub_app_mut(RenderApp);
@@ -107,8 +109,9 @@ impl Plugin for OpenXrPlugin {
.insert_resource(frame_waiter) .insert_resource(frame_waiter)
.insert_resource(swapchain) .insert_resource(swapchain)
.insert_resource(input) .insert_resource(input)
.insert_resource(views); .insert_resource(views)
render_app.add_systems(Render, (post_frame.in_set(RenderSet::Prepare), post_queue_submit.in_set(RenderSet::Cleanup))); .insert_resource(frame_state);
render_app.add_systems(Render, (pre_frame.in_set(RenderSet::Prepare).before(post_frame), post_frame.in_set(RenderSet::Prepare), post_queue_submit.in_set(RenderSet::Cleanup)));
} }
} }