use goldy::{Device, RenderPipeline, RenderPipelineDesc, ShaderModule, SurfaceExchange};
use std::time::{Duration, Instant};
use winit::event_loop::ActiveEventLoop;
#[allow(dead_code)]
pub fn render_pipeline_for_surface(
device: &Device,
shader: &ShaderModule,
surface: &SurfaceExchange,
desc: RenderPipelineDesc,
) -> anyhow::Result<RenderPipeline> {
Ok(RenderPipeline::new(
device,
shader,
shader,
&RenderPipelineDesc {
target_format: surface.format(),
..desc
},
)?)
}
pub fn run_limit_secs() -> Option<f64> {
for key in ["GOLDY_EXAMPLE_TIMEOUT", "EXAMPLE_TIMEOUT"] {
if let Ok(raw) = std::env::var(key) {
if let Ok(secs) = raw.parse::<f64>() {
if secs > 0.0 {
return Some(secs);
}
}
}
}
None
}
pub fn exit_if_timed_out(event_loop: &ActiveEventLoop, start: Instant) {
if let Some(limit) = run_limit_secs() {
if start.elapsed() >= Duration::from_secs_f64(limit) {
event_loop.exit();
}
}
}