@@ -95,28 +95,20 @@ pub unsafe fn create_surface(
9595 surface_fn. create_android_surface ( & surface_desc, allocation_callbacks)
9696 }
9797
98- #[ cfg( target_os = "macos " ) ]
99- ( RawDisplayHandle :: AppKit ( _) , RawWindowHandle :: AppKit ( window ) ) => {
100- use raw_window_metal:: { appkit , Layer } ;
98+ #[ cfg( target_vendor = "apple " ) ]
99+ ( RawDisplayHandle :: AppKit ( _) , RawWindowHandle :: AppKit ( handle ) ) => {
100+ let layer = raw_window_metal:: Layer :: from_ns_view ( handle . ns_view ) ;
101101
102- let layer = match appkit:: metal_layer_from_handle ( window) {
103- Layer :: Existing ( layer) | Layer :: Allocated ( layer) => layer. cast ( ) ,
104- } ;
105-
106- let surface_desc = vk:: MetalSurfaceCreateInfoEXT :: default ( ) . layer ( & * layer) ;
102+ let surface_desc = vk:: MetalSurfaceCreateInfoEXT :: default ( ) . layer ( layer. as_ptr ( ) ) ;
107103 let surface_fn = metal_surface:: Instance :: new ( entry, instance) ;
108104 surface_fn. create_metal_surface ( & surface_desc, allocation_callbacks)
109105 }
110106
111- #[ cfg( target_os = "ios" ) ]
112- ( RawDisplayHandle :: UiKit ( _) , RawWindowHandle :: UiKit ( window) ) => {
113- use raw_window_metal:: { uikit, Layer } ;
114-
115- let layer = match uikit:: metal_layer_from_handle ( window) {
116- Layer :: Existing ( layer) | Layer :: Allocated ( layer) => layer. cast ( ) ,
117- } ;
107+ #[ cfg( target_vendor = "apple" ) ]
108+ ( RawDisplayHandle :: UiKit ( _) , RawWindowHandle :: UiKit ( handle) ) => {
109+ let layer = raw_window_metal:: Layer :: from_ui_view ( handle. ui_view ) ;
118110
119- let surface_desc = vk:: MetalSurfaceCreateInfoEXT :: default ( ) . layer ( & * layer) ;
111+ let surface_desc = vk:: MetalSurfaceCreateInfoEXT :: default ( ) . layer ( layer. as_ptr ( ) ) ;
120112 let surface_fn = metal_surface:: Instance :: new ( entry, instance) ;
121113 surface_fn. create_metal_surface ( & surface_desc, allocation_callbacks)
122114 }
0 commit comments