@@ -95,28 +95,20 @@ pub unsafe fn create_surface(
95
95
surface_fn. create_android_surface ( & surface_desc, allocation_callbacks)
96
96
}
97
97
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 ) ;
101
101
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 ( ) ) ;
107
103
let surface_fn = metal_surface:: Instance :: new ( entry, instance) ;
108
104
surface_fn. create_metal_surface ( & surface_desc, allocation_callbacks)
109
105
}
110
106
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 ) ;
118
110
119
- let surface_desc = vk:: MetalSurfaceCreateInfoEXT :: default ( ) . layer ( & * layer) ;
111
+ let surface_desc = vk:: MetalSurfaceCreateInfoEXT :: default ( ) . layer ( layer. as_ptr ( ) ) ;
120
112
let surface_fn = metal_surface:: Instance :: new ( entry, instance) ;
121
113
surface_fn. create_metal_surface ( & surface_desc, allocation_callbacks)
122
114
}
0 commit comments