11// Copyright 2022 the Vello Authors
22// SPDX-License-Identifier: Apache-2.0 OR MIT
33
4- use instant:: { Duration , Instant } ;
4+ use instant:: Instant ;
55use std:: collections:: HashSet ;
66use std:: num:: NonZeroUsize ;
77use std:: sync:: Arc ;
@@ -12,7 +12,7 @@ use scenes::{RobotoText, SceneParams, SceneSet};
1212use vello:: kurbo:: { Affine , Vec2 } ;
1313use vello:: peniko:: Color ;
1414use vello:: util:: { RenderContext , RenderSurface } ;
15- use vello:: { AaConfig , BumpAllocators , Renderer , RendererOptions , Scene } ;
15+ use vello:: { wgpu , AaConfig , BumpAllocators , Renderer , RendererOptions , Scene } ;
1616
1717use winit:: event_loop:: { EventLoop , EventLoopBuilder } ;
1818use winit:: window:: Window ;
@@ -83,7 +83,7 @@ fn run(
8383 let mut render_state = {
8484 renderers. resize_with ( render_cx. devices . len ( ) , || None ) ;
8585 let id = render_state. surface . dev_id ;
86- let mut renderer = Renderer :: new (
86+ let renderer = Renderer :: new (
8787 & render_cx. devices [ id] . device ,
8888 RendererOptions {
8989 surface_format : Some ( render_state. surface . format ) ,
@@ -95,14 +95,6 @@ fn run(
9595 } ,
9696 )
9797 . expect ( "Could create renderer" ) ;
98- renderer
99- . profiler
100- . change_settings ( wgpu_profiler:: GpuProfilerSettings {
101- enable_timer_queries : false ,
102- enable_debug_groups : false ,
103- ..Default :: default ( )
104- } )
105- . expect ( "Not setting max_num_pending_frames" ) ;
10698 renderers[ id] = Some ( renderer) ;
10799 Some ( render_state)
108100 } ;
@@ -145,9 +137,7 @@ fn run(
145137 if let Some ( set_scene) = args. scene {
146138 scene_ix = set_scene;
147139 }
148- let mut profile_stored = None ;
149140 let mut prev_scene_ix = scene_ix - 1 ;
150- let mut profile_taken = Instant :: now ( ) ;
151141 let mut modifiers = ModifiersState :: default ( ) ;
152142 event_loop
153143 . run ( move |event, event_loop| match event {
@@ -211,32 +201,6 @@ fn run(
211201 aa_config_ix. saturating_add ( 1 )
212202 } ;
213203 }
214- "p" => {
215- if let Some ( renderer) = & renderers[ render_state. surface . dev_id ]
216- {
217- if let Some ( profile_result) = & renderer
218- . profile_result
219- . as_ref ( )
220- . or ( profile_stored. as_ref ( ) )
221- {
222- // There can be empty results if the required features aren't supported
223- if !profile_result. is_empty ( ) {
224- let path = std:: path:: Path :: new ( "trace.json" ) ;
225- match wgpu_profiler:: chrometrace:: write_chrometrace (
226- path,
227- profile_result,
228- ) {
229- Ok ( ( ) ) => {
230- println ! ( "Wrote trace to path {path:?}" ) ;
231- }
232- Err ( e) => {
233- eprintln ! ( "Failed to write trace {e}" )
234- }
235- }
236- }
237- }
238- }
239- }
240204 "v" => {
241205 vsync_on = !vsync_on;
242206 render_cx. set_present_mode (
@@ -409,26 +373,6 @@ fn run(
409373 vsync_on,
410374 antialiasing_method,
411375 ) ;
412- if let Some ( profiling_result) = renderers[ render_state. surface . dev_id ]
413- . as_mut ( )
414- . and_then ( |it| it. profile_result . take ( ) )
415- {
416- if profile_stored. is_none ( )
417- || profile_taken. elapsed ( ) > Duration :: from_secs ( 1 )
418- {
419- profile_stored = Some ( profiling_result) ;
420- profile_taken = Instant :: now ( ) ;
421- }
422- }
423- if let Some ( profiling_result) = profile_stored. as_ref ( ) {
424- stats:: draw_gpu_profiling (
425- & mut scene,
426- scene_params. text ,
427- width as f64 ,
428- height as f64 ,
429- profiling_result,
430- ) ;
431- }
432376 }
433377 let surface_texture = render_state
434378 . surface
@@ -534,7 +478,12 @@ fn run(
534478 . take ( )
535479 . unwrap_or_else ( || create_window ( event_loop) ) ;
536480 let size = window. inner_size ( ) ;
537- let surface_future = render_cx. create_surface ( window. clone ( ) , size. width , size. height , wgpu:: PresentMode :: AutoVsync ) ;
481+ let surface_future = render_cx. create_surface (
482+ window. clone ( ) ,
483+ size. width ,
484+ size. height ,
485+ wgpu:: PresentMode :: AutoVsync ,
486+ ) ;
538487 // We need to block here, in case a Suspended event appeared
539488 let surface =
540489 pollster:: block_on ( surface_future) . expect ( "Error creating surface" ) ;
@@ -550,7 +499,7 @@ fn run(
550499 surface_format : Some ( render_state. surface . format ) ,
551500 use_cpu,
552501 antialiasing_support : vello:: AaSupport :: all ( ) ,
553- num_init_threads : NonZeroUsize :: new ( args. num_init_threads )
502+ num_init_threads : NonZeroUsize :: new ( args. num_init_threads ) ,
554503 } ,
555504 )
556505 . expect ( "Could create renderer" ) ;
@@ -617,7 +566,7 @@ pub fn main() -> Result<()> {
617566 if let Some ( scenes) = scenes {
618567 let event_loop = EventLoopBuilder :: < UserEvent > :: with_user_event ( ) . build ( ) ?;
619568 #[ allow( unused_mut) ]
620- let mut render_cx = RenderContext :: new ( ) . unwrap ( ) ;
569+ let mut render_cx = RenderContext :: new ( ) ;
621570 #[ cfg( not( target_arch = "wasm32" ) ) ]
622571 {
623572 #[ cfg( not( target_os = "android" ) ) ]
@@ -701,7 +650,7 @@ fn android_main(app: AndroidApp) {
701650 . select_scene_set ( || Args :: command ( ) )
702651 . unwrap ( )
703652 . unwrap ( ) ;
704- let render_cx = RenderContext :: new ( ) . unwrap ( ) ;
653+ let render_cx = RenderContext :: new ( ) ;
705654
706655 run ( event_loop, args, scenes, render_cx) ;
707656}
0 commit comments