diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m
index 877653ea0078195d2fc3d7a49ab33ce46867010c..edbfab518e3cfe0a8982590746db1047a39774af 100644
--- a/dlls/winemac.drv/cocoa_window.m
+++ b/dlls/winemac.drv/cocoa_window.m
@@ -3796,6 +3796,18 @@ macdrv_metal_view macdrv_view_create_metal_view(macdrv_view v, macdrv_metal_devi
     return (macdrv_metal_view)metalView;
 }
 
+macdrv_metal_layer macdrv_view_get_metal_layer(macdrv_metal_view v)
+{
+    WineMetalView* view = (WineMetalView*)v;
+    __block CAMetalLayer* layer;
+
+    OnMainThread(^{
+        layer = (CAMetalLayer*)view.layer;
+    });
+
+    return (macdrv_metal_layer)layer;
+}
+
 void macdrv_view_release_metal_view(macdrv_metal_view v)
 {
     WineMetalView* view = (WineMetalView*)v;
diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h
index 676adb435bb3dc034cac485ea641a63c6955fc96..b02ad79f0259a480fd72f96cb653e27094128235 100644
--- a/dlls/winemac.drv/macdrv_cocoa.h
+++ b/dlls/winemac.drv/macdrv_cocoa.h
@@ -140,6 +140,7 @@
 #ifdef HAVE_METAL_METAL_H
 typedef struct macdrv_opaque_metal_device* macdrv_metal_device;
 typedef struct macdrv_opaque_metal_view* macdrv_metal_view;
+typedef struct macdrv_opaque_metal_layer* macdrv_metal_layer;
 #endif
 typedef struct macdrv_opaque_status_item* macdrv_status_item;
 struct macdrv_event;
@@ -587,6 +588,7 @@ extern void macdrv_set_window_color_key(macdrv_window w, CGFloat keyRed, CGFloat
 extern macdrv_metal_device macdrv_create_metal_device(void) DECLSPEC_HIDDEN;
 extern void macdrv_release_metal_device(macdrv_metal_device d) DECLSPEC_HIDDEN;
 extern macdrv_metal_view macdrv_view_create_metal_view(macdrv_view v, macdrv_metal_device d) DECLSPEC_HIDDEN;
+extern macdrv_metal_layer macdrv_view_get_metal_layer(macdrv_metal_view v) DECLSPEC_HIDDEN;
 extern void macdrv_view_release_metal_view(macdrv_metal_view v) DECLSPEC_HIDDEN;
 #endif
 extern int macdrv_get_view_backing_size(macdrv_view v, int backing_size[2]) DECLSPEC_HIDDEN;
diff --git a/dlls/winemac.drv/vulkan.c b/dlls/winemac.drv/vulkan.c
index cc7f22f67880b13cfb79cff38c37517496e82697..21e93827c156748b4dcb149384d712f88cf37e5a 100644
--- a/dlls/winemac.drv/vulkan.c
+++ b/dlls/winemac.drv/vulkan.c
@@ -282,7 +282,7 @@ static VkResult macdrv_vkCreateWin32SurfaceKHR(VkInstance instance,
     create_info_host.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
     create_info_host.pNext = NULL;
     create_info_host.flags = 0; /* reserved */
-    create_info_host.pView = mac_surface->view;
+    create_info_host.pView = macdrv_view_get_metal_layer(mac_surface->view);
 
     res = pvkCreateMacOSSurfaceMVK(instance, &create_info_host, NULL /* allocator */, &mac_surface->surface);
     if (res != VK_SUCCESS)