Skip to content

Commit 669dec6

Browse files
committed
fix: cargo xtask generate
1 parent c4dc457 commit 669dec6

14 files changed

Lines changed: 476 additions & 206 deletions

File tree

generated/graphics/ash/cargo-gpu/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "30896871ba00e
2929
glam = { version = "0.32.0", default-features = false }
3030
bytemuck = { version = "1.24.0", features = ["derive"] }
3131
raw-window-handle = "0.6.2"
32-
winit = "0.30.0"
32+
winit = "0.30.13"
3333
env_logger = "0.11.8"
3434
anyhow = "1.0.98"
3535

generated/graphics/ash/spirv-builder/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "30896871ba00e
3030
glam = { version = "0.32.0", default-features = false }
3131
bytemuck = { version = "1.24.0", features = ["derive"] }
3232
raw-window-handle = "0.6.2"
33-
winit = "0.30.0"
33+
winit = "0.30.13"
3434
env_logger = "0.11.8"
3535
anyhow = "1.0.98"
3636

generated/graphics/wgpu/cargo-gpu/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ unexpected_cfgs = { level = "allow", check-cfg = ['cfg(target_arch, values("spir
1717

1818
[workspace.dependencies]
1919
# API
20-
wgpu = { version = "27.0.1", default-features = false, features = ["std", "parking_lot", "vulkan", "vulkan-portability", "spirv", "wgsl"] }
20+
wgpu = { version = "29.0.1", default-features = false, features = ["std", "parking_lot", "vulkan", "vulkan-portability", "spirv", "wgsl"] }
2121
pollster = "0.4.0"
2222

2323
# rust-gpu
@@ -28,7 +28,7 @@ spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "30896871ba00e
2828
glam = { version = "0.32.0", default-features = false }
2929
bytemuck = { version = "1.24.0", features = ["derive"] }
3030
raw-window-handle = "0.6.2"
31-
winit = "0.30.0"
31+
winit = "0.30.13"
3232
env_logger = "0.11.8"
3333
anyhow = "1.0.98"
3434

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
use std::{sync::Arc, time::Instant};
2+
3+
use winit::{
4+
application::ApplicationHandler,
5+
dpi::LogicalSize,
6+
event::{ElementState, KeyEvent, WindowEvent},
7+
event_loop::ActiveEventLoop,
8+
keyboard::{Key, NamedKey},
9+
window::{Window, WindowId},
10+
};
11+
12+
use crate::wgpu_renderer::state::State;
13+
14+
pub(crate) struct App {
15+
start: Instant,
16+
state: Option<State>,
17+
}
18+
19+
impl App {
20+
pub fn new() -> Self {
21+
let start = std::time::Instant::now();
22+
23+
App { start, state: None }
24+
}
25+
26+
pub fn try_resume(&mut self, event_loop: &ActiveEventLoop) -> anyhow::Result<()> {
27+
let attribs = Window::default_attributes()
28+
.with_title("Rust GPU - wgpu")
29+
.with_inner_size(LogicalSize::new(1280, 720));
30+
31+
let window = event_loop.create_window(attribs).map(Arc::new)?;
32+
33+
let state = pollster::block_on(State::try_new(
34+
event_loop.owned_display_handle(),
35+
window.clone(),
36+
))?;
37+
self.state = Some(state);
38+
39+
window.request_redraw();
40+
41+
Ok(())
42+
}
43+
}
44+
45+
impl ApplicationHandler for App {
46+
fn resumed(&mut self, event_loop: &ActiveEventLoop) {
47+
if let Err(e) = self.try_resume(event_loop) {
48+
eprintln!("Failed to resume: {e:?}");
49+
event_loop.exit();
50+
}
51+
}
52+
53+
fn window_event(&mut self, event_loop: &ActiveEventLoop, _id: WindowId, event: WindowEvent) {
54+
let Some(state) = self.state.as_mut() else {
55+
eprintln!("Failed to retrieve app state.");
56+
event_loop.exit();
57+
return;
58+
};
59+
60+
match event {
61+
WindowEvent::CloseRequested
62+
| WindowEvent::KeyboardInput {
63+
event:
64+
KeyEvent {
65+
logical_key: Key::Named(NamedKey::Escape),
66+
state: ElementState::Pressed,
67+
..
68+
},
69+
..
70+
} => {
71+
event_loop.exit();
72+
}
73+
WindowEvent::RedrawRequested => {
74+
state.render(self.start.elapsed().as_secs_f32());
75+
state.get_window().request_redraw();
76+
}
77+
WindowEvent::Resized(size) => {
78+
state.resize(size);
79+
}
80+
_ => (),
81+
}
82+
}
83+
}
Lines changed: 7 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,19 @@
1-
use crate::wgpu_renderer::swapchain::MySwapchainManager;
2-
use anyhow::Context;
3-
use mygraphics_shaders::ShaderConstants;
4-
use std::sync::Arc;
5-
use winit::event::{Event, WindowEvent};
6-
use winit::event_loop::{ActiveEventLoop, ControlFlow, EventLoop};
1+
use crate::wgpu_renderer::app::App;
2+
use winit::event_loop::{ControlFlow, EventLoop};
73

4+
mod app;
85
mod render_pipeline;
96
mod renderer;
10-
mod swapchain;
7+
mod state;
118

129
pub fn main() -> anyhow::Result<()> {
1310
env_logger::init();
14-
pollster::block_on(main_inner())
15-
}
1611

17-
pub async fn main_inner() -> anyhow::Result<()> {
18-
// env_logger::init();
1912
let event_loop = EventLoop::new()?;
20-
// FIXME(eddyb) incomplete `winit` upgrade, follow the guides in:
21-
// https://github.com/rust-windowing/winit/releases/tag/v0.30.0
22-
#[allow(deprecated)]
23-
let window = Arc::new(
24-
event_loop.create_window(
25-
winit::window::Window::default_attributes()
26-
.with_title("Rust GPU - wgpu")
27-
.with_inner_size(winit::dpi::LogicalSize::new(
28-
f64::from(1280),
29-
f64::from(720),
30-
)),
31-
)?,
32-
);
33-
34-
let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor::from_env_or_default());
35-
let surface = instance.create_surface(window.clone())?;
36-
let adapter =
37-
wgpu::util::initialize_adapter_from_env_or_default(&instance, Some(&surface)).await?;
38-
39-
let required_features = wgpu::Features::PUSH_CONSTANTS;
40-
let required_limits = wgpu::Limits {
41-
max_push_constant_size: 128,
42-
..Default::default()
43-
};
44-
let (device, queue) = adapter
45-
.request_device(&wgpu::DeviceDescriptor {
46-
label: None,
47-
required_features,
48-
required_limits,
49-
experimental_features: wgpu::ExperimentalFeatures::disabled(),
50-
memory_hints: wgpu::MemoryHints::Performance,
51-
trace: Default::default(),
52-
})
53-
.await
54-
.context("Failed to create device")?;
55-
56-
let mut swapchain = MySwapchainManager::new(adapter.clone(), device.clone(), window, surface);
57-
let renderer = renderer::MyRenderer::new(device, queue, swapchain.format())?;
13+
event_loop.set_control_flow(ControlFlow::Poll);
5814

59-
let start = std::time::Instant::now();
60-
let mut event_handler =
61-
move |event: Event<_>, event_loop_window_target: &ActiveEventLoop| match event {
62-
Event::AboutToWait => swapchain.render(|render_target| {
63-
renderer.render(
64-
&ShaderConstants {
65-
time: start.elapsed().as_secs_f32(),
66-
width: render_target.texture().width(),
67-
height: render_target.texture().height(),
68-
},
69-
render_target,
70-
);
71-
}),
72-
Event::WindowEvent { event, .. } => {
73-
match event {
74-
WindowEvent::KeyboardInput {
75-
event:
76-
winit::event::KeyEvent {
77-
logical_key:
78-
winit::keyboard::Key::Named(winit::keyboard::NamedKey::Escape),
79-
state: winit::event::ElementState::Pressed,
80-
..
81-
},
82-
..
83-
}
84-
| WindowEvent::CloseRequested => event_loop_window_target.exit(),
85-
WindowEvent::Resized(_) => swapchain.should_recreate(),
86-
_ => {}
87-
}
88-
Ok(())
89-
}
90-
_ => {
91-
event_loop_window_target.set_control_flow(ControlFlow::Poll);
92-
Ok(())
93-
}
94-
};
15+
let mut app = App::new();
16+
event_loop.run_app(&mut app)?;
9517

96-
// FIXME(eddyb) incomplete `winit` upgrade, follow the guides in:
97-
// https://github.com/rust-windowing/winit/releases/tag/v0.30.0
98-
#[allow(deprecated)]
99-
event_loop.run(move |event, event_loop_window_target| {
100-
event_handler(event, event_loop_window_target).unwrap();
101-
})?;
10218
Ok(())
10319
}

generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ use crate::wgpu_renderer::renderer::{GlobalBindGroup, GlobalBindGroupLayout};
22
use mygraphics_shaders::ShaderConstants;
33
use wgpu::{
44
ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState,
5-
PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, PushConstantRange,
6-
RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderStages, TextureFormat, VertexState,
7-
include_spirv,
5+
PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, RenderPass,
6+
RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_spirv,
87
};
98

109
#[derive(Debug, Clone)]
@@ -22,11 +21,8 @@ impl MyRenderPipeline {
2221

2322
let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor {
2423
label: Some("MyRenderPipeline layout"),
25-
bind_group_layouts: &[&global_bind_group_layout.0],
26-
push_constant_ranges: &[PushConstantRange {
27-
stages: ShaderStages::VERTEX_FRAGMENT,
28-
range: 0..size_of::<ShaderConstants>() as u32,
29-
}],
24+
bind_group_layouts: &[Some(&global_bind_group_layout.0)],
25+
immediate_size: size_of::<ShaderConstants>() as u32,
3026
});
3127

3228
Ok(Self {
@@ -60,7 +56,7 @@ impl MyRenderPipeline {
6056
write_mask: ColorWrites::ALL,
6157
})],
6258
}),
63-
multiview: None,
59+
multiview_mask: None,
6460
cache: None,
6561
}),
6662
})

generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/renderer.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ impl MyRenderer {
5353
depth_stencil_attachment: None,
5454
timestamp_writes: None,
5555
occlusion_query_set: None,
56+
multiview_mask: None,
5657
});
5758
self.pipeline.draw(&mut rpass, &global_bind_group);
5859
drop(rpass);

0 commit comments

Comments
 (0)