@@ -23,11 +23,11 @@ use web_sys::HtmlCanvasElement;
2323#[ cfg( target_arch = "wasm32" ) ]
2424use winit:: platform:: web:: WindowBuilderExtWebSys ;
2525
26- pub fn main ( ) {
26+ pub fn main ( ) -> Result < ( ) , Box < dyn std :: error :: Error > > {
2727 #[ cfg( target_arch = "wasm32" ) ]
2828 let canvas_element = {
29- console_log:: init_with_level ( log:: Level :: Debug )
30- . expect ( "could not initialize logger" ) ;
29+ console_log:: init_with_level ( log:: Level :: Debug ) ? ;
30+
3131 std:: panic:: set_hook ( Box :: new ( console_error_panic_hook:: hook) ) ;
3232
3333 web_sys:: window ( )
@@ -45,11 +45,10 @@ pub fn main() {
4545 #[ cfg( target_arch = "wasm32" ) ]
4646 let window = winit:: window:: WindowBuilder :: new ( )
4747 . with_canvas ( Some ( canvas_element) )
48- . build ( & event_loop)
49- . expect ( "Failed to build winit window" ) ;
48+ . build ( & event_loop) ?;
5049
5150 #[ cfg( not( target_arch = "wasm32" ) ) ]
52- let window = winit:: window:: Window :: new ( & event_loop) . unwrap ( ) ;
51+ let window = winit:: window:: Window :: new ( & event_loop) ? ;
5352
5453 let physical_size = window. inner_size ( ) ;
5554 let mut viewport = Viewport :: with_physical_size (
@@ -61,7 +60,6 @@ pub fn main() {
6160 let mut clipboard = Clipboard :: connect ( & window) ;
6261
6362 // Initialize wgpu
64-
6563 #[ cfg( target_arch = "wasm32" ) ]
6664 let default_backend = wgpu:: Backends :: GL ;
6765 #[ cfg( not( target_arch = "wasm32" ) ) ]
@@ -70,8 +68,12 @@ pub fn main() {
7068 let backend =
7169 wgpu:: util:: backend_bits_from_env ( ) . unwrap_or ( default_backend) ;
7270
73- let instance = wgpu:: Instance :: new ( backend) ;
74- let surface = unsafe { instance. create_surface ( & window) } ;
71+ let instance = wgpu:: Instance :: new ( wgpu:: InstanceDescriptor {
72+ backends : backend,
73+ ..Default :: default ( )
74+ } ) ;
75+
76+ let surface = unsafe { instance. create_surface ( & window) } ?;
7577
7678 let ( format, ( device, queue) ) = futures:: executor:: block_on ( async {
7779 let adapter = wgpu:: util:: initialize_adapter_from_env_or_default (
@@ -91,11 +93,16 @@ pub fn main() {
9193 #[ cfg( not( target_arch = "wasm32" ) ) ]
9294 let needed_limits = wgpu:: Limits :: default ( ) ;
9395
96+ let capabilities = surface. get_capabilities ( & adapter) ;
97+
9498 (
95- surface
96- . get_supported_formats ( & adapter)
97- . first ( )
99+ capabilities
100+ . formats
101+ . iter ( )
102+ . filter ( |format| format. describe ( ) . srgb )
98103 . copied ( )
104+ . next ( )
105+ . or_else ( || capabilities. formats . first ( ) . copied ( ) )
99106 . expect ( "Get preferred format" ) ,
100107 adapter
101108 . request_device (
@@ -120,6 +127,7 @@ pub fn main() {
120127 height : physical_size. height ,
121128 present_mode : wgpu:: PresentMode :: AutoVsync ,
122129 alpha_mode : wgpu:: CompositeAlphaMode :: Auto ,
130+ view_formats : vec ! [ ] ,
123131 } ,
124132 ) ;
125133
@@ -214,7 +222,8 @@ pub fn main() {
214222 width : size. width ,
215223 height : size. height ,
216224 present_mode : wgpu:: PresentMode :: AutoVsync ,
217- alpha_mode : wgpu:: CompositeAlphaMode :: Auto
225+ alpha_mode : wgpu:: CompositeAlphaMode :: Auto ,
226+ view_formats : vec ! [ ]
218227 } ,
219228 ) ;
220229
0 commit comments